Nesta simples dica, mostrarei como integrar o sistema de autenticação do Google (Google Authenticator) com o SSH server, ativando assim, a autenticação de dois fatores (two factor authentication).
Requerimentos e instalação inicial
Antes de mais nada, estou usando, como distribuição
GNU/Linux, o
Ubuntu 13.10.
Os requerimentos para esse tutorial, são:
SSH server :: se você quer ter suporte ao Google Authenticator + chaves públicas, você vai precisar ter uma versão do SSH server, igual ou maior que 6.2 (não será abordado neste tutorial).
libpam-google-authenticator :: Instalado no servidor servidor SSH. Para instalar no Ubuntu:
# apt-get install libpam-google-authenticator
Um celular com o
APP Google Authenticator instalado e configurado. Neste tutorial, eu usei um celular com Android, porém, existem versões para iOS e BlackBerry.
Acesse este
link para instalar em um Android.
Configuração
Configurando o Google Authenticator - Acesse o servidor com o SSH server e com o usuário que você deseja configurar o Google Authenticator. Execute o google-authenticator.
Uma série de perguntas serão exibidas, insira
y (sim) para elas. Será informado também um QR code, uma chave secreta, um código de verificação e alguns números de emergência.
Guarde-os com segurança, você vai precisar deles adiante:
google-authenticator
Do you want authentication tokens to be time-based (y/n) y
Your new secret key is: xxxxxxxxxxxxxxxxxxxxx
Your verification code is xxxxxxxxxxxx
Your emergency scratch codes are:
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
Adicionando a Secret Key no Google Authenticator do celular:
- Acesse o APP do Google Authenticator no celular. No meu caso, um Android;
- Clique nos três pontinhos no canto superior e selecione: Adicionar Conta
- Selecione: Ler um código de barras
- Aponte para o QR code gerado ao executar o google-authenticator anteriormente
- Ou selecione: Digital chave fornecida e entre com a secret key e um nome para a conta.
Se tudo ocorrer corretamente, a chave foi instalada no Google Authenticator e deve aparecer no menu principal do aplicativo.
Ativando o Google Authenticator no SSH - Com o usuário root, acesse o
/etc/pam.d/sshd e adicione a seguinte linha ao final do arquivo:
auth required pam_google_authenticator.so
Salve e feche. Agora, abra o
/etc/ssh/sshd_config e procure pelo
ChallengeResponseAuthentication e troque "
no" por "
yes":
ChallengeResponseAuthentication yes
Salve o arquivo e feche. Agora, você precisará reiniciar o SSH server.
Mas, cuidado!!! Qualquer problema ou erro, pode deixá-lo inacessível remotamente. Eu aconselho a deixar uma sessão ativa com o usuário root em outro terminal para evitar qualquer problema.
# service ssh restart
ssh stop/waiting
ssh start/running, process xxxxx
Pronto. Se tudo ocorrer corretamente, basta conectar-se ao servidor SSH e, conectar-se, será solicitado o código de verificação. Você deve pegar esse código no Google Authenticator, no aplicativo instalado em seu celular.
Será solicitado a senha do usuário e, na sequência, o código de verificação do Google Authenticator. Assim, como um token usado em bancos, este código expira, ele só dura alguns segundos.
ssh ubuntu@xxxxxx.xxxxxx.xxxxx.xxxxx
Password:
Verification code:
Welcome to Ubuntu
ubuntu@mx:~$
Você deve inserir o código gerado no aplicativo do seu celular no
Verification code.
Enjoy.