Ativar MFA no SSH do seu Kali

Passo 1 — Instalando o PAM do Google

Neste passo, vamos instalar e configurar o PAM do Google.

PAM, que significa Pluggable Authentication Module, é uma infraestrutura de autenticação usada em sistemas Linux para autenticar um usuário. Como o Google criou um aplicativo OATH-TOTP, eles também fizeram um PAM que gera TOTPs e é totalmente compatível com qualquer aplicativo OATH-TOTP, como Google Authenticator ou MS Authenticator.

Primeiro, atualize o cache do repositório do Kali:

┌──(kali㉿kali)-[~]
└─$ sudo apt update

Em seguida, instale o PAM.

┌──(kali㉿kali)-[~]
└─$ sudo apt install libpam-google-authenticator -y

Com o PAM instalado, usaremos um aplicativo auxiliar que vem com o PAM para gerar uma chave TOTP para o usuário que você deseja adicionar um segundo fator. Essa chave é gerada para cada usuário individualmente, não para o sistema inteiro. Isso significa que cada usuário que deseja usar um aplicativo de autenticação TOTP precisará fazer login e executar o aplicativo auxiliar para obter sua própria chave; você não pode simplesmente executá-lo uma vez para ativá-lo para todos (mas há algumas dicas no final deste tutorial para configurar ou exigir MFA para muitos usuários).

Execute o aplicativo de inicialização.

┌──(kali㉿kali)-[~]
└─$ google-authenticator

Depois de executar o comando, você será perguntado sobre algumas questões. A primeira pergunta é se os tokens de autenticação devem ser baseados em tempo.

Este PAM permite tokens baseados em tempo ou sequenciais. Usar tokens sequenciais significa que o código começa em um ponto específico e, em seguida, incrementa o código após cada uso. Usar tokens baseados em tempo significa que o código muda aleatoriamente após um determinado tempo. Vamos optar pelos tokens baseados em tempo porque é o que aplicativos como Google Authenticator esperam, então responda y para sim.

Depois de responder a esta pergunta, muita saída rolará pela tela, incluindo um grande código QR. Neste ponto, use seu aplicativo de autenticação no celular para escanear o código QR ou digite manualmente a chave secreta. Se o código QR for muito grande para escanear, você pode usar a URL acima do código QR para obter uma versão menor. Uma vez adicionado, você verá um código de seis dígitos que muda a cada 30 segundos no seu aplicativo.

Observação: Certifique-se de registrar a chave secreta, o código de verificação e os códigos de recuperação em um lugar seguro, como um gerenciador de senhas. Os códigos de recuperação são a única maneira de recuperar o acesso se você, por exemplo, perder o acesso ao seu aplicativo TOTP.

Adicione a nova conta ao seu app, eu usarei o Microsoft Authenticator:

Enter code from app (-1 to skip): 704054

Nesta pergunta você irá preencher com o código gerado no Authenticator e em seguida ele irá retornar seus códigos de backup, salve-os em um lugar seguro:

Do you want me to update your "/home/kali/.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, a new token is generated every 30 seconds by the mobile app.
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. This allows for a
time skew of up to 30 seconds between authentication server and client. If you
experience problems with poor time synchronization, you can increase the window
from its default size of 3 permitted codes (one previous code, the current
code, the next code) to 17 permitted codes (the 8 previous codes, the current
code, and the 8 next codes). This will permit for a time skew of up to 4 minutes
between client and server.
Do you want to do so? (y/n)
n
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

Observação: depois de concluir esta configuração, se quiser fazer backup da sua chave secreta, você pode copiar o arquivo ~/.google-authenticator para um local confiável. De lá, você pode implantá-lo em sistemas adicionais ou reimplantá-lo após um backup.

Passo 2 — Configurando o OpenSSH

Para começar, abra o arquivo de configuração sshd para edição usando o nano ou seu editor de texto favorito.

┌──(kali㉿kali)-[~]
└─$ sudo nano /etc/pam.d/sshd

Adicione essa linha ao final do arquivo:

auth required pam_google_authenticator.so 

Em seguida, configuraremos o SSH para suportar esse tipo de autenticação. Abra o arquivo de configuração do SSH para edição.

┌──(kali㉿kali)-[~]
└─$ sudo nano /etc/ssh/sshd_config

Procure por esse comando, se não existir adicione:

ChallengeResponseAuthentication yes

Depois disso reinicie o serviço do ssh e o MFA já estará funcionando

┌──(kali㉿kali)-[~]
└─$ sudo systemctl restart ssh

Perceba que após a linha Password, existe a Verification code, que é o código gerado pelo Authenticator no celular.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *