Estou tentando fazer a transição inevitável para a autenticação de fator duplo o mais simples possível para administradores e desenvolvedores. Um obstáculo é a necessidade de inserir o segundo fator cada vez que o cliente abre uma sessão. Existe uma maneira de obter autenticação de fator duplo para ssh em que o segundo fator só precisa ser inserido uma vez por dia ou algum outro período de tempo razoavelmente longo?
A ideia é configurar hosts de salto para ssh que exigem 2FA. Um host de salto pode ser usado para fornecer acesso a outros servidores (ssh -J JumpHost TargetHost) que, por sua vez, serão restritos a apenas aceitar conexões dos hosts de salto.
Idealmente para o meu ambiente, o primeiro login no host de salto exigiria uma chave pública, senha ou Kerberos TGT mais o segundo fator. Logons subsequentes no mesmo servidor no período de tempo especificado exigiriam apenas o primeiro fator.
Até agora, eu verifiquei Duo e Okta. O Duo ainda não me respondeu sobre a persistência e não é óbvio na documentação deles que isso pode ser feito. Okta pode fazer isso, mas descobri uma maneira de seqüestrar credenciais de um usuário para outro - mesmo em máquinas clientes - por isso é uma opção menos atraente.
Se o segundo fator for feito por meio do PAM (em vez de um comando post-auth forçado), um módulo PAM personalizado poderá ser inserido para rastrear autenticações bem-sucedidas e ignorar o módulo PAM relacionado a 2fa. Não tenho certeza se esse módulo PAM já existe (mas provavelmente seria extremamente semelhante ao pam_faillock, com um módulo que faz a verificação e outro que faz o rastreamento).
(A "sintaxe estendida" na configuração do PAM permite um tipo de avanço, por exemplo,
auth [success=1 default=ignore] pam_localuser.so
é frequentemente usado para pular o próximo1
módulo para usuários locais.)No entanto, isso provavelmente não é necessário porque o SSH já oferece suporte à autenticação persistente, na forma de conexões multiplexadas de longa duração. Após a autenticação inicial, o cliente SSH pode abrir quantos canais/sessões quiser – mantendo a mesma conexão ativa durante todo o dia.
Por exemplo, na configuração do OpenSSH
ControlPath
(e opcionalmenteControlPersist
) permite que a multiplexação seja habilitada, e o PuTTY tem o mesmo em "Connection→SSH→Sharing an SSH connection". A mesma conexão pode transportar sessões de shell interativas, comandos em lote, túneis TCP e transferências SFTP.Isso não apenas evita o requisito do 2º fator, como também evita o primeiro fator (devido à conexão já estar autenticada). A maioria dos servidores SSH permite isso por padrão, a menos que seja explicitamente desabilitado - então, na maioria dos casos, isso já é possível sem o envolvimento do administrador do sistema, exigindo apenas configuração do lado do cliente para habilitá-lo.