ULC Lab · implementação reproduzível
Laboratório: Portal Cativo com Consentimento LGPD usando openNDS e FreeRADIUS
Você terá um portal cativo funcional em rede Wi-Fi, exigindo consentimento LGPD e autenticação via FreeRADIUS. Em cerca de 2 horas, será possível testar o fluxo completo em VMs ou equipamentos comuns.

Roteiro para estudo em ambiente de laboratório ou de teste. Execute apenas em equipamentos, redes e contas que você tenha autorização para usar, com backup e homologação próprios. Comandos podem causar indisponibilidade ou perda de dados. Software e marcas citados pertencem aos seus titulares. Termos de Uso.
- Duração estimada
- 120 min
- Passos
- 12
- Validações
- 5
- Versões da documentação consultada
- OpenWrt 22.03 · openNDS a versão estável atual · FreeRADIUS 3.x estável
Este laboratório ensina a implementar do zero um portal cativo openNDS integrado ao FreeRADIUS, incluindo consentimento LGPD e registro de acessos conforme o Marco Civil. Você verá o fluxo real de autenticação e consentimento, integrando Wi-Fi corporativo com controle de acesso e logs, usando apenas software livre.
Topologia
Uma VM (ou PC) atua como roteador Wi-Fi com OpenWrt, rodando openNDS e FreeRADIUS. Clientes Wi-Fi conectam-se a essa rede e, ao tentar acessar a internet, são redirecionados ao portal cativo. Após consentimento e autenticação, o acesso é liberado. Endereços de exemplo: roteador 192.168.100.1/24, clientes 192.168.100.10-50.
Internet
|
[VM Host]
|
[OpenWrt VM: openNDS + FreeRADIUS]
|
Wi-Fi (SSID: PortalLGPD)
|
[Clientes Wi-Fi]
Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| VM ou PC para OpenWrt | 1 vCPU, 512MB RAM, 2 interfaces de rede (uma bridgeada para LAN, outra para WAN), OpenWrt 22.03+ |
| Notebook ou smartphone | Interface Wi-Fi, navegador web |
| OpenWrt | GPLv2 · 22.03 |
| openNDS | GPLv2 · a versão estável atual |
| FreeRADIUS | GPLv2 · 3.x estável |
Roteiro
- Preparar a VM OpenWrt
Instale OpenWrt em uma VM com duas interfaces de rede. Uma será LAN (192.168.100.1/24), outra WAN (acesso à internet). Isso simula um roteador Wi-Fi real.
Consulte https://openwrt.org/docs/guide-user/virtualization/qemuO que você deve ver: A VM OpenWrt inicializa, acessível via SSH na LAN.
- Configurar rede LAN e Wi-Fi
Configure a interface LAN para 192.168.100.1/24 e crie um SSID 'PortalLGPD' aberto (sem senha).
uci set network.lan.ipaddr='192.168.100.1' uci commit network uci set wireless.@wifi-iface[0].ssid='PortalLGPD' uci set wireless.@wifi-iface[0].encryption='none' uci commit wireless /etc/init.d/network restartO que você deve ver: SSID 'PortalLGPD' visível e conectável.
- Instalar openNDS e dependências
openNDS faz o redirecionamento para o portal cativo. Instale-o pelo opkg.
opkg update opkg install openndsO que você deve ver: openNDS instalado sem erros.
- Instalar FreeRADIUS
FreeRADIUS será o backend de autenticação. Instale-o pelo opkg.
opkg install freeradius3 freeradius3-mod-eap freeradius3-mod-filesO que você deve ver: FreeRADIUS instalado e rodando.
- Configurar FreeRADIUS: criar usuário de teste
Crie um usuário de teste para autenticação. Edite o arquivo users.
echo 'usuario1 Cleartext-Password := "senha123"' >> /etc/freeradius3/mods-config/files/authorize /etc/init.d/freeradius3 restartO que você deve ver: FreeRADIUS reinicia sem erros.
- Configurar openNDS para usar FreeRADIUS
Edite o arquivo de configuração do openNDS para usar autenticação RADIUS.
vi /etc/opennds/nds.conf # Configure AuthServer, AuthPort, AuthSecret conforme documentaçãoO que você deve ver: openNDS reconhece o backend RADIUS.
- Customizar portal cativo: consentimento LGPD
Edite a página de login do openNDS para exibir e exigir aceite do termo LGPD. O arquivo está em /etc/opennds/htdocs/splash.html.
vi /etc/opennds/htdocs/splash.html # Inclua um checkbox obrigatório para consentimento e link para política de privacidade.O que você deve ver: Página de login exibe termo LGPD e checkbox obrigatório.
- Configurar logs de acesso (Marco Civil)
Garanta que openNDS registre MAC, IP, horário e usuário autenticado. Verifique a configuração de logs em /etc/opennds/nds.conf.
grep Log /etc/opennds/nds.conf # Consulte a documentação para detalhes de retenção.O que você deve ver: Logs são gerados em /var/log/opennds.log ou caminho configurado.
- Reiniciar serviços
Reinicie openNDS e FreeRADIUS para aplicar todas as configurações.
/etc/init.d/opennds restart /etc/init.d/freeradius3 restartO que você deve ver: Ambos os serviços sobem sem erros.
- Conectar cliente Wi-Fi
Conecte um notebook ou smartphone ao SSID 'PortalLGPD'.
O que você deve ver: Cliente recebe IP na faixa 192.168.100.x e é redirecionado ao portal cativo ao tentar navegar.
- Testar fluxo de autenticação e consentimento
No portal, preencha usuário, senha e aceite o termo LGPD. Submeta.
O que você deve ver: Após autenticação, acesso liberado à internet.
- Verificar logs de autenticação e consentimento
Cheque os logs para garantir que o acesso foi registrado, incluindo consentimento.
cat /var/log/opennds.log | tailO que você deve ver: Registro do usuário, IP, MAC, horário e aceite do termo.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| SSID visível e conectável | iwlist scan | grep PortalLGPD | SSID aparece na lista. |
| Redirecionamento para portal cativo | Ao acessar qualquer site, navegador mostra a página de consentimento LGPD. | |
| Autenticação via FreeRADIUS | tail -f /var/log/freeradius/radius.log | Log mostra autenticação do usuário. |
| Consentimento obrigatório | Sem marcar o checkbox, acesso não é liberado. | |
| Registro de logs | cat /var/log/opennds.log | Log contém usuário, IP, MAC e aceite do termo. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Cliente não recebe IP | DHCP não está ativo ou mal configurado | Verifique /etc/config/dhcp e reinicie o serviço dnsmasq |
| Portal cativo não aparece | openNDS não está rodando ou não intercepta o tráfego | Reinicie openNDS e cheque nds.conf |
| Autenticação falha sempre | Erro na configuração do FreeRADIUS ou segredo compartilhado incorreto | Confirme AuthSecret em nds.conf e authorize no FreeRADIUS |
| Consentimento não é exigido | Checkbox não está como obrigatório no HTML | Adicione atributo 'required' ao input checkbox |
| Logs não registram acessos | Caminho de log incorreto ou permissões inadequadas | Ajuste o caminho de log em nds.conf e permissões do diretório |
Segurança e hardening
- Altere o segredo compartilhado (AuthSecret) do RADIUS para um valor forte e único
- Restrinja acesso SSH e web ao OpenWrt apenas à rede administrativa
- Garanta que logs de acesso estejam protegidos contra acesso não autorizado
- Implemente HTTPS no portal cativo para proteger credenciais e consentimento
- Revise permissões dos arquivos de configuração e logs
Checklist final
Referências
- openNDS Documentation · openNDS (opennds.readthedocs.io)
- FreeRADIUS Documentation · FreeRADIUS Project (wiki.freeradius.org)
- OpenWrt Documentation · Projeto OpenWrt (openwrt.org)
- Lei Geral de Proteção de Dados (LGPD) · Presidência da República (Planalto) (planalto.gov.br)
- Marco Civil da Internet · Presidência da República (Planalto) (planalto.gov.br)
- Publicado
- 09/09/2026
- Última revisão
- 09/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 5 oficiais · 2 de normas ou órgãos
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
