Desativar módulo PAM para grupo

10

Recentemente, ativei a autenticação de dois fatores usando o google-authenticator no meu servidor SSH. No entanto, agora estou enfrentando um problema:

Eu tenho um grupo diferente de usuários no servidor que estou usando para SFTP, mas esse grupo não pode mais fazer login, pois o 2FA não está configurado para os usuários do grupo. É possível desativar o módulo google-authenticator para esse grupo? Ativá-lo para os usuários do grupo não é uma opção, pois vários usuários usarão esta conta.

PS: eu uso openssh-server

Z3r0byte
fonte
Respondida neste comentário - Espero que ajude askubuntu.com/a/1051973/846342
Abhimanyu Garg

Respostas:

13

Você pode usar o pam_succeed_ifmódulo (consulte a página do manual) antes pam_google_authenticatorde pular esta parte para o seu 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
fonte
2
Provavelmente deveria estar em [success=1 default=ignore]vez de required. No momento, um usuário que não faz parte do grupo levará à falha na autenticação, eu acho. success=1fará com que pule o próximo método, default=ignoresignificará que os usuários que não estão no grupo simplesmente passarão para o próximo método.
Muru
@ muru sim, você está obviamente certo. Ainda aprendendo os detalhes e toda a magia da pilha PAM :)
Jakuje
Isso depende se você possui vários "AuthenticationMethods" em / etc / ssh / sshd_config? Com a linha acima adicionada, eu ainda obter 'Permissão negada (teclado interativo)'
Arj
@Arj significa que você tem uma configuração diferente, portanto, esta resposta específica não se aplica a você.
Jakuje
1

Alguns clientes SFTP podem lidar com 2FA. Por exemplo, estou usando o 2FA com o FileZilla e o WinSCP e eles funcionam. Também tenho configuração de autenticação por chave ssh e funciona ao lado do 2FA.

No entanto, sua pergunta é interessante e eu fiz uma pequena pesquisa. Encontrei esta resposta .

Portanto, é possível (e fácil) executar instâncias ssh separadas. Eu já testei.

  1. Faça cópias separadas do sshd_configarquivo.

    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_pwd
    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_2fa
    
  2. Edite esses novos configarquivos. Uma das coisas que você deve alterar é a porta shh. De acordo com o exemplo:

    2.a) sshd_config_pwdlinhas específicas são:

    Port 1022
    ...
    PasswordAuthentication yes
    ChallengeResponseAuthentication no
    UsePAM no
    

    2.b) sshd_config_2falinhas específicas são:

    Port 2022
    ...
    PasswordAuthentication no
    ChallengeResponseAuthentication yes
    UsePAM yes
    
  3. Abra as portas necessárias no firewall. De acordo com o exemplo:

    $ sudo ufw limit 1022
    $ sudo ufw limit 2022
    
  4. Execute as novas instâncias ssh:

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

É isso aí.

pa4080
fonte
Como isso está respondendo à pergunta? O que você modifica sshd_configpara usar pilha PAM diferente e não usar 2FA?
Jakuje
@Jakuje Eu atualizei minha resposta.
pa4080
Ok, então o ponto é "não usar o PAM". Pode funcionar em alguns casos, mas o PAM não é apenas sobre autenticação, mas também configurar sessões e muito mais; portanto, pode parar de funcionar diariamente. A mudança de porta também é muito confusa, especialmente se você deseja que terceiros se conectem ao seu servidor. Embora sim, possível solução.
Jakuje
Sim, é apenas uma solução possível, que ainda está incompleta, porque não conheço uma maneira elegante de iniciar essas instâncias ssh separadas na inicialização do sistema.
pa4080
0

A seguir irá tornar o Google 2FA obrigatório para todos os usuários
, exceto os usuários pertencentes ao sudo e administrador do grupo
(ou seja, se um usuário sudo grupo ou administrador não tem 2FA configurado, ele será autenticado ele / ela com base em sua chave pública):

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

Arquivo: /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 acordo com a documentação README.md do Google Authenticator :

nullok

O PAM requer pelo menos uma resposta de SUCESSO de um módulo e nullok faz com que este módulo diga IGNORE. Isso significa que, se essa opção for usada, pelo menos um outro módulo deve ter dito SUCESSO. Uma maneira de fazer isso é adicionar o pam_permit.so de autenticação necessário ao final da configuração do PAM.

Isso torna o uso nullokaqui seguro.

Manjericão A
fonte