OpenVPN - Ativar fator duplo de autenticação

Introdução

Este tutorial mostra como configurar One-time Password com duplo fator de segurança (2FA) usando OPNsense e o autenticador do Google (Google Authenticator), localmente (Local Database) ou com usuários de um Microsoft AD. Todos os serviços do OPNsense podem ser usados com esta solução 2FA.



Fig. 1 ref.: https://docs.opnsense.org/_images/two_factor_authentication.png


Nota:
Para usar o mesmo recurso com qualquer token de senha de uso único baseado em tempo, basta inserir a seed no campo na etapa 3 em vez de criar uma nova seed. A seed precisa estar no formato base32.

Passo 1 - Adicionar um novo Servidor de Autenticação


Para adicionar um TOTP server vá em System ‣ Access ‣ Servers e pressione em Add server no canto superior direito. Em seguida, preencha o formulário da seguinte forma:

  • Descriptive name - TOTP Server ---- Escolha um nome para o server

  • Type - Local+Timebased One Time Password ---- Selecione o tipo do TOTP

  • Token length - 6 ---- Deixe em "6" para uso em Google Authenticator

  • Time window - "vazio" ---- Deixe vazio para uso em Google Authenticator

  • Grace period - "vazio" ---- Deixe vazio para uso em Google Authenticator


Usando 2FA com Autenticação via Microsoft AD:

Caso queira que o 2FA funcione juntamente com autenticação via Microsoft AD, siga os passos abaixo:

  • Escolher o tipo “LDAP + Timebased One Time Password”;
  • Hostname os IP address: Insira o IP do servidor AD; Exemplo:  172.16.1.11
  • Bind Credencials: Insira um usuário válido no AD, o qual tenha permissões de leitura nos grupos que desejar. -
  • Base DN: Caminho do AD - dc=seudominio (nome curto),dc=local (ou extensão de seu domínio)
  • Authentication containers: Selecione os locais permitidos onde este novo server irá consultar as autenticações.
  • Extended Query: pode ser usada para selecionar usuários que são membros de um grupo específico do Active Dirtectory. Pode-se usar algo como:  (memberOf = CN = meuGrupo, CN = Usuários, DC = opnsense, DC = local) para selecionar apenas membros do grupo “meuGrupo”. É muito usado para limitar acessos, por exemplo, usuários de OpenVPN.

Fig. 2 - System: Access: Server

Passo 2 - Instale o Google Authenticator

Vá para a loja de aplicativos de seu smartphone e pesquise por "Google Authenticator". Instale usando o procedimento normal para o seu dispositivo.


Passo 3 - Adicionar ou Modificar o Usuário

Para este exemplo, vamos criar um novo usuário, vá para System ‣ Access ‣ Users e clique no sinal de mais (+) no canto superior direito.



Fig. 3 - System: Access: Users


Digite um nome de usuário e senha e preencha os outros campos da mesma forma que faria para qualquer outro usuário. Em seguida, selecione Gerar nova chave (Generate new (160bit) secret) em OTP seed.


Fig. 4 - System: Access: Users


Quando terminar, pressione Salvar.

Passo 4 - Ativar o Autenticador para este OTP Seed

Para ativar o seu novo OTP Seed no Google Authenticator, primeiro reabra seu usuário que acabou de criar clicando no ícone de lápis.


Fig. 5 - System: Access: Users



Fig. 6 - System: Access: Users


Nota

Tenha muito cuidado com a SEED ou código QR, pois isso é a única coisa que você precisa para calcular o token. MANTENHA SUA SEED e seu CÓDIGO QR SEGURO!


Agora abra seu aplicativo compatível com o Google Authenticator e selecione a opção para iniciar a configuração e, em seguida, digitalize o código QR ou, alternativamente, insira a semente diretamente.

Quando o código QR é lido, uma nova visualização é aberta, onde você pode ver os detalhes do resultado. Esta visualização pode ser usada para verificar se a chave gerada e as configurações OTP dos resultados da verificação correspondem às suas configurações. Confirme se está tudo bem clicando em “Adicionar”.

Após essa etapa, você estará de volta à tela inicial do aplicativo e receberá um Token, que a cada 30 segundos será alterado.


Fig. 8 - Google Authenticator


Passo 5 - Testando o Token

Para testar a autenticação do usuário, o OPNSense oferece um testador simples. Vá em System ‣ Access ‣ Tester

Selecione o servidor de autenticação que você configurou e digite o nome do usuário. Em seguida, digite "* token + senha", lembre-se que o correto é digitar o token e a senha no mesmo campo.


Fig. 8 - System: Access: Tester


Nota

Quando usada a configuração padrão, o preenchimento do campo Password deverá ser na sequência “token” e em seguida sua senha, exemplo: 123456PASSWORD . Aperte o botão de teste e se tudo correr bem, você verá que foi autenticado com sucesso.

Obs.: O servidor de autenticação OTP também pode ser configurado para tê-lo na ordem reversa, como PASSWORD123456. Basta marcar a opção “Reverse Token Order” em Server (Passo 1).


Passo 6 - Habilitando o Authentication Server

Por padrão, o sistema valida as credenciais do usuário no Local Database (Banco de dados local). Em System ‣ Settings ‣ Administration, seção Authentication, você deve alterar para o servidor de autenticação recém-adicionado para garantir que nenhum usuário local possa obter acesso sem 2FA.

Observações:

Nota
Certifique-se de testar seu token! Cuidado ao alterar a autenticação para somente acesso via AD, retirando a autenticação Local (Local Database). Tenha certeza que seu usuário LDAP esteja validando corretamente antes desta alteração. Na dúvida, mantenha marcado "Local Database" juntamente com o server recém-criado, até realizar os devidos testes como usuário com 2FA.

Fig. 9

Passo 7 - Usando o token

Para usar o token em qualquer aplicativo ou serviço que você tenha configurado, basta abrir o Google Authenticator e adicionar o token ou a chave, criada anteriormente, e sua senha.

Nota: Nunca forneça eseu token a ninguém,

Lembre-se de que você precisa inserir o token antes ou depois da senha (dependendo da configuração). O campo de senha deve ser usado para inserir o token e sua senha, por exemplo: Senha: 123456PASSWORD

O código mudará a cada 30 segundos.

Imagem de exemplo:


Fig. 10



Agora você poderá utilizar sua OpenVPN com duplo fator de autenticação!