¿Qué se debe hacer para asegurar Raspberry Pi?

82

Tener decenas de miles de Raspberry Pi conectadas a Internet eventualmente captará el interés de algunas personas que desearían hacer cosas desagradables a las pequeñas computadoras, especialmente cuando muchas personas usan su Pi para hacer servidores de red. Linux es un sistema operativo sólido listo para usar, pero aparte de solo cambiar la contraseña, ¿qué se debe hacer para "endurecer" la Raspberry Pi si tengo la intención de alojar servicios orientados a Internet en el dispositivo?

Solo para apoyar mi broma de "decenas de miles", Eben Upton ha dicho que "la Raspberry Pi ha vendido más de 200,000 de sus módulos de computadora básicos y actualmente está enviando 4,000 unidades por día" . Probablemente sea seguro asumir que decenas de miles de esos 200,000 se han conectado a Internet. Es menos seguro suponer que decenas de miles de esos Raspberry Pis conectados a Internet alojan un servicio web público, pero aún existe el potencial para el entusiasmo de los piratas informáticos.

Dan B
fuente
3
Tenga en cuenta que aunque puede haber "decenas de miles" conectados, hay (actualmente) 3 distribuciones de Linux separadas disponibles (que yo sepa) y creo que incluso hay algunos proyectos no basados ​​en Linux. Esto afecta la perspectiva del hacker. Aún así, si la seguridad es importante, mantenga su distribución actualizada y, si es necesario, mantenga su dispositivo detrás de un firewall.
RLH
Buen punto RLH Agregaré información adicional a la pregunta que respalda el número de Raspberry Pis en la naturaleza para dar una mejor idea de la superficie de ataque de la Raspberry Pi que Steve mencionó en su respuesta.
Dan B
La superficie de ataque de @DanB no es una función de la cantidad de Pi sino más bien de la cantidad de sistemas y servicios disponibles para el ataque. en.wikipedia.org/wiki/Attack_surface
Steve Robillard
@SteveRobillard Lo siento si no estaba claro en el comentario, pero en la edición que hice a la pregunta intenté reducir de forma cualitativa el número de Pis que alojan servicios públicos y, por lo tanto, presentarían un servicio disponible para el ataque .
Dan B
He encontrado un breve tutorial sobre cómo asegurar su raspberry pi cuando usa SSH, parece bastante bueno. -> tutorial
Dominik St.

Respuestas:

54

Asegurar una computadora no es un proceso simple, se escriben libros completos sobre el tema. El tamaño del Pi no reduce la amenaza de seguridad o la superficie de ataque presentada a un posible atacante. Como resultado, describiré los pasos involucrados y proporcionaré enlaces a instrucciones y tutoriales más detallados.

Como no ha mencionado qué distribución está utilizando, asumiré la distribución Raspbian recomendada.

  1. Cambia la contraseña por defecto. La distribución Raspbian incluye esto como una opción en el script de inicio inicial. Si aún no lo hizo, puede usar el comando passwd para cambiarlo. Asegúrese de elegir una contraseña segura .
  2. Deshabilitar servicios no utilizados . Vi que la distribución recomendada de Raspbian incluye el servidor web Apache y lo habilita al inicio (alguien puede confirmar esto) . ¿Realmente necesitas un servidor web funcionando? Si no, deshabilítelo. Si necesita ejecutar Apache, asegúrese de asegurarlo , y haga lo mismo para otro servicio (por ejemplo, FTP, NGINX, MySQL, etc.), una búsqueda en Google debería mostrar varios recursos.
  3. Instalar y configurar iptables .
  4. Mantenga su sistema actualizado. Puede automatizar esto usando cron o usando cron-apt .
  5. Configure el registro para monitorear los inicios de sesión y los intentos fallidos de inicio de sesión. Si es posible, use un disco duro externo para alojar su partición / var, esto le dará más espacio, evitará que los archivos de registro llenen la tarjeta SD y extenderá la vida útil de su tarjeta SD.

Algunas cosas adicionales que puede considerar:

También debe leer esta pregunta relacionada. ¿ Cómo puedo proteger contra intrusos y malware antes de conectarlo a Internet (especialmente en una dirección IP pública)? .

Estos son solo los pasos mínimos para proteger su Pi. Para obtener más información, puede leer el Manual de seguridad de Debian .

Steve Robillard
fuente
66
Asegúrese de generar sus propias claves ssh. Creo que algunas de las imágenes ya tenían claves.
John La Rooy
2
Apache no está instalado en raspbian por defecto (el usuario instaló algo como php5-mysql IIRC). Para un filtro de paquetes que es un poco más amigable que las iptables desnudas, ¿tal vez deberíamos recomendar ufw y tal vez incluso su interfaz GUI frontend gufw?
elmicha
1
¿Tiene sentido instalar iptables, incluso si está detrás de un enrutador?
keiki
2
@ otakun85 Sí, se llama defensa en profundidad. Al confiar completamente en su enrutador si alguien pasa de su enrutador con iptables en funcionamiento, dificulta aún más las vulnerabilidades.
Steve Robillard
2
Deshabilitar los servicios no utilizados también ayuda con el tiempo de inicio y ahorra una cantidad (pequeña) de memoria y CPU.
TomG
11

