Bloquea tu Raspberry Pi con Google Authenticator

Las placas Raspberry Pi (o algunas de las muchas placas similares) son útiles para dejar lugares inusuales para hablar con la red y recopilar datos, controlar cosas o hacer todo tipo de otras tareas que necesita una pequeña computadora sin hijos. Por supuesto, cada vez que tiene una computadora en una red, invita a los piratas informáticos (y no a nuestros piratas informáticos) a ingresar.

Acabamos de ver cómo tunelizar ssh a través de un proxy inverso a través de Pagekite para que pueda conectarse a Pi incluso con firewalls y direcciones IP dinámicas. ¿Cómo se evita que un delincuente intente iniciar sesión varias veces hasta que tenga acceso? Esto puede funcionar en cualquier máquina Linux, pero para este tutorial usaré Raspberry Pi como dispositivo de ejemplo. En todos los casos, saber cómo configurar la seguridad ssh adecuada es primordial para todo lo que ingresa a una red.

Mejor que la seguridad por contraseña

Los expertos le dicen que use una buena contraseña. Sin embargo, con ssh, el mejor método es prohibir las contraseñas por completo. Para ejecutar esto, debe crear un certificado público y privado en la máquina que desea usar para conectarse. Luego copia la clave pública a la Raspberry Pi. Una vez que esté instalado, su cliente ssh se autenticará automáticamente en el servidor. Genial si siempre inicias sesión con la misma máquina y nunca pierdes tus llaves.

Debe crear un par de claves personales si aún no lo ha hecho. Puede usar el comando ssh-keygen para hacer esto en Linux. Es posible que necesite una frase de contraseña para desbloquear la clave o, si está seguro de que solo tiene acceso a su máquina, puede dejarla en blanco.

Una vez que tenga la clave, es fácil enviar la clave pública al servidor usando el comando ssh-copy-id. Por ejemplo:

ssh-copy-id [email protected]

Inicia sesión con su contraseña por última vez y el comando copia su clave pública en el servidor. Desde entonces, cuando use ssh en ese host, será autenticado automáticamente. Muy conveniente.

Una vez que haya configurado las claves, puede deshabilitar el uso de contraseñas normales editando / etc / ssh / sshd_config. Necesita la siguiente configuración:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

Esto evita que alguien ingrese por fuerza bruta adivinando contraseñas. También es difícil configurar nuevos usuarios o iniciar sesión desde una computadora nueva.

Conserve las contraseñas; Utilice dos tipos

Por estos motivos, no siempre es una buena idea desactivar las contraseñas. Una mejor idea es utilizar la autenticación de dos factores. Esto requiere que ingrese una contraseña, así como un código de verificación "único". ¿De dónde sacas ese código?

Hay varias opciones, pero la que usaré es la aplicación Google Authenticator. Puede obtener la aplicación para dispositivos Apple, Blackberry y, por supuesto, dispositivos Android. Lo instalas de la forma habitual para tu dispositivo. El truco es cómo hacer que el servidor ssh en la Pi lo use.

Afortunadamente, el representante de Raspian tiene un paquete llamado libpam-google-authenticator que hará el truco. Sin embargo, instalarlo con apt-get es solo una parte del truco. Necesitas dos cosas. Primero necesitas configurar tu cuenta.

Configurar la cuenta de Google Authenticator

Para configurar su cuenta, debe iniciar sesión en su Pi y emitir el comando google-authenticator. El programa le hará algunas preguntas y luego generará una URL que le mostrará un código QR. También le proporcionará un código numérico. Puede utilizar cualquiera de estos para configurar su teléfono. El comando también le proporcionará algunos códigos de primer scratch que debe conservar en caso de que pierda su dispositivo auténtico. Debe hacer esto para cualquier ID de usuario que pueda iniciar sesión con ssh (incluso aquellos en los que normalmente usa un certificado).

Dígale a su Pi que requiera un inicio de sesión de dos factores

La otra parte del rompecabezas te obliga a realizar cambios en /etc/pam.d/sshd y / etc / ssh / sshd_config. La primera línea de /etc/pam.d/sshd debería ser:

auth required pam_google_authenticator.so

En / etc / ssh / sshd_config, debe asegurarse de que las contraseñas estén habilitadas:

ChallengeResponseAuthentication yes
PasswordAuthentication yes
UsePAM yes

Solo asegúrate de no estropear nada. La pérdida del servidor ssh podría impedirle acceder a la máquina. No he estropeado uno todavía, pero el consejo que escuché es mantener una sesión ssh abierta mientras reinicia el servidor ssh (/etc/init.d/sshd restart) así que si algo falla, todavía tendrá un shell solicitud abierta. También puede considerar ejecutar:

/usr/sbin/sshd -t

Esto comprobará su configuración antes de presionar el gatillo.

Además, si ya usa certificados para iniciar sesión, esto no cambiará nada para usted. La autenticación de certificado anula las contraseñas. Eso hace que sea difícil probar su diseño. Puede forzar a ssh a no usar su certificado de esta manera:

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no [email protected]

