Embora este método não verifique um método de autenticação, ele resolve o problema de fazer login de máquinas inseguras / não confiáveis usando OTP.
Para configurar o daemon SSH para escutar em várias portas (uma para autenticação de chave pública e outra para autenticação OTP), basta adicionar outro número de porta ao arquivo sshd_config, ou seja,
Port 22 # For key-based auth
Port 60000 # For OTP-based auth
O 2-FA é baseado na tecnologia de autenticação em duas etapas do Google. Para instalar a biblioteca e o programa:
$ sudo apt-get install libpam-google-authenticator
Enquanto isso, instale o aplicativo Google Authenticator em seu smartphone. Uma vez instalado, a partir do terminal, inicie o programa:
$ google-authenticator
Isso lhe dará um código de barras, um segredo e vários códigos de rascunho. MANTENHA ELES SALVOS!!! Se você não tiver acesso ao seu telefone ou precisar de acesso de emergência, esses códigos serão o seu único caminho. Não subestime a importância desse mecanismo de backup. Pode te ferrar a longo prazo.
Configure o módulo PAM para usar o Google Authenticator:
$ sudo nano /etc/pam.d/sshd
Para desativar o login de senha, coloque um # na frente da linha @include common-auth. Além disso, na parte inferior do arquivo, adicione:
auth required pam_google_authenticator.so
Para ativar a autenticação OTP:
$ sudo nano /etc/ssh/sshd_config
Encontre a linha com a frase: ChallengeResponseAuthentication
e altere de "não" para "sim".
Defina PermitRootLogin no
e PasswordAuthentication no
.
No final do arquivo, use o parâmetro "match" para determinar quais mecanismos de autenticação devem ser usados para acessar a máquina a partir dessa porta, por exemplo:
Match LocalPort 22
PasswordAuthentication no
AuthenticationMethods publickey
PubKeyAuthentication yes
Match LocalPort 60000
AuthenticationMethods keyboard-interactive:pam
O parâmetro "keyboard-interactive: pam" força o daemon SSH a ir para o daemon de módulo PAM (configurado em /etc/pam.d/sshd
) e autenticar conforme especificado lá (daí a necessidade de desabilitar o login de senha do módulo PAM também, fazendo o hash da linha common-auth
).
Não se esqueça de reiniciar seu daemon SSH para que as alterações entrem em vigor:
$ sudo /etc/init.d/sshd restart
Então, quando estiver em uma máquina não confiável, simplesmente conecte o SSH na porta 60000 (ou o que quer que você tenha configurado) e use a OTP para autenticar.