
Entonces, después de algunas pruebas y discusiones exhaustivas, ya no puedo entender este problema por mi cuenta.
Objetivo: autenticarse a través de ssh con clave pública o contraseña y usar PAM para MFA.
El sistema utilizado es Ubuntu Server 20.04
Dividir esto en partes manejables también ha mostrado algunas dificultades al combinar diferentes partes.
La autenticación con clave pública y el uso de PAM para MFA no son un problema. Autenticarse con contraseña y usar PAM para MFA no es un problema. Usar una clave pública o una contraseña es un poco diferente. Combinarlo con MFA parece imposible.
El problema parece estar en cómo SSHD autentica al usuario con contraseña. SSHD no puede hacer esto sin PAM, ya que el archivo de sombra del usuario no es legible sin PAM. Habilitar PAM y activar pam_env.so y pam_sssd.so para la pila de autenticación resuelve este problema.
Entonces, al usar PAM, puedo autenticarme con una clave pública o una contraseña. Lo que no entiendo es por qué SSHD necesita el archivo oculto del usuario para la autenticación de contraseña y no para la clave pública. Todavía obtengo mis grupos y todo usando la clave pública, sin PAM, y usando SSSD para proporcionar las claves públicas con el comando autorizado_keys.
Para autenticarme usando contraseña necesito el módulo pam correspondiente en la pila de autenticación.
Esto no sería un gran problema, pero el objetivo es habilitar MFA y no solicitar la contraseña al usuario a menos que sea necesario. El MFA debe implementarse utilizando PAM. Usar PAM junto con claves públicas no es un problema, configurar el método "publickey,keyboard-interactive" en sshd_config pasa esto a PAM y configurar el módulo PAM después de pam_env.so para MFA lo permite.
Pero habilitar los métodos "contraseña, teclado interactivo" requiere el módulo pam_sss.so, por lo que se me solicitará una contraseña incluso si uso el método de clave pública y luego se me solicitará el MFA.
¿Cómo soluciono este problema para poder autenticarme a través de ssh con la contraseña de sssd o la clave pública de sssd? Y el siguiente paso, si PAM es un requisito o no para la contraseña (preferiblemente no), de cualquier manera, ¿cómo implementar el MFA?
Dado que esto todavía está dando vueltas en mi cabeza, estoy seguro de que puedo explicar mejor las cosas, pero he hecho todo lo posible para explicar mis dificultades.
Lo que he leído es sssd, pam_ssh, pam_sssd, pam_ssh_agent_auth, sshd. Lea también la documentación de DUO, Google MFA, RedHat.
¿Alguna idea o pensamiento?
Cualquier comentario será muy apreciado.
¡Gracias!