Después de mirar el RPi, parece un dispositivo bastante seguro fuera de la caja, siempre que haga un par de cosas.

Las necesidades predeterminadas de usuario / pase han cambiado. Por lo menos, cambie la contraseña. Para una mejor seguridad nuevamente, cambie el nombre de usuario también. (Agregue un nuevo usuario, luego desactive PI. Verifique que ROOT también esté desactivado desde el inicio de sesión SSH, aunque creo que de todos modos es predeterminado).

Escanear el RPi devuelve solo un puerto abierto, 22, que es la conexión SSH, e incluso eso tiene que activarse antes de que se muestre (aunque la mayoría de la gente lo usará en lugar de un monitor, teclado y mouse, espero, especialmente en un servidor {web})

Puede cambiar el número de puerto SSH, pero eso no servirá de mucho, ya que puede escanearse fácilmente. En su lugar, habilite la autenticación SSH-Key.

Ahora no tiene forma de que nadie ingrese a su máquina sin la clave SSH, el nombre de usuario y la contraseña correctos.

A continuación, configure su servidor web. Apache está prácticamente donde está. Eso sentará y monitoreará el puerto 80 por defecto, y responderá automáticamente a las conexiones de los navegadores, sirviendo sus páginas web.

Si tiene un firewall o enrutador, puede cambiar los puertos RPi y hacer que el enrutador dirija el tráfico de un puerto a otro. Por ejemplo, el tráfico del puerto 80 en el enrutador se redirige al puerto 75 en el RPi, y SSH en 22 se redirige al puerto 72. Esto agregaría otra capa de protección, pero es un poco más complejo.

Mantenga todo actualizado y parcheado, obviamente.

Esto no lo protegerá de ataques que exploten java, flash, servidores SQL, etc. que podría agregar más adelante, pero eso es todo para lo básico, realmente.

También puede agregar un firewall, que ralentizará a cualquiera que ingrese a su sistema para que no salga a un puerto diferente si instala un nuevo servicio. Su enrutador debería ocuparse de eso, pero si está conectado directamente, configúrelo y, durante el tiempo que tarde, podría estar ejecutándolo de todos modos; no agregará mucho en cuanto a recursos del sistema.

Otra cosa que puede agregar es fail2ban ( http://www.fail2ban.org/wiki/index.php/Main_Page ) que agrega una regla de firewall para bloquear múltiples intentos de inicio de sesión, evitando ataques de diccionario. Aunque estos no pueden funcionar en su sistema si ha seguido lo anterior, si por alguna razón necesita dejar solo la contraseña de autenticación SSH (inicio de sesión remoto desde muchas máquinas diferentes, por ejemplo), evitará un ataque de diccionario de trabajar. Después del número de intentos que especifique, bloqueará por un tiempo más intentos de esa dirección IP. (¡Solo tenga cuidado de que no vea ningún enrutador / dirección IP local y prohíba eso demasiado pronto o por demasiado tiempo!)

Editado para agregar: una vez que tenga todo bien configurado, use una herramienta como dd o Win32DiskImager para realizar una copia de seguridad completa de su tarjeta SD. De esa manera, si algo sale mal, puede restaurarlo en la misma tarjeta o escribirlo en una nueva tarjeta, y continuar independientemente. (¡Pero si hackeado, querrás averiguar qué agujero se encontró y cerrarlo primero, tal vez!)

Nigel Tolley
fuente
1
¿Puede explicar cómo cambiar los puertos RPi en el enrutador agrega otra capa de protección?
Andrei
-1

Además de fortalecer el sistema operativo, también puede considerar el uso de un servicio de monitoreo de seguridad basado en la nube para monitorear la actividad hacia / desde / en su dispositivo y recibir alertas si se detecta cualquier inconveniente. Hay algunas herramientas SIEM basadas en la nube disponibles en la actualidad, y algunas (como siemless) operan un modelo freemium para que los usuarios domésticos no tengan que pagar un centavo. Para utilizar dicho servicio, deberá familiarizarse con cosas como rsyslog / syslog, que es una parte estándar de todas las distribuciones del sistema operativo Linux.

spids
fuente
1
Las herramientas en la nube aumentan la superficie de ataque, el monitoreo de seguridad local (logwarn / check) son buenas herramientas, pero esta respuesta es incompleta y es más un comentario.
user1133275