Neste tutorial, irei guiar passo a passo como configurar uma autenticação dois factores no Ubuntu. Para esta autenticação dois factores iremos utilizar o Google Authenticator.
Regra geral, todos os servidores que faço gestão têm dupla autenticação, pela chave SSH e por dois factores. Uso chaves no mac pessoal para não estar sempre a colocar passwords, e sempre que preciso aceder, quer pelo telemóvel, quer pc externo, utilizo dois factores. Desta forma, aumento em grande escala a segurança dos servidores que faço gestão.
É necessário ter muito cuidado ao seguir este tutorial. Utilizei a versão 22.04 LTS do Ubuntu. Basta um comando “ao lado”, ou simplesmente um typo a escrever e podemos perder o acesso ao servidor. Das duas uma, ou se garante um snapshot de forma a voltar atrás no tempo ou garantimos a existência de um reboot em modo rescue.
Atualização sistema operativo
Para este tutorial foi utilizada a versão Ubuntu 22.04.3 LTS
Primeiro passo para tudo correr bem é ter a certeza que o nosso sistema operativo está actualizado.
Caso o utilizador root não seja um sudoer, podemos invocar -i para fazer login com o root.
sudo -i
Depois basta atualizar o nosso apt e de seguida realizar upgrade a todos os pacotes que estejam por atualizar.
apt update
apt upgrade
Instalação Google Authenticator
Agora vamos instalar o Google Authenticator
apt install libpam-google-authenticator
Alteração ficheiro /etc/pam.d/sshd
Dentro do ficheiro de configuração do PAM precisamos de adicionar o Google Authenticator e desactivar o common-auth:
nano /etc/pam.d/sshd
Adicionar a linha no final do ficheiro:
auth required pam_google_authenticator.so nullok
E comentar o include do common-auth
# Standard Un*x authentication.
# @include common-auth
Agora basta salvar e fechar o ficheiro e reiniciar o serviço de ssh:
service sshd restart
Alteração ficheiro /etc/ssh/sshd_config
No ficheiro sshd_config vamos ter de activar o Challenge Response. Irá ser preciso colocar a yes o KbdInteractiveAuthentication e o ChallengeResponseAuthentication.
nano /etc/ssh/sshd_config
Basta trocar o no para yes no KbdInteractiveAuthentication
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
KbdInteractiveAuthentication yes
E adicionar a nova linha (pode ser em qualquer sítio do ficheiro)
ChallengeResponseAuthentication yes
Fechamos o ficheiro e fazemos restart no sshd.
service sshd restart
Setup do Google Authenticator
Basta correr o software com o seguinte comando:
google-authenticator
Ao entrar neste setup modo wizard, vamos ser guiados com várias questões. Aqui fica a recomendação:
- Make tokens “time-base””: yes
- Update the .google_authenticator file: yes
- Disallow multiple uses: yes
- Increase the original generation time limit: no
- Enable rate-limiting: yes
Depois de adicionar o QR Code à nossa aplicação do telemóvel, colocamos o código gerado no momento. (cada código é válido por 30 segundos).
Convém guardar estas chaves de emergência. Aconselho não tirarem uma fotografia com o telemóvel nem a guardar no ambiente de trabalho do pc, mas sim num caderno, fora do mundo “virtual”. Caso vos roubem informação ou até mesmo o pc, nunca irão conseguir aceder a estas chaves de backup.
Teste final:
Depois de tudo configurado, podemos abrir um terminal e testar a nossa ligação. Invocamos o comando ssh, passamos o utilizador que queremos ligar e o seu ip. Se tudo estiver bem configurado, assim que a ligação for estabelecida irá ser pedido não a password mas sim um verification code.
ssh root@ssh-your-server-ip