Búsqueda de sitios web

Cómo habilitar la autenticación de dos factores (2FA) para SSH en Linux


En este artículo, le mostraremos cómo habilitar la autenticación de dos factores (2FA) para el inicio de sesión SSH en Linux usando Google PAM (Módulo de autenticación conectable) y la aplicación móvil Microsoft Authenticator. 2FA le permite agregar una capa de seguridad adicional cuando se autentica en un host Linux a través de SSH. Después de habilitar 2FA, deberá ingresar una contraseña digital de un solo uso (TOTP) desde su teléfono inteligente además de su nombre de usuario y contraseña (o clave RSA) para SSH en Linux.

Instale la aplicación móvil Microsoft Authenticator en su teléfono inteligente (está disponible tanto en Google Store como en App Store).

En esta guía, he seleccionado Microsoft Authenticator porque ya lo uso para la autenticación MFA en Azure. Si lo desea, puede usar Google Authenticator en su lugar.

Ahora necesita instalar y configurar Google PAM en su host Linux:

  1. Conéctese a su host Linux a través de SSH;

  2. Instale Google PAM Authenticator usando su administrador de paquetes:
    Debian/Ubuntu:

    sudo apt-get install libpam-google-authenticator 

    RHEL/CentOS/Fedora:

    yum install google-authenticator

  3. Ejecute el comando:

    google-authenticator
  4. La herramienta generará y mostrará un código QR en la consola:

  5. Ejecute la aplicación Microsoft Authenticator en su teléfono inteligente. Seleccione Agregar cuenta -> Cuenta personal -> Escanear un código QR;

  6. Escanea el código QR con la aplicación. Aparecerá una nueva entrada para su nombre de usuario y servidor en la aplicación Authenticator. Utilizará este elemento para obtener la contraseña de un solo uso para conectarse a su host;

  7. Tenga en cuenta que en su consola de Linux se muestran una clave secreta y códigos de emergencia;

    Necesitará estos códigos para conectarse a su host si pierde o rompe su teléfono inteligente. ¡Manténgalos en un lugar seguro!

  8. Luego, google-authenticator muestra algunas otras preguntas:

  9. ¿Quiere que los tokens de autenticación se basen en el tiempo?

    Y -> Enter
  10. ¿Quiere que actualice su archivo "/home/sysops/.google_authenticator"?

    Y -> Enter
  11. ¿Desea prohibir múltiples usos del mismo token de autenticación?

    Y -> Enter
  12. De forma predeterminada, los tokens son válidos durante 30 segundos...

    Y -> Enter

    De forma predeterminada, el token único cambia cada 30 segundos. Esta es la mejor opción para la mayoría de los casos. Sin embargo, es importante que su host Linux y su teléfono inteligente estén sincronizados.

  13. ¿Desea habilitar la limitación de velocidad?

    Y -> Enter

    Puede configurar todos los ajustes a la vez:

    $ google-authenticator -t -f -d -w 3 -e 5 -r 3 -R 30

    -t: permite iniciar sesión con un código de un solo uso
    -f: guarda la configuración en ~/.google_authenticator
    -d: niega el uso de códigos anteriores
    -w 3: permite usar un token anterior y uno posterior (si el tiempo no está sincronizado)
    -e 5: genera 5 códigos de emergencia
    -r 3 -R 30 - permite usar no más de 3 inicios de sesión cada 30 segundos

  • Luego agregue la siguiente directiva a /etc/pam.d/sshd:

    auth required pam_google_authenticator.so nullok

    La opción nullok permite que un usuario que no haya configurado la autenticación de dos factores inicie sesión con un nombre de usuario y una contraseña. Después de la configuración y prueba de 2FA, se recomienda deshabilitar la opción para requerir el uso de autenticación de dos factores.

  • Luego edite /etc/ssh/sshd_config:

    sudo mcedit /etc/ssh/sshd_config
  • Cambiar el

    ChallengeResponseAuthentication

    valor a

    Yes
    ChallengeResponseAuthentication yes
  • Guarde los cambios en sshd_config y reinicie sshd:

    service ssh restart

  • Luego intente conectarse a su host Linux a través de SSH. Se le pedirá que ingrese un código de verificación antes de ingresar una contraseña.

    Abra la aplicación Authenticator en su teléfono inteligente y busque el usuario de su host Linux. Ingrese un código de contraseña de un solo uso de 6 caracteres que el Autenticador generó para usted en la consola.

    Tenga en cuenta que el código de contraseña de un solo uso es válido por un tiempo limitado (30 segundos por defecto). Si ingresó el código correcto, se le pedirá que ingrese su contraseña de usuario de Linux.

    Si el inicio de sesión es exitoso, aparece la siguiente línea en el registro de autenticación:

    cat /var/log/auth.log
    Jul 20 11:12:22 srvubun01 sshd(pam_google_authenticator)[6242]: Accepted google_authenticator for sysops

    Si se ingresa el código incorrecto, el registro muestra errores:

    Jul 20 11:14:20 srvubun01 sshd(pam_google_authenticator)[6436]: Invalid verification code for sysops
    Jul 20 11:14:22 srvubun01 sshd[6436]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.10.15 user=sysops

    Si desea utilizar 2FA junto con la autenticación de clave SSH, agregue las siguientes directivas a /etc/ssh/sshd_config:

    PasswordAuthentication no
    PubkeyAuthentication yes
    AuthenticationMethods publickey,keyboard-interactive

    Artículos relacionados