Como configurar a autenticação de dois fatores para SSH no Linux
Secure Shell, ou SSH, é um protocolo de rede criptográfico que permite o acesso seguro a dispositivos em uma rede não segura. Ele encontra seus aplicativos em vários casos de uso, como login remoto, acesso remoto à linha de comando e execução remota de comando.
Se você usou SSH, já sabe que ele usa um mecanismo de autenticação de fator único que requer uma chave SSH ou uma senha para autenticação. Embora isso possa não parecer alarmante no início, ele deixa o sistema exposto a várias vulnerabilidades abertas.
Portanto, é frequentemente recomendado habilitar a autenticação de dois fatores (2FA) para SSH para fortalecer sua segurança. Neste artigo, discutiremos a autenticação de dois fatores em detalhes, junto com um guia abrangente sobre como habilitar 2FA para SSH.
O que é autenticação de dois fatores?
A autenticação de dois fatores , ou 2FA, é uma forma de mecanismo de autenticação multifator (MFA) que requer um segundo fator de autenticação, além do primeiro fator, para autenticar seu login e proteger sua conta de acesso não autorizado.
Você pode pensar em 2FA como um código de verificação gerado por um aplicativo gerador de código ou um gerador de token de hardware, que você precisa fornecer no momento do login, após inserir sua senha, para acessar sua conta.
Ao se inscrever para uma conta em qualquer serviço online, você cria uma senha para protegê-lo. Essa senha atua como seu primeiro fator de autenticação e é exigida pelo serviço para autenticá-lo sempre que você efetuar login em sua conta.
Por que você deve habilitar 2FA para SSH?
SSH , por padrão, autentica você com uma chave pública ou uma senha antes de estabelecer uma conexão entre você e o outro dispositivo / servidor.
Em geral, essa configuração funciona perfeitamente bem e você pode se safar na maioria dos casos. No entanto, quando você se conectar a um dispositivo / servidor que contém informações confidenciais ou pessoais por meio de SSH, você precisará de uma camada extra de proteção nesse sistema.
Uma maneira de fazer isso é habilitar a autenticação de dois fatores no computador servidor / host, que protege seu acesso por SSH e requer um segundo fator de autenticação para autenticar o login do cliente.
Como resultado, mesmo que alguém consiga obter a senha do cliente / host, ele ainda não poderá acessar o sistema por SSH, a menos que também forneça o código 2FA.
Como configurar 2FA para SSH no Linux
Instalar e executar 2FA para SSH no Linux envolve uma série de etapas. Aqui está uma análise de cada etapa para guiá-lo durante o processo.
Pré-requisitos
Nem é preciso dizer que você precisa de um programa de servidor SSH instalado no sistema no qual deseja habilitar o 2FA. Para verificar isso, abra o terminal e digite:
ssh -V
Se você tiver um servidor SSH instalado, vá para a próxima etapa. Caso contrário, digite o seguinte comando para instalá-lo:
sudo apt install openssh-server
Assim que a instalação for concluída, verifique se o SSH está habilitado no sistema. Para fazer isso, digite:
sudo systemctl status ssh
Se o seu status refletir Ativo: ativo (em execução) , você pode prosseguir. Mas, caso mostre o contrário, digite o seguinte comando:
sudo systemctl enable ssh
Em alguns casos, a configuração do firewall pode interferir no SSH e pode ser necessário emitir o comando fornecido a seguir para habilitar o servidor SSH em seu sistema.
sudo ufw allow ssh
Etapa 1: Instalação do PAM do Google Authenticator
Com o servidor OpenSSH instalado e funcionando em sua máquina host, a primeira coisa que você precisa fazer é instalar um Módulo de Autenticação Pluggable (PAM), que oferece a infraestrutura necessária para integrar a autenticação multifator para SSH no Linux.
O PAM do Google Authenticator é a escolha mais popular a esse respeito, pois é mais fácil de implementar e usar do que alguns dos outros módulos de autenticação. Ele oferece toda a infraestrutura necessária para autenticar usuários usando códigos de senha única baseada em tempo (TOTP) e possui aplicativos geradores de código disponíveis para Android e iOS.
Para instalar o PAM do Google Authenticator, abra uma janela de terminal e execute o seguinte comando:
sudo apt install libpam-google-authenticator
Digite y no prompt de instalação para confirmar o processo.
Etapa 2: Configurando SSH
Com o Google Authenticator PAM agora instalado em seu sistema, é hora de fazer o SSH usar este módulo para autenticação. Para isso, você precisa editar alguns arquivos de configuração.
Recomendamos fazer um backup desses arquivos para evitar problemas se algo der errado durante o processo. Uma vez feito isso, continue com as seguintes etapas:
- Abra o arquivo de configuração do PAM usando o nano . Sinta-se à vontade para usar qualquer outro editor de texto Linux .
sudo nano /etc/pam.d/sshd
- Acrescente a seguinte linha ao arquivo.
auth required pam_google_authenticator.so
- Salve e saia da janela de edição de arquivo.
- Reinicie o serviço sshd usando systemctl.
sudo systemctl restart sshd.service
Em seguida, edite o arquivo de configuração SSH, que é responsável pela configuração SSH.
- Abra o arquivo usando o nano.
sudo nano /etc/ssh/sshd_config
- Nesse arquivo, encontre a linha ChallengeResonseAuthentication no e altere seu status de " não " para " sim ". Isso instruirá o SSH a solicitar um código de autenticação sempre que alguém tentar fazer login no sistema.
- Salve o arquivo e reinicie o daemon SSH.
sudo systemctl restart sshd.service
Etapa 3: Configurando o Autenticador no Linux
Agora que instalou e configurou o SSH, você precisa configurar o Google Authenticator para gerar códigos TOTP.
Para isso, abra o terminal e inicie o Google Authenticator com o seguinte comando:
google-authenticator
O Google Authenticator apresentará agora uma série de perguntas. Responda a essas perguntas com um sim ( y ) ou não ( n ). Para a maioria das perguntas, a resposta padrão é sim, a menos que você escolha uma opção não padrão.
Aqui está uma lista de perguntas, em forma abreviada, que o aplicativo irá fazer a você:
- Faça tokens de autenticação com base no tempo (y / n): y
- Atualize seu arquivo " ~ / .google_authenticator " (s / n): y
- Proibir múltiplos usos do mesmo token de autenticação ?: y
- Aumente a frequência de geração de código (s / n): n
- Habilitar limitação de taxa (y / n): y
Etapa 4: configurar o autenticador no telefone
Assim que você responder à primeira pergunta do Google Authentication com um sim, o PAM do Google irá gerar um código QR em sua tela junto com uma chave secreta e alguns códigos de recuperação. Siga as etapas abaixo para registrar o Google Authenticator em seu telefone.
Mas primeiro, você precisa baixar o aplicativo Google Authenticator em seu smartphone.
Download: Google Authenticator para Android | iOS (grátis)
- Clique no sinal de adição ( + ) e selecione Ler um código nas opções do menu.
- Aponte a câmera do dispositivo para o código QR na tela do computador para criar automaticamente uma entrada no aplicativo.
- Como alternativa, selecione Inserir uma chave de configuração no menu Mais (+) e preencha as entradas necessárias. Para isso, primeiro dê um nome à sua entrada – deve ser algo que você possa reconhecer facilmente – e, em seguida, digite a chave secreta exibida abaixo do código QR em sua tela.
- Finalmente, toque em Adicionar para salvar a entrada.
Como medida de precaução, copie todos os códigos de recuperação exibidos abaixo do código QR e salve-os em um local seguro. Você pode precisar deles se não conseguir acessar o Google Authenticator em seu telefone ou perder o acesso.
Protegendo o acesso SSH no Linux com 2FA
Se você seguiu as instruções acima corretamente, deve ter a autenticação de dois fatores para SSH habilitada em seu sistema Linux.
Agora, toda vez que você quiser acessar este servidor / dispositivo por SSH, você precisará, primeiro, inserir a senha SSH (primeiro fator) e, posteriormente, inserir o código TOTP (segundo fator) do aplicativo Google Authenticator para autenticar seu Conecte-se. Esta é uma ótima maneira de gerenciar e proteger seus logins SSH remotos contra invasores na Internet.