¿Cómo puedo usar un generador de contraseña para la autenticación de inicios de sesión remotos?

55

Me gustaría fortalecer la autenticación de mis inicios de sesión SSH agregando otro factor: un dispositivo generador de contraseña o una aplicación de generación de contraseña en mi teléfono móvil. Las únicas opciones obvias en la configuración predeterminada son una contraseña fija y un par de claves. ¿Cómo puedo hacer esto?

(Si uso una contraseña más un generador de código de acceso, esto proporciona autenticación de dos factores (2FA): la contraseña es "lo que sé" y el código de acceso es "lo que tengo").

Jorge Castro
fuente

Respuestas:

49

Una forma de hacerlo es con una herramienta proporcionada por Google llamada Google Authenticator .

  1. Instalar libpam-google-authenticator Instalar libpam-google-authenticator

    • o solo sudo apt-get install libpam-google-authenticator
  2. Editar /etc/pam.d/sshdpara incluir el módulo:

    • sudoedit /etc/pam.d/sshd
    • y luego incluya esta línea en la parte superior del archivo y guarde:

      auth required pam_google_authenticator.so
      
  3. Edite su archivo de configuración SSH para activar el desafío:

    • sudoedit /etc/ssh/sshd_config y luego cambie la autenticación de respuesta de:

      ChallengeResponseAuthentication no 
      

      a

      ChallengeResponseAuthentication yes
      

      y luego guarde el archivo.

  4. sudo restart ssh reiniciar SSH

  5. correr google-authenticator

    • Esto le dará su clave secreta, código de verificación y códigos de emergencia para raspar. También le hará algunas preguntas de limitación de velocidad.

Aplicaciones móviles:

Necesitará uno de estos para recibir el código de autenticación en otro dispositivo.

Relacionado y útil:

Tenga en cuenta que la combinación de una contraseña con códigos de acceso de un solo uso es autenticación de dos factores: combina "lo que sabe" (una contraseña) con "lo que tiene" (el dispositivo generador de códigos de acceso). Por otro lado, si combina códigos de acceso de un solo uso con un par de claves SSH, se trata de "lo que tiene". Cuando dos factores de autenticación son del mismo tipo, no tiene autenticación de dos factores; esto a veces se llama "autenticación de un factor y medio".

Jorge Castro
fuente
12

Google Authenticator está bien para sus servidores personales, pero es posible que no se relacione bien con su infraestructura de identidad existente. Si desea explorar otras opciones, piense en usar RADIUS como protocolo de autenticación y el complemento pam-radius. Todos los sistemas de autenticación de dos factores orientados a la empresa son compatibles con el radio. Hemos escrito un documento sobre cómo agregar la autenticación de dos factores WiKID a través de pam-radius a Ubuntu .

Usar radius le permite vincular otros sistemas además de SSH al mismo servidor de autenticación. También puede enrutar solicitudes de autenticación a través de freeradius a LDAP y luego a su servidor 2FA para separar la autorización de la autenticación. Puede hacer lo mismo con AD por cierto.

Nowen
fuente
1

Insto a todos a poner la siguiente línea en la parte superior y no en la parte inferior de /etc/pam.d/sshdlo descrito anteriormente (ahora corregido):

auth required pam_google_authenticator.so

De lo contrario, su sistema permanecerá abierto a ataques de fuerza bruta en su contraseña, comprimiendo la primera parte de la autenticación de dos factores: su contraseña.

Primero se le pedirá su código de verificación y luego su contraseña (independientemente de si el código era correcto). Si alguno de los dos está equivocado, debe ingresar ambos nuevamente. Puede configurarlo al revés, pero ese es un cambio un poco más difícil de describir en la configuración sshd predeterminada actual de ubuntu (15.04).

Para obtener detalles sobre por qué es necesario, consulte este problema:

https://github.com/google/google-authenticator/issues/514

Maarten
fuente