
Portanto, depois de alguns testes e discussões extensivos, não consigo mais entender esse problema sozinho.
Objetivo: autenticar por ssh com chave pública ou senha e usar PAM para MFA.
O sistema usado é Ubuntu Server 20.04
Dividir isto em partes gerenciáveis também mostrou algumas dificuldades na combinação de diferentes partes.
Autenticar com chave pública e usar PAM para MFA não é um problema. Autenticar com senha e usar PAM para MFA não é um problema. Usar chave pública ou senha é um pouco diferente. A combinação com o MFA parece impossível.
O problema parece estar na forma como o SSHD autentica o usuário com senha. O SSHD não pode fazer isso sem o PAM, pois o arquivo shadow do usuário não pode ser lido sem o PAM. Habilitar o PAM e ativar pam_env.so e pam_sssd.so para a pilha de autenticação resolve isso.
Portanto, usando o PAM, posso autenticar com chave pública ou senha. O que não entendo é por que o SSHD precisa do arquivo shadow do usuário para autenticação de senha e não para chave pública? Ainda recebo meus grupos e tudo mais usando publickey, sem PAM, e usando SSSD para fornecer as chaves públicas com o comandoauthorized_keys.
Para autenticar usando senha, preciso do módulo pam correspondente na pilha de autenticação.
Isso não seria um grande problema, mas o objetivo é habilitar o MFA e não solicitar a senha do usuário, a menos que seja necessário. O MFA precisa ser implementado usando PAM. Usar o PAM junto com chaves públicas não é um problema, definir o método "publickey,keyboard-interactive" em sshd_config passa isso para o PAM e definir o módulo PAM após pam_env.so para MFA permite isso.
Mas a ativação dos métodos "senha, teclado interativo" requer o módulo pam_sss.so, então serei solicitada uma senha mesmo se eu usar o método publickey e, em seguida, será solicitado o MFA.
Como faço para navegar nesse problema, para poder autenticar via ssh com senha do sssd ou chave pública do sssd? E o próximo passo, sendo o PAM um requisito ou não de senha (de preferência não), de qualquer forma, como implementar o MFA?
Como isso ainda está circulando na minha cabeça, tenho certeza de que posso explicar melhor as coisas, mas fiz o possível para explicar minhas dificuldades.
As coisas que li são sssd, pam_ssh, pam_sssd, pam_ssh_agent_auth, sshd. Leia também a documentação do DUO, Google MFA, RedHat.
Algum pensamento ou ideia?
Qualquer comentário seria muito apreciado.
Obrigado!