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.


Image Placeholder


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.
Image Placeholder
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.

Image Placeholder
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.

Image Placeholder
Image Placeholder
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.


Image Placeholder
Fig. 5 - System: Access: Users




Image Placeholder
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.


Image Placeholder
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.


Image Placeholder
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!