Disabilita il modulo PAM per il gruppo


10

Di recente ho abilitato l'autenticazione a due fattori utilizzando Google Authenticator sul mio server SSH. Tuttavia ora sto affrontando un problema:

Ho un diverso gruppo di utenti sul mio server che sto usando per SFTP, ma quel gruppo non è più in grado di accedere poiché 2FA non è impostato per gli utenti del gruppo. È possibile disabilitare il modulo autenticatore google per quel gruppo? Abilitarlo per gli utenti nel gruppo non è un'opzione perché più utenti useranno questo account.

PS: io uso openssh-server


Risposta in questo commento- Spero che aiuti askubuntu.com/a/1051973/846342
Abhimanyu Garg

Risposte:


13

È possibile utilizzare il pam_succeed_ifmodulo (vedere la pagina del manuale) prima pam_google_authenticatordi saltare questa parte per il proprio gruppo:

# 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 ...

2
Probabilmente dovrebbe essere [success=1 default=ignore]invece di required. In questo momento, un utente non nel gruppo porterà al fallimento dell'autenticazione, credo. success=1farà saltare il metodo successivo, default=ignoresignificherà che gli utenti non appartenenti al gruppo passeranno semplicemente al metodo successivo.
Muru,

@muru sì, hai ovviamente ragione. Ancora imparando i dettagli e tutta la magia dello stack PAM :)
Jakuje,

Dipende dal fatto che tu abbia più "AuthenticationMethods" in / etc / ssh / sshd_config? Con l'aggiunta della riga precedente, ottengo ancora "Autorizzazione negata (tastiera interattiva)"
Arj

@Arj significa che hai una configurazione diversa, quindi questa risposta specifica non è valida per te.
Jakuje,

1

Alcuni client SFTP possono gestire 2FA. Ad esempio, sto usando 2FA con FileZilla e WinSCP e funzionano. Inoltre ho installato l'autenticazione ssh-key e funziona a fianco di 2FA.

Tuttavia la tua domanda è interessante e ho fatto un breve sondaggio. Ho trovato questa risposta .

Quindi, è possibile (e facile) eseguire istanze ssh separate. L'ho già provato.

  1. Crea copie separate del sshd_configfile.

    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_pwd
    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_2fa
    
  2. Modifica questi nuovi configfile. Una delle cose che devi cambiare è la porta shh. Secondo l'esempio:

    2.a) sshd_config_pwdlinee specifiche sono:

    Port 1022
    ...
    PasswordAuthentication yes
    ChallengeResponseAuthentication no
    UsePAM no
    

    2.b) sshd_config_2fale linee specifiche sono:

    Port 2022
    ...
    PasswordAuthentication no
    ChallengeResponseAuthentication yes
    UsePAM yes
    
  3. Apri le porte necessarie nel firewall. Secondo l'esempio:

    $ sudo ufw limit 1022
    $ sudo ufw limit 2022
    
  4. Esegui le nuove istanze ssh:

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

Questo è tutto.


Come risponde alla domanda? Cosa si modifica in sshd_configper utilizzare diversi stack PAM e non utilizzare 2FA?
Jakuje,

@Jakuje Ho aggiornato la mia risposta.
pa4080,

Ok, quindi il punto è "non usare PAM". In alcuni casi potrebbe funzionare, ma PAM non riguarda solo l'autenticazione, ma anche l'impostazione della sessione e molto altro, pertanto potrebbe smettere di funzionare di giorno in giorno. Anche cambiare porta è molto confuso, specialmente se vuoi che terze parti si connettano al tuo server. Anche se sì, possibile soluzione.
Jakuje,

Sì, è solo una possibile soluzione, che è ancora incompleta, perché non conosco un modo elegante per avviare queste istanze ssh separate all'avvio del sistema.
pa4080,

0

Quanto segue farà Google 2FA obbligatorio per tutti gli utenti
, tranne gli utenti appartenenti al sudo e amministratore del gruppo
(cioè se un utente da sudo gruppo o di amministrazione non ha 2FA configurato, lo autenticherà / la sua in base alla loro chiave pubblica):

File: /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

File: /etc/ssh/sshd_config

AuthenticationMethods publickey,keyboard-interactive
UsePAM yes
ChallengeResponseAuthentication yes

risultati:

          |  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)

Secondo la documentazione README.md di Google Authenticator :

nullok

PAM richiede almeno una risposta SUCCESSO da un modulo e nullok fa in modo che questo modulo dica IGNORA. Ciò significa che se si utilizza questa opzione, almeno un altro modulo deve avere SUCCESSO. Un modo per farlo è aggiungere l'autenticazione pam_permit.so richiesta alla fine della configurazione di PAM.

Questo rende l'uso di nullokqui sicuro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.