17 Consejos De Seguridad Para Proteger Tu Raspberry Pi


La Raspberry Pi viene con poca seguridad por defecto. Si la usas en casa o en una red pequeña, no es un gran problema, pero si abres puertos en Internet, la podrás usar como punto de acceso Wi-Fi y si la instalas en una red más grande, necesitaras tomar medidas de seguridad para proteger tu Raspberry Pi. En este artículo, te mostraré todo lo que hago con mis servidores Linux en mi trabajo para mantenerlos seguros.

Mejorar la seguridad en una Raspberry Pi es similar a hacerlo en cualquier otro dispositivo Linux. Hay pasos lógicos, como usar una contraseña fuerte. Y también hay pasos más complejos como la detección de ataques o el uso del cifrado.

Voy a compartir 17 consejos de seguridad que deberías seguir para conseguir una mayor seguridad para tu Raspberry Pi (y que en su mayoría se aplican a todos los sistemas Linux). Si solamente estás usando tu Raspberry Pi en casa, intenta aplicar los primeros consejos como mínimo. Sigue todos los consejos incluidos para una configuración más crítica, con acceso a Internet o incluso en una red más grande.

Introducción

¿Debo seguir todos estos consejos?

Como se mencionó al principio del artículo, si tu Raspberry Pi está en casa, con unos pocos servicios y sin puertos abiertos en tu router de Internet, ya estás bastante seguro.

El nivel de riesgo de tu Raspberry Pi depende de cómo se exponga al mundo “real”. No tomará las mismas medidas para una videoconsola Retropie en casa, que para una DMZ en tu red abierta en Internet.
Pero los 17 consejos son buenos para saberlo, y fáciles de aplicar, así que si compartes algo en Internet, tómate 30 minutos para leer el artículo y aplicar lo que aprendes.

Cómo escribí este artículo

He seleccionado 17 consejos principales de seguridad, que se aplican a todos los que alojan una Raspberry Pi y comparten servicios en ella. He sido administrador de sistemas durante 20 años, y estos son los consejos que aplico a cualquier instalación de un nuevo servidor.

Están en orden de menor a mayor de riesgo. Si crees que estás muy expuesto, sigue todos los pasos y estarás a salvo.
Si tu nivel de riesgo no es muy elevado, solamente tendrás que seguir los primeros pasos.

¡Hola!
Inscríbete para recibir mis últimos tutoriales cada semana.

17 consejos para asegurar tu Raspberry Pi

1 – Mantén el sistema actualizado

Esto puede ser obvio, pero es importante.
Con las actualizaciones del repositorio predeterminado de Raspberry Pi OS, no solamente obtendrás las últimas características, sino principalmente las correcciones de seguridad para todas tus aplicaciones instaladas.

Intenta actualizar tu Raspberry Pi regularmente con:
sudo apt update
sudo apt upgrade

También puedes automatizar este proceso con el paquete unattended-upgrades.
Este procedimiento permite instalar las correcciones de seguridad automáticamente cada día:

  • Instala el paquete unattended-upgrades:
    sudo apt install unattended-upgrades
  • Abre el archivo de configuración:
    sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
  • Cambia lo que quieras en este archivo.
    Por defecto, sólo descargará las actualizaciones de seguridad, pero puedes cambiar esto si quieres
  • Puedes instalar todas las actualizaciones de Debian, o incluso de otros repositorios.
    Recomiendo al menos descomentar esta línea:
    //Unattended-Upgrade::Mail "";
    Y elije un usuario local para recibir las notificaciones. Por ejemplo:
    Unattended-Upgrade::Mail "root";
    Sólo puedes utilizar una dirección de correo electrónico normal si tiene un servidor de correo instalado (en inglés).
  • Guardar y sal (CTRL+O, CTRL+X).
  • A continuación, tenemos que establecer la actualización periódica.
    Abre este archivo:
    sudo nano /etc/apt/apt.conf.d/02periodic
  • Pega estas líneas (el archivo debe estar vacío, si no es así, cambia los valores):
    APT::Periodic::Enable "1";
    APT::Periodic::Update-Package-Lists "1";
    APT::Periodic::Download-Upgradeable-Packages "1";
    APT::Periodic::Unattended-Upgrade "1";
    APT::Periodic::AutocleanInterval "1";
    APT::Periodic::Verbose "2";

    Esto permitirá una actualización automática cada día.
    Le pedimos a apt que haga: actualización, descarga de actualizaciones, instalación de actualizaciones y limpieza automática todos los días.
    La última línea es el nivel de verbosidad que obtendrá en el /var/log/unattended-upgrades y el correo electrónico (1= bajo, 3=máximo).
  • Guardar y salir (CTRL+O, CTRL+X).
  • Esto debería estar bien, puedes depurar tu configuración con este comando:
    sudo unattended-upgrades -d

