O Wazuh é uma plataforma open source que combina capacidades de XDR (Extended Detection and Response) e SIEM (Security Information and Event Management). Neste guia, você vai instalar um nó único (single-node) com Docker e configurar seu primeiro agente em uma instância Oracle Cloud (OCI).
Pré-requisitos e portas necessárias
Antes de iniciar, valide que seu firewall e security list permitem as portas:
| Porta | Protocolo | Serviço | Descrição |
|---|---|---|---|
| 1514 | TCP | Wazuh Agent | Comunicação dos agentes |
| 1515 | TCP | Enrollment | Registro de novos agentes |
| 514 | UDP | Syslog | Coleta de logs via Syslog |
| 55000 | TCP | Manager API | Interação com a API do servidor |
| 9200 | TCP | Indexer API | Comunicação com o indexador |
| 443 | TCP | Dashboard | Interface web HTTPS |
Dica de infra: você pode mapear a porta443do container para4443no host para evitar conflito com Nginx ou Apache.
Preparando o ambiente Docker
# Criar diretório de trabalho
mkdir -p /opt/docker/wazuh
cd /opt/docker/wazuh
# Clonar repositório oficial (versão 4.14.3)
git clone https://github.com/wazuh/wazuh-docker.git -b v4.14.3
cd wazuh-docker/single-node/
Gerando certificados
O Wazuh exige certificados para comunicação segura entre indexer, dashboard e server:
docker compose -f generate-indexer-certs.yml run --rm generator
O resultado será este abaixo:
[root@evy single-node]# docker compose -f generate-indexer-certs.yml run --rm generator
[+] Creating 1/1
✔ Network single-node_default Created 0.2s
[+] Running 5/5
✔ generator Pulled 4.6s
✔ f0d8a57b0a96 Pull complete 3.4s
✔ 035f2e5bf75c Pull complete 4.1s
✔ df36708a1273 Pull complete 4.1s
✔ cf48939c4ae7 Pull complete
Subindo a stack
Ajuste opcional da porta HTTPS no compose:
sed -i 's/443/4443/g' docker-compose.yml
Suba os serviços:
docker compose up -d
docker ps
Aguarde os serviços subirem:
[+] Running 17/17
✔ Volume "single-node_filebeat_var" Created 0.0s
✔ Volume "single-node_wazuh_agentless" Created 0.0s
✔ Volume "single-node_wazuh_active_response" Created 0.0s
✔ Volume "single-node_wazuh-indexer-data" Created 0.0s
✔ Volume "single-node_wazuh-dashboard-custom" Created 0.0s
✔ Volume "single-node_wazuh_api_configuration" Created 0.0s
✔ Volume "single-node_wazuh_integrations" Created 0.0s
✔ Volume "single-node_wazuh_queue" Created 0.0s
✔ Volume "single-node_filebeat_etc" Created 0.0s
✔ Volume "single-node_wazuh_wodles" Created 0.0s
✔ Volume "single-node_wazuh_var_multigroups" Created 0.0s
✔ Volume "single-node_wazuh-dashboard-config" Created 0.0s
✔ Volume "single-node_wazuh_etc" Created 0.0s
✔ Volume "single-node_wazuh_logs" Created 0.0s
✔ Container single-node-wazuh.indexer-1 Started 1.1s
✔ Container single-node-wazuh.manager-1 Started 1.3s
✔ Container single-node-wazuh.dashboard-1 Started 0.9s
Verique se estão com status up no docker:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a35c1bf0f633 wazuh/wazuh-dashboard:4.14.3 "/entrypoint.sh" 7 minutes ago Up 7 minutes 443/tcp, 0.0.0.0:4443->5601/tcp, :::4443->5601/tcp single-node-wazuh.dashboard-1
52e8aa9f0868 wazuh/wazuh-manager:4.14.3 "/init" 7 minutes ago Up 7 minutes 0.0.0.0:1514-1515->1514-1515/tcp, :::1514-1515->1514-1515/tcp, 0.0.0.0:514->514/udp, :::514->514/udp, 0.0.0.0:55000->55000/tcp, :::55000->55000/tcp, 1516/tcp single-node-wazuh.manager-1
44632c933783 wazuh/wazuh-indexer:4.14.3 "/entrypoint.sh open…" 7 minutes ago Up 7 minutes 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp single-node-wazuh.indexer-1
Caso esteja tudo certo, acesse: https://SEU_IP:4443
Você verá a tela de login para o admin do Wazuh, neste momento utilize os dados abaixo:

- Usuário: admin
- Senha: SecretSecretPassword
O painel carregará e você verá está tela inicial

Deploy de agente em OCI
Em instâncias Always Free, um swap ajuda na estabilidade da instalação.
Ajuste temporário de memória
# Criar e habilitar swap de 2GB
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Ajuste temporário de overcommit
sudo sysctl -w vm.overcommit_memory=1
Instalação do agente
No Dashboard do Wazuh, vá em Deploy new agent, selecione o sistema operacional e copie o comando gerado. Exemplo para Oracle Linux/RHEL:
curl -o wazuh-agent-4.14.3-1.x86_64.rpm https://packages.wazuh.com/4.x/yum/wazuh-agent-4.14.3-1.x86_64.rpm && \
sudo WAZUH_MANAGER='SEU_IP_OU_DOMINIO' WAZUH_AGENT_GROUP='default' WAZUH_AGENT_NAME='maquina01' \
rpm -ihv wazuh-agent-4.14.3-1.x86_64.rpm --force
Inicialização do serviço
sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent
sudo systemctl status wazuh-agent
Confirme que o status está em active (running).
Finalização do ajuste de memória
sudo sysctl -w vm.overcommit_memory=0
Validação no dashboard
Acesse Agents management > Summary e confirme que a máquina aparece como Active.
A partir daqui, você já pode monitorar:
- logs em tempo real
- integridade de arquivos (FIM)
- vulnerabilidades
Com esse baseline, você já tem um ambiente funcional de observabilidade e segurança. Próximos passos: regras de alerta, integração com Slack e e-mail, ou automações com IA e N8N.
Troubleshooting crítico de certificados (erros comuns)
Dois erros aparecem com frequência em campo:
not a directoryem bind mount de certificado;Non-string key at top level: 404ao executar compose de geração.
Erro 1: not a directory
Geralmente acontece quando o host path esperado como arquivo ainda não existe e o Docker cria diretório no lugar.
Validação rápida:
ls -ld config/wazuh_indexer_ssl_certs/*.pem
Erro 2: YAML 404 disfarçado
Se o arquivo baixado for HTML (404) e não YAML real, o compose quebra com erro de parsing.
Valide antes de rodar:
head -n 5 generate-indexer-certs.yml
Correção segura
- parar stack;
- limpar estado quebrado;
- clonar tag correta do
wazuh-docker; - regenerar certificados na mesma versão da stack.
docker compose down
rm -rf wazuh-certificates/
git clone https://github.com/wazuh/wazuh-docker.git -b v4.14.3 wazuh-docker-clean
Este post está licenciado sob CC BY-NC.
Comentários
Participe da discussão abaixo.
Comentários ainda não configurados. Adicione as opções do Cusdis em /assets/json/config/blog-comments-config.json.