Ir para o conteúdo

VPN SSL (Road Warrior) com OpenVPN

Introdução

O acesso remoto via VPN SSL é um dos cenários mais comuns em ambientes corporativos.
Ele precisa ser simples para o usuário e, ao mesmo tempo, seguro e rastreável para a equipe de TI.

Este procedimento descreve uma configuração completa e pronta para produção no OPNsense, incluindo AD + MFA, chave TLS, certificados e regras por grupo.
O objetivo é permitir que usuários remotos acessem a rede interna com o menor privilégio possível.

Cenário e pré-requisitos

  • OPNsense instalado e com acesso à Internet.
  • Servidor Active Directory (Windows Server) acessível pelo firewall.
  • Aplicativo de token (ex.: Google Authenticator, FreeOTP).
  • Redes de exemplo:
  • LAN: 192.168.1.0/24
  • Túnel VPN: 10.0.8.0/24

Grupos no AD

Crie os grupos abaixo no AD (e mantenha o mesmo nome no firewall):

Grupo Finalidade
SSLVPN Usuários com acesso remoto padrão
SSLVPN-TI Usuários de TI com acesso amplo na rede

Importante

Os grupos precisam existir no AD e no firewall para que o OPNsense sincronize as permissões.

Conceitos Fundamentais

Autenticação e MFA

A autenticação é feita por login/senha do AD e token TOTP.
O certificado de cliente será compartilhado (um para todos usuários), servindo apenas como camada extra contra tentativas de acesso indevidas.

Componentes de segurança

  • CA para emitir certificados.
  • Certificado de servidor para o túnel OpenVPN.
  • Certificado de cliente (genérico).
  • Chave TLS estática para proteger o canal de controle/autenticação da VPN.

Integração com Active Directory + TOTP

Menu: System → Access → Servers

  1. Adicione um servidor de autenticação do tipo LDAP + TOTP.
  2. Preencha:
  3. Hostname/IP do AD
  4. Porta 389 (LDAP simples)
  5. Versão LDAP 3
  6. Usuário de bind (DN completo) e senha
  7. Base DN (ex.: DC=Citrait,DC=corp)
  8. Selecione o template Microsoft AD.
  9. Marque:
  10. Read user properties
  11. Create user on first login
  12. Synchronize groups
  13. Ajuste o token para 6 dígitos.
  14. Configure para solicitar senha + token (token depois da senha).

Constraint Groups

Se os grupos do AD não aparecem no teste de autenticação, desmarque a opção de Constraint Groups.

Criando os grupos no firewall

Menu: System → Access → Groups

Crie os grupos SSLVPN e SSLVPN-TI no firewall.
Não associe usuários manualmente — o login pelo AD fará a associação automática.

Certificados e chave TLS

Menu: System → Trust → Authorities

  1. Crie uma CA com validade longa (ex.: 10 anos).

Menu: System → Trust → Certificates

  1. Emita um certificado de servidor (tipo server).
  2. Emita um certificado de cliente (tipo client).

Menu: VPN → OpenVPN → Static Keys

  1. Gere uma chave TLS estática (ex.: SSLVPN_TLS).

Configurando a instância OpenVPN

Menu: VPN → OpenVPN → Servers

  1. Protocolo: UDP
  2. Porta: 1194
  3. Tunnel network: 10.0.8.0/24
  4. Local network: 192.168.1.0/24
  5. Certificado: certificado de servidor
  6. TLS static key: chave TLS estática
  7. Authentication: servidor AD + TOTP
  8. Enforce local group: SSLVPN
  9. Renegotiate time: 86400 (24h)
  10. Marque a opção advanced mode e preencha:
    • Usar login do usuário ao invés do certificado
    • Keep alive interval: 10
    • Keep alive timeout: 60
    • Marque Username as CN

Opções de DNS (push)

No campo Push Options selecione push register-dns.

