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
- Adicione um servidor de autenticação do tipo LDAP + TOTP.
- Preencha:
- Hostname/IP do AD
- Porta
389(LDAP simples) - Versão LDAP
3 - Usuário de bind (DN completo) e senha
- Base DN (ex.:
DC=Citrait,DC=corp) - Selecione o template Microsoft AD.
- Marque:
- Read user properties
- Create user on first login
- Synchronize groups
- Ajuste o token para 6 dígitos.
- 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
- Crie uma CA com validade longa (ex.: 10 anos).
Menu: System → Trust → Certificates
- Emita um certificado de servidor (tipo server).
- Emita um certificado de cliente (tipo client).
Menu: VPN → OpenVPN → Static Keys
- Gere uma chave TLS estática (ex.:
SSLVPN_TLS).
Configurando a instância OpenVPN
Menu: VPN → OpenVPN → Servers
- Protocolo:
UDP - Porta:
1194 - Tunnel network:
10.0.8.0/24 - Local network:
192.168.1.0/24 - Certificado: certificado de servidor
- TLS static key: chave TLS estática
- Authentication: servidor AD + TOTP
- Enforce local group:
SSLVPN - Renegotiate time:
86400(24h) - Marque a opção advanced mode e preencha:
- Usar login do usuário ao invés do certificado
Keep alive interval: 10Keep 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/1194de 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
- Export type: File only.
- Hostname: IP público ou DDNS.
- Habilite OTP (token em campo separado).
- Custom options:
ping 10ping-restart 60dhcp-option ADAPTER_DOMAIN_SUFFIX citrait.corp- 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:
- 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. - Gere o OTP seed e compartilhe o QR Code com o usuário.
- 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
-
DNS interno (para todos):
- Protocol:
UDP - Destination:
This Firewall - Destination Port:
53
- Protocol:
-
File server (usuários comuns):
- Source:
SSLVPN - Destination:
IP_FILESERVER - Destination Port:
445 - Log: Marcar
- Source:
-
Acesso amplo (TI):
- Source:
SSLVPN_TI - Destination:
any - Protocol:
any - Log: Marcar
- Source:
-
Bloqueio final (opcional, com log):
- Action:
Block - Source:
any - Destination:
any
- Action:
Validação no cliente
ipconfigdeve mostrar IP no túnel (10.0.8.x) e sufixo DNS.ping 10.0.8.1(firewall) eping 192.168.1.10(AD).nslookup srvade 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.