Incluso para las cuentas en las que usa certificados, agregar el inicio de sesión de dos factores evitará ataques de fuerza bruta a su contraseña, así que asegúrese de configurar todas las cuentas que puede usar con ssh.

Otras protecciones

Hay varias otras cosas que puede hacer para asegurar su conexión ssh:

  • Prohibir los inicios de sesión de root (edite la línea PermitRootLogin en / etc / ssh / sshd_config; puede usar el sur de la cuenta normal si desea convertirse en root)
  • Use un puerto ssh anormal (edite el puerto en sshd_config)
  • Considere instalar fail2ban, que bloqueará las direcciones IP que muestren comportamientos sospechosos
  • Prohibir a algunos usuarios que no necesitan acceso ssh (use AllowUsers o DenyUsers en el archivo sshd_config)
  • Establezca PermitEmptyPasswords en sshd_config en 'no'
  • No todo el mundo aceptará prohibir los inicios de sesión como root. Sin embargo, empíricamente, muchos ataques intentarán iniciar sesión como root, ya que casi todos los sistemas Linux tienen esa cuenta. Es más difícil para un atacante aleatorio saber que mi ID de usuario es WetSnoopy.

    Existen muchas otras técnicas, desde la interceptación de puertos hasta el bloqueo de usuarios en sus directorios de inicio. Puede evaluar las pruebas de enlace de límite en el puerto ssh. Solo usted puede decidir cuánta seguridad es suficiente. En última instancia, usted cierra mejor su caja fuerte que su armario de suministros. Sin embargo, la autenticación bidireccional conveniente y gratuita puede agregar seguridad avanzada a su Raspberry Pi u otros proyectos basados ​​en Linux. Si está realmente preocupado, también puede forzar un enfoque de dos factores hacia el sur.

    • RW dice:

      Si no usa un reloj de dispositivo muy estable o un estándar horario ... lo pasará mal ..... y ese mal tiempo lo empeorará ... y g-auth no funcionará.

      • Al Williams dice:

        Puede aumentar el tiempo de relajación o contar. O use ntp

      • alemán dice:

        El valor predeterminado es 30 segundos; la sincronización de tiempo en 30 segundos es bastante insignificante de implementar. Este valor predeterminado se puede aumentar a 4 minutos (te hacen esa pregunta durante la instalación, no es ciencia espacial).

      • Robert Martin dice:

        su en línea, ntp es muy confiable. Usé una solución de este tipo cuando dejé a mis tortugas mascotas, no falló durante 7 semanas. Aunque usé pi naranja.

    • Matlock dice:

      ¡Bloquea tu RaspberryPi a través de Botnet!
      ¡Ahora con horneado en MITM!
      Ya es bastante malo que el Pi tenga blobs binarios y hardware NDA protegido.
      Simplemente use una clave protegida con contraseña.

      • hepeto dice:

        ¿Qué quieres decir?

        El módulo PAM Google Authenticator es simplemente un módulo PAM independiente que implementa el estándar RFC 6238 (TOTP). Aparte de ser desarrollado por Google, de ninguna manera depende ni se comunica con los sistemas de Google, ni depende de ellos para la autenticación.

    • Ben dice:

      fail2ban para otros servicios (ftps, nfs, etc.) además de eso, sería una base bastante sólida para el principiante propenso a la seguridad

    • Lithios dice:

      Con solo iniciar esto para algunos otros usuarios de Windows Phone, puede usar el programa Authenticator de Microsoft, que es compatible con el servicio de dos factores de Google.

    • RoGeorge dice:

      Es más difícil para un atacante aleatorio saber que mi ID de usuario es WetSnoopy.

      Estás bien. Lo curioso es que "wetsnoopy" es bastante común, está incluido en los diccionarios de contraseñas más básicos (y gratuitos), rockyou.txt (en línea 2774571).

      : o)

      • Al Williams dice:

        Recuerda que dije usando una identificación. Por lo tanto, aún necesita una contraseña o un certificado. La combinación con dos factores y WetSnoopy es bastante buena.

    • Mate dice:

      He configurado pares de claves para mi box de Linux básicamente en todos mis dispositivos que me permiten acceder a Internet, incluido mi teléfono. Mis dos VPS también tienen pares de claves entre sí, por lo que si de alguna manera pierdo la clave de uno, puedo cambiar del otro.

      Supongo que si me encontrara en algún lugar sin mi teléfono, no podría acceder a mis VPS, pero si ni siquiera tengo mi teléfono, no sabré que necesito iniciar sesión en mis VPS.

      • Mate dice:

        s / mis VPS. $ / ellos ./

    • Jon dice:

      Si normalmente accede a la máquina desde direcciones IP estáticas, puede utilizar hosts. Permitir realmente el acceso a las uñas

    • Que no dice:

      Deja de presionar a Google.

Alana Herrero
Alana Herrero

Deja una respuesta

Tu dirección de correo electrónico no será publicada.