Inclua as opções abaixo para resolver nomes internos:

  • Marque Register DNS
  • DNS Server: 10.0.8.1 (IP do firewall no túnel) ou IP do AD
  • DNS Domain list: citrait.corp
  • Search Domain: citrait.corp

Registro do DNS

O cliente VPN recebe o sufixo de domínio e consegue acessar \\fileserver sem precisar usar o FQDN.

Regras de firewall

Liberar conexão externa

Menu: Firewall → Rules → WAN

  • Permitir UDP/1194 de any para This Firewall

Regras dentro do túnel

Menu: Firewall → Rules → OpenVPN

Inicialmente, crie uma regra ampla para validar a conexão.
Depois, substitua por regras segmentadas (ver seção de aliases).

Exportando e importando o cliente

Menu: VPN → OpenVPN → Client Export

  1. Export type: File only.
  2. Hostname: IP público ou DDNS.
  3. Habilite OTP (token em campo separado).
  4. Custom options:
  5. ping 10
  6. ping-restart 60
  7. dhcp-option ADAPTER_DOMAIN_SUFFIX citrait.corp
  8. Baixe o certificado clicando na nuvem ao lado de SSLVPN (cliente).

Cliente recomendado

Utilize o OpenVPN Connect (cliente mais novo), disponível em https://openvpn.net/client/.
Importe o arquivo e altere o nome do perfil de forma mais amigável para o usuário. Opcionalmente já deixe preenchido o login para o usuário.

Registro do token (TOTP)

Para gerar o QR Code do usuário:

  1. No firewall crie um usuário local com o mesmo login do AD. Não precisa preencher a senha, mas tem de marcar Scrambled password.
  2. Gere o OTP seed e compartilhe o QR Code com o usuário.
  3. No primeiro login na VPN, o OPNsense sincroniza os grupos do AD.

Dica

Se o usuário falhar no login, valide em System → Access → Tester se a autenticação está OK e se os grupos do AD estão sendo retornados.

Segmentação por grupo (aliases + regras)

Aliases

Menu: Firewall → Aliases

Crie dois aliases do tipo OpenVPN Group:

Alias Grupo AD
SSLVPN SSLVPN
SSLVPN_TI SSLVPN-TI

Regras no túnel

Menu: Firewall → Rules → OpenVPN

  1. DNS interno (para todos):

    • Protocol: UDP
    • Destination: This Firewall
    • Destination Port: 53
  2. File server (usuários comuns):

    • Source: SSLVPN
    • Destination: IP_FILESERVER
    • Destination Port: 445
    • Log: Marcar
  3. Acesso amplo (TI):

    • Source: SSLVPN_TI
    • Destination: any
    • Protocol: any
    • Log: Marcar
  4. Bloqueio final (opcional, com log):

    • Action: Block
    • Source: any
    • Destination: any

Validação no cliente

  • ipconfig deve mostrar IP no túnel (10.0.8.x) e sufixo DNS.
  • ping 10.0.8.1 (firewall) e ping 192.168.1.10 (AD).
  • nslookup srvad e acesso a \\fileserver.
  • Conexão RDP deve abrir apenas com usuário do grupo TI.
  • Verifique logs em Firewall → Log Files → Live View.

Observações Importantes

  • Sem grupos sincronizados, o filtro por permissão não funciona.
  • O campo Local network define as rotas que o cliente recebe.
  • A chave TLS + protocolo UDP impede varreduras simples na porta da VPN.
  • A ordem das regras no túnel impacta o acesso do usuário.

Boas Práticas

  • Use MFA obrigatório para todos os acessos remotos.
  • Mantenha logs apenas nas regras críticas.
  • Revise periodicamente usuários e grupos com acesso VPN.
  • Utilize DDNS se o IP público for dinâmico.
  • Considere restrições por horário e geolocalização em ambientes sensíveis.

Conclusão

Com AD + MFA, certificados, chave TLS e regras por grupo, a VPN SSL do OPNsense fica segura, escalável e fácil de administrar.
O resultado é um acesso remoto confiável, com controle granular por perfil de usuário e auditoria clara de tráfego.