No olvides comprobar el archivo de registro y/o los correos electrónicos recibidos para asegurarte de que todo funciona como se espera.

2 – No utilices el inicio de sesión automático ni contraseñas vacías

Las contraseñas son una parte clave de la seguridad del sistema.

Primero: asegúrate de que todos los accesos críticos pidan una contraseña.

No utilices el inicio de sesión automático y asegúrate de añadir un paso de inicio de sesión para cada aplicación a la que puedas acceder directamente.
No voy a enumerar todas las aplicaciones, pero por ejemplo, si tienes un servidor web, asegúrate de que los datos personales o las páginas de administración no sean accesibles sin antes introducir una contraseña.

Asegúrate de que nadie utiliza una contraseña vacía en la Raspberry Pi.
Si tienes varias cuentas, es fácil comprobar todos los accesos.
Si tienes muchas cuentas de usuario, estos comandos podrían ayudarte:

  • Búsqueda de contraseñas vacías:
    sudo awk -F: '($2 == "") {print}' /etc/shadow
    Esto mostrará sólo las cuentas con una contraseña vacía.
  • Bloquea las cuentas inseguras:
    passwd -l <username>

3 – Cambiar la contraseña por defecto de pi

Un error común es dejar la contraseña por defecto en el usuario pi (raspberry).
Cualquiera que haya utilizado una Raspberry Pi conocerá esta contraseña.
Mucha gente escanea los puertos SSH e intenta entrar con la contraseña pi/raspberry.

Cambiar la contraseña por defecto debería ser lo primero que se haga en una nueva instalación.
Hacer esto es fácil, inicia sesión como pi e introduzca este comando:
passwd

Intenta utilizar una frase con más de 15 caracteres para estar a salvo de los hackeps por fuerza bruta, y para recordarla fácilmente (ej: iloveraspberrytips es una buena contraseña fácil de recordar). Si necesitas algunas ideas, este sitio web ofrece un generador de contraseñas fáciles de recordar (sí, no es mío, pero me encantan ese tipo de contraseñas).

4 – Desactivar el usuario pi

Como ya he dicho, el usuario pi es uno de los inicios de sesión más hacekados junto con root.
Los hackers tienen una lista de inicios de sesión comúnmente utilizados y principalmente intentan estos.

