Estoy usando Ubuntu
Me pregunto si es posible tener libpam-google-authenticator (que le permite iniciar sesión usando un código generado por su teléfono) Y la autenticación de certificado configurada para funcionar en conjunto, y si es posible, cómo lo haría. configurarlo Por lo tanto, para iniciar sesión en mi cuenta, debe tener mi contraseña, mi teléfono (y su código de acceso) Y mi certificado / clave privada y su contraseña.
He conseguido que ambos trabajen de forma independiente, pero nunca he podido hacer que trabajen juntos. Sin embargo, estoy seguro de que de alguna manera es posible.
Gracias.
Respuestas:
Es posible hacer esto encadenando módulos PAM. Pero antes de entrar en detalles:
La configuración incorrecta de PAM puede y LE impedirá iniciar sesión en su sistema
Afortunadamente, siempre puede arrancar en modo de usuario único y solucionar el problema, pero tenga en cuenta que PAM no es algo con lo que quiera meterse más de lo necesario.
De todos modos, la idea detrás de esto es que es posible utilizar módulos PAM de apilamiento para asegurarse de que
pam-google-authenticator
,pam_unix
(esto comprueba la contraseña) y el módulo certificado todos tienen que tener éxito para permitirle el acceso. De manera predeterminada, PAM está configurado para permitir que cualquier módulo de autenticación lo autentique, omitiendo los demás.En /etc/pam.d/common-auth, verá cerca de la parte superior una línea similar a la siguiente:
Esto le dice a PAM que debería
pam_unix.so
tener éxito, omitirá las siguientes dos reglas (que generalmente son otro módulo de autenticación y luegopam_deny.so
) y pasará a los módulos opcionales. Sin embargo, si el módulo falla, se ignorará y el control pasará al siguiente módulo de la cadena. Esto continúa hacia abajo en cada módulo de autenticación hasta que el control salta al bloque opcional o PAM llega a pam_deny.so y falla allí mismo.Esto se puede aprovechar para garantizar eso
pam-google-authenticator
,pam_unix.so
y su módulo PAM certificado debe tener éxito para permitirle el acceso. No sé el nombre del módulo de autenticación de Google o el módulo de certificado que está utilizando, pero debería poder encontrarlos en su archivo de autenticación común. Entonces, al poner algo como esto en la parte superior:Reemplazar
<n>
con el número de módulos entre el módulo pam_permit.so aquí y el siguientepam_permit.so
módulo; en otras palabras, esto debe establecerse en el código [éxito = n predeterminado = ignorar] del módulo de autenticación más alto + 1. Esta sintaxis es un poco funky , pero esencialmente omite los módulos de autenticación después de que los módulos anteriores hayan tenido éxito.Por supuesto, puede que se pregunte cómo limitar esta autenticación de tres pasos solo a su cuenta de usuario. Esto se puede hacer con un
pam_succeed_if.so
módulo y se debe insertar sobre el bloque de autenticación de tres pasos descrito anteriormente:Donde
<username>
se reemplaza por su nombre de usuario. Esta línea simplemente dice que pam_succeed_if.so tiene éxito (también conocido como su nombre de usuario coincide con el nombre de usuario en esa línea), luego PAM debe continuar con los siguientes módulos, que son los módulos de autenticación de tres pasos. De lo contrario, PAM debería saltar a los módulos reales, que están a 4 módulos de distancia de este.Para hacer coincidir varias cosas, por ejemplo, pertenecer a un grupo junto con un nombre de usuario determinado, se deben usar varias líneas, por ejemplo:
Antes de hacer nada de esto, haría una copia de seguridad del archivo de autenticación común, y también me familiarizaría con el modo de usuario único y cómo restaurar el archivo antiguo en caso de emergencia. Esta configuración no ha sido probada por mí, pero debería funcionar.
Para probar esto la primera vez, abra uno o dos shell raíz y déjelos en paz. Estos actúan como retrocesos en caso de que algo salga mal, ya que puede reemplazar fácilmente la autenticación común con la copia de seguridad. Luego, haga estos cambios. A continuación, intente usar
su
para iniciar sesión en su cuenta de usuario; debe realizar el proceso de autenticación de tres pasos.pam_succeed_if.so
Puede encontrar la documentación completa del módulo en http://linux.die.net/man/8/pam_succeed_iffuente
ChallengeResponseAuthentication
yUsePAM
'sí', luego configure las líneas detalladas en mi respuesta anterior en /etc/pam.d/sshd o /etc/pam.d/common -auth, dependiendo de si desea realizar esto para todos los inicios de sesión o solo SSH. Recuerde eliminar la línea de relleno 'pam_certificate_auth.so' y modificar la línea [success = <n> como resultado.Leí esta publicación y pensé que sonaba genial: así es como conseguí que funcione la autenticación de tres factores. Escribí una publicación de blog al respecto aquí .
Básicamente, configuré Google Authenticator y la contraseña en PAM, luego configuré la autenticación de clave pública en OpenSSH (esto pasa por alto a los otros dos), y finalmente OpenSSH también requiere que se autentique a través de PAM (la última línea)
Desde / etc / ssh / sshd_conf
fuente
Solo Pubkey + GoogleAuth debe agregar a la parte superior de su /etc/pam.d/sshd
Supongo que tienes OpenSSH> = 6.2 y sshd_config editado
Para mayor seguridad paranoica, agregue algunas configuraciones adicionales: D
fuente