ULC Lab · implementação reproduzível
Laboratório: Monitoramento e controle de políticas de acesso em dispositivos IoT urbanos com Wazuh e OPA
Você irá implantar um ambiente simulado de cidade inteligente com sensores IoT, monitorados pelo Wazuh e com controle de acesso centralizado via Open Policy Agent. Em cerca de 2 horas, terá um pipeline de segurança open source funcional, validando eventos e políticas em tempo real.

- Duração estimada
- 120 min
- Passos
- 12
- Validações
- 4
- Versões da documentação consultada
- Wazuh 4.7 · Open Policy Agent v0.59.0 · Ubuntu Server 20.04 LTS
Demonstrar, na prática, como integrar Wazuh e Open Policy Agent para monitorar eventos de segurança e aplicar políticas de acesso em dispositivos IoT típicos de cidades inteligentes. O laboratório cobre desde a instalação até a validação de logs e decisões de política, usando apenas software livre e configurações abertas. O foco é mostrar como proteger dados sensíveis e impedir acessos indevidos em ambientes urbanos digitais.
Topologia
Três VMs: uma simula sensores IoT (192.168.56.10), outra roda o Wazuh Manager (192.168.56.20), e a terceira executa o OPA (192.168.56.30). O sensor envia logs para o Wazuh, que monitora e alerta. O OPA recebe requisições de decisão de acesso do sensor, aplicando políticas centralizadas.
+-------------------+
| VM1: IoT Sensor |
| 192.168.56.10 |
+--------+----------+
|
v
+--------+----------+
| VM2: Wazuh |
| 192.168.56.20 |
+--------+----------+
|
v
+--------+----------+
| VM3: OPA |
| 192.168.56.30 |
+-------------------+Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| VM ou servidor x86_64 | 1 vCPU, 1GB RAM, 10GB disco, 1 interface de rede, Ubuntu Server 20.04 ou superior |
| Wazuh | GPLv2 · 4.7 |
| Open Policy Agent | Apache 2.0 · v0.59.0 |
| Ubuntu Server | GPLv2 · 20.04 LTS |
Roteiro
- Preparar as VMs e rede
Crie três VMs com Ubuntu Server 20.04+, conectadas à mesma rede privada (exemplo: 192.168.56.0/24). Isso simula um ambiente isolado e controlado.
O que você deve ver: As três VMs se comunicam entre si via ping.
- Instalar o Wazuh Manager na VM2
O Wazuh Manager centraliza logs e eventos de segurança. Siga a documentação oficial para instalar.
curl -sO https://packages.wazuh.com/4.7/wazuh-install.sh sudo bash wazuh-install.sh -aO que você deve ver: Serviço Wazuh ativo. Acesse https://192.168.56.20:55000 para ver o painel (ignore HTTPS warning).
- Instalar o Wazuh Agent na VM1 (IoT Sensor)
O agente coleta logs e envia para o Manager. Instale e registre o agente.
curl -sO https://packages.wazuh.com/4.7/wazuh-install.sh sudo bash wazuh-install.sh -a --agent sudo /var/ossec/bin/agent-auth -m 192.168.56.20O que você deve ver: Agente registrado no Manager. No painel do Wazuh, VM1 aparece como agente ativo.
- Configurar o Wazuh para monitorar tentativas de acesso SSH no sensor
Adicione monitoramento do arquivo /var/log/auth.log no agente. Isso permite detectar tentativas de login suspeitas.
sudo nano /var/ossec/etc/ossec.conf <!-- Adicione dentro de <localfile> --> <localfile> <log_format>syslog</log_format> <location>/var/log/auth.log</location> </localfile> sudo systemctl restart wazuh-agentO que você deve ver: Tentativas de login SSH são reportadas no painel do Wazuh.
- Instalar o Open Policy Agent na VM3
O OPA centraliza decisões de política. Instale o binário oficial.
curl -L -o opa https://openpolicyagent.org/downloads/v0.59.0/opa_linux_amd64_static chmod +x opa sudo mv opa /usr/local/bin/O que você deve ver: Comando 'opa version' retorna a versão instalada.
- Criar uma política OPA para controlar acesso SSH
Implemente uma política simples: só usuários do grupo 'iot_admins' podem acessar via SSH.
sudo mkdir -p /etc/opa sudo nano /etc/opa/ssh_policy.rego # Conteúdo: package ssh allow { input.user == "iot_admin" }O que você deve ver: Arquivo ssh_policy.rego criado.
- Executar o OPA como serviço REST
Inicie o OPA ouvindo na porta 8181 e carregando a política.
sudo nohup opa run --server --addr :8181 /etc/opa/ssh_policy.rego &O que você deve ver: OPA ouvindo em http://0.0.0.0:8181/v1/data/ssh/allow
- Simular requisição de decisão de acesso do sensor para o OPA
No VM1, envie uma requisição para o OPA simulando login SSH de diferentes usuários.
curl -X POST http://192.168.56.30:8181/v1/data/ssh/allow -d '{"input": {"user": "iot_admin"}}' curl -X POST http://192.168.56.30:8181/v1/data/ssh/allow -d '{"input": {"user": "visitor"}}'O que você deve ver: Primeira requisição retorna 'true', segunda retorna 'false'.
- Integrar Wazuh e OPA via alerta customizado
Configure o Wazuh para disparar um script ao detectar login SSH, consultando o OPA antes de permitir acesso (simulado).
sudo nano /var/ossec/etc/active-response/bin/opa_ssh_check.sh # Exemplo de script (consulte a documentação para detalhes de integração real) # #!/bin/bash USER=$1 RESULT=$(curl -s -X POST http://192.168.56.30:8181/v1/data/ssh/allow -d '{"input": {"user": "'$USER'"}}' | grep true) if [ -z "$RESULT" ]; then exit 1 else exit 0 fi sudo chmod +x /var/ossec/etc/active-response/bin/opa_ssh_check.shO que você deve ver: Script criado e executável. Consulte a documentação do Wazuh para acionar scripts em respostas automáticas.
- Testar o pipeline: tentativa de login não autorizado
Tente logar via SSH na VM1 como 'visitor'. O Wazuh detecta, consulta o OPA e bloqueia (simulado pelo script).
ssh visitor@192.168.56.10O que você deve ver: Acesso negado. Alerta gerado no Wazuh.
- Testar o pipeline: tentativa de login autorizado
Tente logar via SSH na VM1 como 'iot_admin'. O Wazuh detecta, consulta o OPA e permite acesso.
ssh iot_admin@192.168.56.10O que você deve ver: Acesso permitido. Alerta de acesso autorizado no Wazuh.
- Verificar logs e decisões no Wazuh e OPA
Consulte os logs do Wazuh e do OPA para validar o fluxo de decisão.
sudo tail -f /var/ossec/logs/ossec.log sudo tail -f /var/log/syslog | grep opaO que você deve ver: Logs mostram eventos de acesso e decisões do OPA.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| OPA responde corretamente a requisições de decisão | curl -X POST http://192.168.56.30:8181/v1/data/ssh/allow -d '{"input": {"user": "iot_admin"}}' | Resposta JSON: {"result": true} |
| Wazuh detecta tentativas de login SSH | sudo tail /var/ossec/logs/alerts/alerts.json | grep ssh | Entradas de alerta para logins SSH aparecem |
| Bloqueio de acesso não autorizado | ssh visitor@192.168.56.10 | Acesso negado, alerta no Wazuh |
| Permissão de acesso autorizado | ssh iot_admin@192.168.56.10 | Acesso permitido, alerta positivo no Wazuh |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| OPA não responde na porta 8181 | OPA não foi iniciado ou firewall bloqueando | Verifique se o OPA está rodando e libere a porta no firewall |
| Agente Wazuh não aparece no painel | Erro na autenticação do agente | Reexecute o agent-auth apontando para o Manager |
| Script de integração não executa | Permissão de execução ausente | Aplique chmod +x no script |
| Alertas de SSH não aparecem | Configuração de monitoramento de log ausente | Revise o bloco <localfile> no ossec.conf e reinicie o agente |
Segurança e hardening
- Utilize senhas fortes para todos os usuários de teste
- Restrinja o acesso à porta 8181 do OPA apenas para hosts autorizados
- Remova scripts e usuários de teste após o laboratório
- Aplique atualizações de segurança no sistema operacional antes do uso
Checklist final
Referências
- Wazuh Documentation · Wazuh Inc. (documentation.wazuh.com)
- Publicado
- 09/09/2026
- Última revisão
- 09/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 1 oficiais
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
