Deshabilitar módulo PAM para grupo

10

Recientemente habilité la autenticación de dos factores usando google-authenticator en mi servidor SSH. Sin embargo, ahora estoy enfrentando un problema:

Tengo un grupo diferente de usuarios en mi servidor que estoy usando para SFTP, pero ese grupo ya no puede iniciar sesión ya que 2FA no está configurado para los usuarios del grupo. ¿Es posible deshabilitar el módulo google-authenticator para ese grupo? Habilitarlo para los usuarios del grupo no es una opción porque varios usuarios usarán esta cuenta.

PD: yo uso openssh-server

Z3r0byte
fuente
Respondido en este comentario: espero que ayude a askubuntu.com/a/1051973/846342
Abhimanyu Garg

Respuestas:

13

Puede usar el pam_succeed_ifmódulo (consulte la página del manual) antes pam_google_authenticatorde omitir esta parte para su grupo:

# the other authentication methods, such as @include common-auth
auth [success=1 default=ignore] pam_succeed_if.so user ingroup group
auth required pam_google_authenticator ...
Jakuje
fuente
2
Probablemente debería ser en [success=1 default=ignore]lugar de required. En este momento, creo que un usuario que no está en el grupo provocará un error de autenticación. success=1hará que omita el siguiente método, default=ignoresignificará que los usuarios que no están en el grupo simplemente pasarán al siguiente método.
muru
@muru sí, obviamente tienes razón. Todavía
estoy
¿Depende esto de si tiene múltiples "AuthenticationMethods" en / etc / ssh / sshd_config? Con la línea anterior agregada, todavía obtengo 'Permiso denegado (teclado interactivo)'
Arj
@Arj esto significa que tiene una configuración diferente, por lo que esta respuesta específica no se aplica a usted.
Jakuje
1

Algunos clientes SFTP pueden manejar 2FA. Por ejemplo, estoy usando 2FA con FileZilla y WinSCP y funcionan. También he configurado la autenticación de clave ssh y funciona junto con 2FA.

Sin embargo, su pregunta es interesante e hice una breve encuesta. Encontré esta respuesta .

Por lo tanto, es posible (y fácil) ejecutar instancias ssh separadas. Ya lo he probado.

  1. Haga copias separadas del sshd_configarchivo.

    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_pwd
    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_2fa
    
  2. Edite estos nuevos configarchivos. Una de las cosas que debe cambiar es el puerto shh. Según el ejemplo:

    2.a) sshd_config_pwdlas líneas específicas son:

    Port 1022
    ...
    PasswordAuthentication yes
    ChallengeResponseAuthentication no
    UsePAM no
    

    2.b) sshd_config_2falas líneas específicas son:

    Port 2022
    ...
    PasswordAuthentication no
    ChallengeResponseAuthentication yes
    UsePAM yes
    
  3. Abra los puertos necesarios en el firewall. Según el ejemplo:

    $ sudo ufw limit 1022
    $ sudo ufw limit 2022
    
  4. Ejecute las nuevas instancias ssh:

    $ sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_pwd
    $ sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_2fa
    

Eso es.

pa4080
fuente
¿Cómo responde esto a la pregunta? ¿Qué modificas sshd_configpara usar diferentes pilas PAM y no usar 2FA?
Jakuje
@Jakuje He actualizado mi respuesta.
pa4080
Ok, entonces el punto es "no usar PAM". Puede que funcione en algunos casos, pero PAM no solo se trata de autenticación, sino también de configurar sesiones y mucho más, por lo tanto, podría dejar de funcionar día a día. También cambiar el puerto es muy confuso, especialmente si desea que un tercero se conecte a su servidor. Aunque sí, posible solución.
Jakuje
Sí, es solo una posible solución, que aún está incompleta, porque no conozco una forma elegante de iniciar estas instancias ssh separadas al inicio del sistema.
pa4080
0

A continuación se hará Google 2FA obligatoria para todos los usuarios
excepto a los usuarios que pertenecen al sudo y administrador de grupo
(es decir, si un usuario de sudo grupo o administrador no tiene 2FA configurado, le autenticará / ella en función de su clave pública):

Expediente: /etc/pam.d/sshd

auth required pam_google_authenticator.so nullok
auth optional pam_succeed_if.so user ingroup sudo
auth optional pam_succeed_if.so user ingroup admin

Expediente: /etc/ssh/sshd_config

AuthenticationMethods publickey,keyboard-interactive
UsePAM yes
ChallengeResponseAuthentication yes

Resultados:

          |  Belongs to sudo or  |  Has 2FA Already Setup      |  Authentication Result
          |  admin group         |  in ~/.google_authenticator | 
----------+----------------------+-----------------------------+------------------------
User A    |          NO          |       NO                    | DENIED LOGIN UNTIL 2FA IS SETUP
User B    |          YES         |       NO                    | CAN LOGIN (PRIVATE/PUBLIC KEY USED)

User C    |          NO          |       YES                   | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)

User D    |          YES         |       YES                   | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)

De acuerdo con la documentación README.md de Google Authenticator :

nullok

PAM requiere al menos una respuesta de ÉXITO de un módulo, y nullok hace que este módulo diga IGNORE. Esto significa que si se usa esta opción, al menos otro módulo debe haber dicho ÉXITO. Una forma de hacerlo es agregar la autenticación requerida pam_permit.so al final de la configuración de PAM.

Esto hace que el uso de nullokaquí sea seguro.

Albahaca
fuente