Si es posible, crea un nuevo usuario y desactiva el usuario pi para evitar este tipo de ataques:

  • Crear un nuevo usuario:
    sudo adduser <username>
  • Dale el privilegio sudo si es necesario:
    sudo adduser <username> sudo
    Esto añadirá tu nuevo usuario en el grupo sudo.
  • Comprueba que todo funciona correctamente (ssh access, sudo, …).
  • Copia los archivos del usuario pi al nuevo usuario si es necesario:
    sudo cp /home/pi/Documents/* /home/<username>/Documents/ ...
  • Elimina el usuario pi:
    sudo deluser -remove-home pi
    Si lo prefieres, puedes empezar por bloquear la cuenta (como se ha dicho anteriormente), y eliminarla solamente después de unas semanas, cuando estés seguro de que todo funciona bien.

Artículos relacionados:

5 – Dejar de prestar servicios innecesarios

En Raspberry Pi, probamos un montón de proyectos para todo, y podría ser un mal hábito para la seguridad. Digamos que instalaste PHPMyAdmin hace 3 meses para probar algo, pero ya no lo usas.
Esto podría crear una brecha para un atacante que le permita entrar en tu sistema.

Intenta detener o desinstalar los servicios y aplicaciones innecesarios:

  • Lista de servicios en funcionamiento:
    sudo service --status-all
  • Para detener un servicio utiliza:
    sudo service <service-name> stop
    Si se inicia automáticamente al arrancar, inténtalo:
    sudo update-rc.d <service-name> remove
  • O para desinstalarlo, debería ser algo así:
    sudo apt remove <service-name>

6 – Hacer que sudo requiera una contraseña

Como deberías saber, sudo no siempre pide una contraseña.
La mayoría de las veces no es necesario volver a escribir la contraseña.
Está bien para la productividad, pero por razones de seguridad, no es una buena idea.

Si alguien logra obtener acceso de terminal al usuario principal de Raspberry Pi, los privilegios de super-usuario serán accesibles sin una contraseña.
Te recomiendo que pidas una contraseña cuando uses sudo:

  • Edita este archivo:
    sudo nano /etc/sudoers.d/010_pi-nopasswd
  • Encuentra esta línea:
    pi ALL=(ALL) NOPASSWD: ALL
    O cualquier otro usuario si ha seguido los pasos anteriores.
  • Sustitúyelo por:
    pi ALL=(ALL) PASSWD: ALL
  • Haz lo mismo para cada usuario con acceso sudo.
  • Guardar y salir (CTRL+O, CTRL+X).

7 – SSH: Impedir el inicio de sesión de root

Como dije anteriormente, los usuarios root y pi suelen ser el principal objetivo de los ataques de fuerza bruta. Esto es especialmente cierto cuando SSH está habilitado.

Por lo tanto, debes asegurarte de que root no tenga acceso directo a SSH.
Si necesitas root, inicia sesión con tu usuario normal (no pi) y luego eleva privilegios con sudo (como se explica en este artículo).

Por defecto, el acceso root está desactivado.
Puedes comprobarlo:

  • Abre el archivo de configuración del servidor SSH:
    sudo nano /etc/ssh/sshd_config
  • Encuentra esta línea:
    #PermitRootLogin prohibit-password
  • Si tiene algo más, comente esta línea (añadiendo # al principio).
  • Guardar y salir (CTRL+O, CTRL+X).
  • Reinicia el servidor SSH si ha cambiado algo en el archivo de configuración:
    sudo service ssh restart

¿No tienes idea de lo que es SSH? Empieza por leer mi guía completa al respecto (en inglés).

8 – SSH: Cambiar el puerto por defecto

El puerto SSH por defecto es el 22.
Así que, básicamente, los atacantes crearán bots para hacer intentos de inicio de sesión en este puerto.
Para evitarlo, puedes cambiar el puerto por defecto y establecer otro:

  • Edite el archivo de configuración del servidor SSH:
    sudo nano /etc/ssh/sshd_config
  • Encuentra esta línea:
    #Port 22
  • Sustituye el puerto por el que desee utilizar, y asegúrese de descomentar la línea:
    Port 1111
    Evita los conflictos de puertos utilizando uno libre, lista completa aquí:
    Lista de puertos conocidos en Wikipedia.
  • Guardar y salir (CTRL+O, CTRL+X).
  • Reinicia tu servidor ssh:
    sudo service ssh restart

No olvides ajustar las reglas del cortafuegos si lo tienes.
Haz una nueva prueba de conexión antes de cerrar la actual, ya que podría ayudarte si te equivocas.
Tienes que actualizar el puerto utilizado en la configuración de la conexión, con Putty está justo después de la dirección IP:

9 – SSH: Utilizar claves SSH en lugar de contraseñas

Con los pasos anteriores, ya bloqueamos la mayoría de los script kiddies con ataques amplios a cualquier dirección IP que responda.
Ahora pasamos a cosas que podrían protegerte incluso si te enfrentas a un hacker avanzado que está especialmente interesado en acceder a tu sistema (y no a cualquier otro).

El uso de una contraseña fuerte retrasará el ataque, pero siempre es posible que te hackeen, incluso si se tarda semanas en conseguir la contraseña correcta. Lo que puedes hacer para bloquear esto, es utilizar claves SSH en lugar de contraseñas para tus conexiones SSH. Un atacante puede adivinar una contraseña de 15 caracteres, pero no una clave SSH.

La idea principal es generar una clave en tu ordenador, y luego añadirla a la Raspberry Pi para permitir una conexión desde tu ordenador (con o sin contraseña).
Te doy el procedimiento paso a paso al final de este artículo.

Una vez que esto está funcionando, sólo puede desactivar las conexiones SSH con una contraseña.
Cambia esta línea en el archivo de configuración SSH que vimos antes:
PasswordAuthentication no

10 – Instalar Fail2ban

Fail2ban es una herramienta que detecta los ataques de fuerza bruta y los bloquea.
En los pasos anteriores, dije que un atacante podría tratar de encontrar tu contraseña durante meses, y tal vez pueda tener éxito.
El objetivo principal de Fail2ban es evitar esto.

Fail2ban bloqueará la IP de los atacantes si se intentan conectar más de X veces.
Puedes configurar el número de intentos antes de un baneo y la duración del mismo.
Sigue estos pasos para instalar Fail2ban en tu Raspberry Pi:

  • Instala el paquete:
    sudo apt install fail2ban
  • Por defecto, fail2ban banea al atacante 10 minutos después de 5 fallos.
    Creo que está bien para empezar, pero si quieres cambiar esto, toda la configuración está en la carpeta /etc/fail2ban.
    Principalmente en /etc/fail2ban/jail.conf:
    sudo nano /etc/fail2ban/jail.conf
  • Reinicia el servicio si cambia algo:
    sudo service fail2ban restart
Fail2ban viene con un montón de aplicaciones compatibles con reglas básicas que puedes utilizar.

Esto debería ralentizar al atacante. 5 intentos cada 10 minutos son 720 intentos al día.
Si tu contraseña es algo más difícil que “contraseña” o “123456789”, el hacker debería tardar mucho tiempo en encontrarla.

Aquí hay un enlace a mi tutorial sobre cómo utilizar Fail2ban en tu Raspberry Pi (en inglés). No dudes en consultarlo si necesitas más detalles o quieres profundizar en la configuración de este útil servicio.

11 – Instalar un cortafuegos

Por si no lo sabes, un firewall te permite bloquear todos los puertos excepto los que necesitas y filtrar el acceso por IP. Por ejemplo, puedes bloquear todo, y unicamente permitir el acceso SSH desde la dirección IP de tu ordenador.

Como se explica en este artículo en profundidad, un antivirus no es obligatorio en Raspberry Pi (en inglés), y en Linux en general, pero un firewall es una buena práctica si alojas algunos servicios críticos en él.

Estoy acostumbrado a instalar iptables para mis reglas de firewall, pero tal vez para un principiante, no es la ruta más fácil de tomar. Así que, te explicaré cómo instalar ufw (Uncomplicated FireWall), que es más sencillo, y luego permitir sólo lo que necesita.

Es una configuración básica con acceso HTTP para cualquiera, y SSH sólo para ti, pero tienes que adaptar esto a lo que quieres hacer.

  • Instala el paquete del cortafuegos:
    sudo apt install ufw
  • Permite el acceso a Apache a cualquiera:
    sudo ufw allow 80
    sudo ufw allow 443
  • Permite el acceso SSH solamente para tu dirección IP(no es obligatorio, solo para dar otro ejemplo):
    sudo ufw allow from 192.168.1.100 port 22
    No olvides reemplazar los valores con tus propios ajustes.
    En una red local, puedes obtener tu dirección IP con ipconfig (Windows) o ifconfig (Linux/Mac).
    Si cambias el puerto SSH en el paso anterior (por 1111 o cualquier otro), reemplázalo aquí.
  • Activa el cortafuegos:
    sudo ufw enable
    Ten cuidado, esto habilitará el firewall ahora, y también en el arranque.
    Si pierdes el acceso a tu dispositivo, no podrás solucionarlo, ni siquiera tras un reinicio.
    Tendrás que cambiar la configuración directamente en la Raspberry Pi (físicamente).
  • Comprueba que todo está bien.

Para mostrar tus reglas actuales una vez que ufw está activado, utiliza este comando:
sudo ufw status verbose

Para configuraciones más complejas, consulta la página página de manual.
Mi otro tutorial sobre cómo construir un router inalámbrico con funciones de firewall también puede ayudarte.

12 – Haz una copia de seguridad del sistema

Una de las peores consecuencias de un ataque es la pérdida de datos.
Si haces una copia de seguridad de tus archivos correctamente y con regularidad, estarás a salvo incluso si el hacker destruye tu tarjeta SD.

Ya escribí un artículo sobre cómo hacer una copia de seguridad y restaurar tu Raspberry Pi, así que no lo repetiré aquí.
Pero la segunda parte es crítica, asegúrate de que puedes leer tu copia de seguridad y de que todos tus archivos importantes están dentro; de lo contrario, será inútil. Probar los archivos de la copia de seguridad regularmente es una buena práctica.

13 – Encripta tus conexiones

Este es un tema muy amplio, y no voy a dar muchos detalles al respecto, pero te daré un ejemplo.

Con los protocolos básicos, los datos fluyen en claro en la red. Es decir, si escribes tu contraseña, un hacker podría obtenerla mientras escucha la red. Por suerte, suele haber otros protocolos que funcionan de forma más segura encriptando todos los datos.

Lo primero es dejar de usar protocolos inseguros (FTP, Telnet o HTTP, por ejemplo). Y luego intentar sustituirlos por otros más seguros (SFTP, SSH, HTTPS).

El procedimiento depende de los protocolos que estés utilizando con tu Raspberry Pi. Tomemos el ejemplo de HTTP.

HTTP está bien si sólo lo usas para contenido estático, nunca escribes una contraseña y no tienes datos sensibles en tu servidor. Pero tómate el tiempo de cambiar tu aplicación para usar el protocolo HTTPS de todas formas, será más seguro.
Es bastante sencillo de hacer, sólo necesitas un certificado y cambiar algunas líneas en la configuración de Apache (en inglés) o Nginx (en inglés). Encontrarás muchos tutoriales útiles en Internet.

Y la mayoría de las veces es fácil. Puedes cambiar directamente de FTP a SFTP como tu Raspberry Pi ya tiene SSH habilitado. Lo mismo para los usuarios de Telnet, ¿por qué necesitarias Telnet cuando SSH está disponible?

A continuación, busca todos los protocolos que está utilizando (especialmente con datos sensibles) y lo que puedes hacer para mejorar la seguridad general del sistema.

14 – Utilice una VPN

Una opción más radical es acceder a tu Raspberry Pi a través de una VPN.
VPN significa Red Privada Virtual y le permite acceder remotamente a todos los servicios de su Raspberry Pi como si estuviera en la red local.
Todos los flujos entre usted y la Raspberry Pi serán encriptados por un protocolo fuerte.

Esta es una buena opción para evitar que se abran muchos puertos en Internet sin seguridad.
Tengo un artículo sobre cómo utilizar una Raspberry Pi como servidor OpenVPN (en inglés), y puedes encontrar fácilmente más ayuda en Internet. Recientemente, he cambiado a WireGuard, pero es la misma idea (puedes encontrar más sobre WireGuard aquí, en inglés).

También puedes instalar NordVPN (en inglés) o cualquier otro proveedor (mis mejores proveedores de VPN para Raspberry Pi aquí, en inglés) si quieres utilizar un túnel seguro para acceder a Internet desde tu Raspberry Pi.

15 – Proteger el acceso físico

La última protección es obvia, pero a menudo se ignora cuando se habla de seguridad.
Puedes configurar cualquier protocolo de seguridad, firewall y VPN desde todos los pasos anteriores.
Si tu Raspberry Pi es físicamente accesible por cualquiera, es inútil.

Asegúrate de que la Raspberry Pi no pueda ser robada fácilmente (o la tarjeta SD), y de que nadie pueda venir a enchufar un teclado y una pantalla y ser registrado automáticamente.
Los pasos a implementar para protegerte de ese tipo de ataque dependerán de tu sistema.
Tal vez necesites un cierre de sesión automático después de X minutos, una contraseña en el menú de arranque de grub, o cifrar los datos de la tarjeta SD.

Piénsalo, ¿qué es lo peor que podría pasar si alguien consigue acceder físicamente a tu Raspberry Pi? Entonces busca soluciones para evitar que esto ocurra.

16 – Comprueba tus registros con regularidad

Los dos últimos puntos de esta lista no son realmente protecciones, sino más bien un compromiso a seguir.
La mayoría de las veces, los ataques son visibles en los archivos de registro.
Por lo tanto, trate de leerlos regularmente para detectar cualquier actividad sospechosa.

Todos los registros están en la carpeta /var/log, pero los principales archivos de registro que hay que comprobar son:

  • /var/log/syslog: archivo de registro principal para todos los servicios.
  • /var/log/message: archivo de registro de todo el sistema.
  • /var/log/auth.log: todos los intentos de autenticación se registran aquí.
  • /var/log/mail.log: si tiene un servidor de correo, aquí encontrará un rastro de los correos electrónicos enviados recientemente.
  • Cualquier archivo de registro de aplicaciones críticas, por ejemplo /var/log/apache2/error.log o /var/log/mysql/error.log

Existen algunas soluciones para simplificar este trabajo.
Por ejemplo, puede configurar syslog para que envíe los registros a un servidor maestro, con una interfaz para leerlos, filtrarlos, etc.
También puede utilizar logwatch para obtener informes diarios sobre el funcionamiento del sistema.

17 – Leer la noticia

Para mantener un buen nivel de seguridad en tus proyectos, intenta mantenerte constantemente actualizado.
Veo nuevas vulnerabilidades en un montón de paquetes de software importantes todos los días, y podría tomar semanas o más para tener la solución disponible en el repositorio de Raspberry Pi OS.

Si lee regularmente las noticias sobre seguridad, podrá actuar con mayor rapidez para mantenerse protegido.
Aquí hay algunos buenos sitios web para seguir:

También puedes utilizar un escáner de vulnerabilidades como Nessus para encontrar solamente las vulnerabilidades que aplican a tu sistema en particular.
Pero si tu proyecto requiere un alto nivel de seguridad, probablemente no deberías quedarte en una Raspberry Pil, sino usar algo más complejo como un firewall hardware.

Conclusión

Eso es todo, ahora conoces los principales pasos de seguridad para proteger tu Raspberry Pi.
Sé que estos son sólo los primeros pasos, y que hay otros importantes también, pero estamos hablando de Raspberry Pi, no de servidores de alta disponibilidad con toneladas de datos confidenciales.
Creo que tendrás una buena protección si pones en práctica las 17 ideas de este artículo.

Patrick FROMAGET

Hola, soy Patrick. Soy administrador de sistemas Linux, y me apasiona la Raspberry Pi y todos los proyectos sobre este tema. He creado este sitio para compartir con ustedes lo que he aprendido al respecto.

Últimos artículos