Pesquisa de site

Como configurar a autenticação de dois fatores para SSH no Linux


Por padrão, o SSH já usa comunicação de dados segura entre máquinas remotas, mas se você quiser adicionar alguma camada de segurança extra às suas conexões SSH, você pode adicionar um Google Authenticator (< Strong>autenticação de dois fatores) que permite inserir um código de verificação aleatório de senha única (TOTP) ao se conectar a servidores SSH. Você terá que inserir o código de verificação do seu smartphone ou PC ao se conectar.

O Google Authenticator é um módulo de código aberto que inclui implementações de tokens de verificação de senhas únicas (TOTP) desenvolvidos pelo Google.

Suporta diversas plataformas móveis, bem como PAM (Pluggable Authentication Module). Essas senhas únicas são geradas usando padrões abertos criados pela OATH Iniciativa para Autenticação Aberta).

Neste artigo, mostrarei como configurar SSH para autenticação de dois fatores em distribuições Linux baseadas em RedHat e Debian, como Fedora, CentOS Stream, Rocky Linux e AlmaLinux, Ubuntu, Debian e Mint.

Instalando o Google Authenticator no Linux

Abra a máquina na qual deseja configurar a autenticação de dois fatores e instale as seguintes bibliotecas PAM junto com as bibliotecas de desenvolvimento necessárias para que o módulo PAM funcione corretamente com o PAM. módulo forte>autenticador do Google.

Em sistemas baseados em RedHat, instale o pacote ‘pam-devel’ usando o seguinte comando yum.

yum install google-authenticator -y

Em sistemas baseados em Debian, instale o pacote ‘libpam0g-dev’ usando o seguinte comando apt.

sudo apt install libpam-google-authenticator -y

Gerar tokens de autenticação do Google

Depois de executar o comando ‘google-authenticator’, ele fará uma série de perguntas.

google-authenticator

Basta digitar “y” (sim) como resposta na maioria das situações. Se algo der errado, você pode digitar novamente o comando ‘google-authenticator’ para redefinir as configurações.

  • Você deseja que os tokens de autenticação sejam baseados em tempo (s/n) y

Após esta pergunta, você receberá sua ‘chave secreta’ e ‘códigos de emergência‘. Anote esses detalhes em algum lugar, precisaremos da 'chave secreta' mais tarde para configurar o aplicativo Google Authenticator.

google-authenticator

Do you want authentication tokens to be time-based (y/n) y
Warning: pasting the following URL into your browser exposes the OTP secret to Google:
  https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@tecmint%3Fsecret%3DCYZF2YF7HFGX55ZEPQYLHOO5JM%26issuer%3Dtecmint
Failed to use libqrencode to show QR code visually for scanning.
Consider typing the OTP secret into your app manually.
Your new secret key is: CYZF2YF7HFGX55ZEPQYLHOM
Enter code from app (-1 to skip): -1 Code confirmation skipped Your emergency scratch codes are: 83714291 53083200 80975623 57217008 77496339

Em seguida, siga o assistente de configuração e na maioria dos casos digite a resposta como “y” (sim) conforme mostrado abaixo.

Do you want me to update your "/root/.google_authenticator" file (y/n) y Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so (y/n) y If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting (y/n) y

Configurando SSH para usar o Google Authenticator no Linux

Abra o arquivo de configuração PAM/etc/pam.d/sshd‘ e adicione a seguinte linha ao final do arquivo.

auth required pam_google_authenticator.so nullok
auth required pam_permit.so

Em seguida, abra o arquivo de configuração SSH/etc/ssh/sshd_config‘ e role para baixo para encontrar a linha que diz.

ChallengeResponseAuthentication no

Mude para “sim“. Então, fica assim.

ChallengeResponseAuthentication yes

Por fim, reinicie o serviço SSH para realizar novas alterações.

systemctl restart sshd
Or
sudo systemctl restart sshd

Configurando o aplicativo Google Authenticator

Inicie o aplicativo Google Authenticator em seu smartphone. Pressione + e escolha “Insira uma chave de configuração“. Se você não tiver esse aplicativo, poderá baixar e instalar o aplicativo Google Authenticator em seus dispositivos Android/iPhone/Blackberry.

Adicione o 'Nome' da sua conta e insira a 'chave secreta' gerada anteriormente.

Ele gerará uma senha de uso único (código de verificação) que mudará constantemente a cada 30 segundos no seu telefone.

Agora tente fazer login via SSH, você será solicitado a fornecer um código do Google Authenticator (código de verificação) e uma senha > sempre que você tentar fazer login via SSH. Você tem apenas 30 segundos para inserir este código de verificação. Se você errar, um novo código de verificação será gerado novamente.

login as: tecmint
Access denied
Using keyboard-interactive authentication.
Verification code:
Using keyboard-interactive authentication.
Password:
Last login: Tue Apr 23 13:58:29 2022 from 172.16.25.125
[root@tecmint ~]#

Se você não possui um smartphone, também pode usar um complemento do Firefox chamado Authenticator para fazer a autenticação de dois fatores.

Importante: a autenticação de dois fatores funciona com login SSH baseado em senha. Se você estiver usando qualquer sessão SSH de chave privada/pública, ela ignorará a autenticação de dois fatores e fará login diretamente.