¿Autenticación de dos factores con autenticación de clave ssh y yubikey?

15

OpenSSH no invocará PAM en absoluto si la clave pública (RSA) La autenticación está configurada y el cliente presenta una clave válida. Por lo tanto, si usa autenticación basada en clave, no puede aplicar 2FA fácilmente.

Una solución para esta limitación consiste en escribir un ayudante programa que pedirá una YTP de Yubikey. Este programa de ayuda Está dispuesto para ser ejecutado por sshd después del usuario. Se autentica con éxito utilizando la directiva ForceCommand. Ejemplo: enlace

Ya que no confío en mi conocimiento de la programación de shell (señales de manejo, asignación tty, etc.) para revisar el ayudante programa, así que seguí buscando algo diferente.

¿Cuáles son los orificios en el siguiente enfoque alternativo?

  • Configura yubikey para hacer 2FA para la autenticación basada en contraseña ssh.

  • Cada inicio de sesión, 'X', tendrá un inicio de sesión "bastión" llamado 'pre-X'.

  • Ambos inicios de sesión existirán en la misma máquina

  • Una instancia sshd

  • Usando la directiva de configuración Match sshd, el servidor ssh será configurado para no permitir la autenticación de clave pública para todos los inicios de sesión que coinciden con el patrón 'pre- *'.

  • El inicio de sesión 'bastion' se creará sin directorio de inicio, shell de inicio de sesión establecido en / bin / false, gid establecido en 'nogroup' y cualquier cosa otra cosa podemos hacer para hacerlo lo más débil posible. Para bien Para medir, use la directiva ForceCommand ssh para que estos inicios de sesión siempre ejecute / bin / false y use ChrootDirectory para crear un sandbox.

  • Use la directiva AllowUsers para no permitir inicios de sesión que no sean bastiones. iniciar sesión desde cualquier IP excepto localhost.

  • Use ProxyCommand en el extremo del cliente ssh para escribir el hacer un túnel a través del inicio de sesión del bastión.

He hecho esto y funciona bien, pero me pregunto si me he perdido algo.

Los usuarios de Bastion se crean así:

# password will never be typed in, so need to record it
sudo useradd -M -N -g nogroup -s /bin/false pre-user001 -p $(dd if=/dev/urandom bs=128 count=1 2>/dev/null  | base64 -w0)

sshd_config tiene este aspecto:

# Nobody can login from anywhere except localhost
AllowUsers *@localhost
# ... except for logins starting with 0
AllowUsers pre-*@*

# force password auth for bastion logins
Match User pre-*
PasswordAuthentication yes
RSAAuthentication no
PubkeyAuthentication no
ForceCommand /bin/false
    
pregunta user391 12.04.2013 - 18:32
fuente

2 respuestas

3

A partir de 2015 (con OpenSSH > = 6.2), su suposición de que sshd no invocará PAM en combinación con la autenticación de clave pública ya no es válida.

Con OpenSSH 6.2 puede imponer un segundo factor o incluso múltiples factores para la autenticación además de la autenticación de clave pública.

La directiva AuthenticationMethods se puede usar para especificar múltiples factores en un nivel global o específico del usuario en el sshd_config , por ejemplo :

  

AuthenticationMethods publickey, teclado interactivo

keyboard-interactive activa la cadena PAM donde, por ejemplo, se puede configurar un módulo pam OTP para sshd.

    
respondido por el maxschlepzig 02.01.2016 - 11:19
fuente
2

He usado DuoSecurity en el pasado con gran éxito, sigue un método similar al de Yubikey pero permite el uso de múltiples métodos de autenticación.

Muy fácil de configurar con una curva de aprendizaje mínima para el usuario.

    
respondido por el user24751 14.04.2013 - 17:10
fuente

Lea otras preguntas en las etiquetas