Aula 28: Wazuh — SIEM open source e plataforma unificada de segurança
Bem-vindo à Aula 28 do curso Segurança Linux — Do Zero ao Avançado. Nesta etapa avançada, vamos mergulhar no Wazuh, uma plataforma open source de segurança unificada que combina SIEM (Security Information and Event Management) e XDR (Extended Detection and Response) em uma única solução. O Wazuh é amplamente adotado em ambientes corporativos por sua capacidade de coletar, normalizar, correlacionar e analisar eventos de segurança em tempo real, além de realizar monitoramento de integridade de arquivos, detecção de intrusões, análise de vulnerabilidades e resposta ativa a incidentes. Ele nasceu como um fork do OSSEC e evoluiu para uma suíte completa com servidor central, indexador de dados, dashboard web e agentes leves instalados nos endpoints.
Nesta aula, você vai aprender a arquitetura do Wazuh, seus principais componentes e o fluxo de dados entre eles. Vamos instalar e configurar um ambiente funcional completo: o nó central (Wazuh indexer, Wazuh server e Wazuh dashboard) em servidores Linux baseados em Debian/Ubuntu e CentOS/RHEL/Rocky Linux. Em seguida, instalaremos o agente do Wazuh em máquinas Linux para demonstração de coleta de logs e geração de alertas. Todo o processo será feito passo a passo, com os comandos reais e as saídas esperadas, para que você possa reproduzir em seu próprio laboratório sem lacunas.
Por que essa aula é importante? Em um cenário de ameaças cada vez mais sofisticado, depender apenas de logs locais ou de ferramentas isoladas não é suficiente. O Wazuh centraliza eventos de segurança, aplica regras de correlação, detecta alterações em arquivos críticos, monitora chamadas de sistema e ainda executa respostas ativas, como bloqueio de IPs ou remoção de malware. Profissionais de segurança e infraestrutura que dominam essa ferramenta têm um diferencial enorme no mercado, pois conseguem implementar monitoramento contínuo e conformidade com normas como PCI-DSS, LGPD, ISO 27001 e HIPAA.
Os pré-requisitos para esta aula incluem conhecimento de linha de comando Linux, noções de redes, gerenciamento de pacotes e serviços systemd. Você precisará de pelo menos um servidor com 4 vCPUs, 8 GB de RAM e 50 GB de disco para hospedar os componentes centrais do Wazuh, além de uma segunda máquina Linux para instalar o agente. Ao final, você terá um ambiente Wazuh totalmente operacional, com dashboard acessível, agente conectado e alertas sendo gerados e visualizados em tempo real. Em nossos projetos na JRT Technology Solutions, nossos especialistas utilizam diariamente essa mesma stack para entregar monitoramento de segurança efetivo aos clientes.
O que você vai aprender nesta aula
- Compreender a arquitetura do Wazuh: indexer, server, dashboard e agentes.
- Preparar um servidor Linux (Ubuntu/Debian e CentOS/RHEL/Rocky) para a instalação do Wazuh.
- Instalar os componentes centrais do Wazuh utilizando o assistente oficial, com todas as saídas esperadas.
- Configurar corretamente o
config.ymlantes da instalação e interpretar as credenciais geradas. - Instalar e configurar o agente do Wazuh em endpoints Linux, incluindo o arquivo
ossec.confcompleto. - Verificar o funcionamento do cluster, dos serviços e da comunicação agente–servidor.
- Diagnosticar e corrigir erros comuns de instalação, conectividade e autenticação.
- Aplicar boas práticas de hardening e otimização no ambiente Wazuh.
Pré-requisitos e Ambiente
Antes de iniciar, certifique-se de que seu ambiente atende aos requisitos mínimos. Para os componentes centrais do Wazuh (indexer, server e dashboard), recomenda-se uma máquina com sistema operacional Linux de 64 bits, preferencialmente Ubuntu 22.04/24.04 LTS, Debian 11/12, CentOS 7/8/9, RHEL 7/8/9 ou Rocky Linux 8/9. A configuração mínima de hardware é 4 vCPUs, 8 GB de RAM e 50 GB de disco livre, mas para ambientes de produção com muitos agentes, considere 8 vCPUs, 16 GB de RAM e SSDs. O servidor deve ter um endereço IP estático, nome de host definido e acesso à internet para baixar pacotes.
Você também precisará de uma segunda máquina Linux, que pode ser uma VM ou container, para instalar o agente do Wazuh. Essa máquina deve ter pelo menos 1 vCPU, 1 GB de RAM e 10 GB de disco. O agente é compatível com uma ampla variedade de distribuições, incluindo Ubuntu, Debian, CentOS, RHEL, Rocky, Fedora, openSUSE e Amazon Linux. Nesta aula, demonstraremos a instalação do agente em Ubuntu/Debian e CentOS/RHEL/Rocky, cobrindo assim os dois principais ecossistemas de pacotes: apt e yum/dnf.
Certifique-se de que as portas de comunicação necessárias estejam liberadas no firewall. O Wazuh indexer utiliza a porta 9200 para a API REST e a porta 9300–9400 para comunicação entre nós. O Wazuh server escuta na porta 1514 para coleta de eventos dos agentes, na porta 1515 para registro de novos agentes e na porta 55000 para a API. O Wazuh dashboard é acessado pela porta 443 (HTTPS) por padrão. Em laboratório, você pode desabilitar temporariamente o firewall ou configurar regras específicas; nesta aula, mostraremos os comandos para abrir as portas no ufw e no firewalld.
Por fim, tenha acesso root ou sudo nas máquinas e verifique a sincronização de horário via NTP/chrony. O Wazuh depende de timestamps precisos para correlação de eventos; atrasos de relógio podem causar alertas inconsistentes. O assistente de instalação oficial é executado via curl e bash, portanto essas ferramentas devem estar presentes no servidor.
Arquitetura do Wazuh: componentes e fluxo de dados
Antes de executar qualquer comando, é essencial entender como o Wazuh se organiza. A solução é composta por quatro elementos principais: o Wazuh indexer, o Wazuh server, o Wazuh dashboard e os agentes. O Wazuh indexer é baseado no OpenSearch e é responsável por armazenar, indexar e consultar os eventos e alertas de segurança. Ele escala horizontalmente e pode ser configurado em cluster para alta disponibilidade. O Wazuh server, também chamado de manager, é o cérebro da operação: recebe dados dos agentes, aplica regras de decodificação e correlação, gera alertas e coordena as respostas ativas. O Wazuh dashboard é a interface web que consome os dados do indexer e permite visualizar alertas, eventos, integridade de arquivos, vulnerabilidades e muito mais. Os agentes são programas leves instalados nos endpoints que coletam logs, monitoram a integridade de arquivos, detectam rootkits e executam respostas ativas.
O fluxo de dados no Wazuh segue um caminho bem definido. Os agentes coletam eventos do sistema operacional (syslog, auth.log, auditoria, comandos executados) e os enviam criptografados para o Wazuh server na porta 1514. O servidor decodifica os eventos, aplica regras de detecção e, se necessário, gera alertas. Esses alertas são então encaminhados ao Wazuh indexer, que os armazena em índices temporais. O Wazuh dashboard consulta o indexer via API e apresenta os dados de forma visual. Além disso, o servidor pode executar respostas ativas nos agentes, como bloquear um IP malicioso diretamente no firewall do endpoint.
Essa separação de responsabilidades permite escalabilidade e flexibilidade. Em ambientes pequenos, todos os componentes centrais podem rodar em um único servidor. Em grandes infraestruturas, você pode separar o indexer em um cluster dedicado, adicionar múltiplos servidores Wazuh em modo worker e instalar milhares de agentes distribuídos geograficamente. O assistente de instalação oficial facilita o deploy de um nó único ou de um cluster multi-nó, e é exatamente isso que faremos a seguir.
Vale destacar que o Wazuh não é apenas um SIEM: ele também incorpora funcionalidades de HIDS (detecção de intrusão baseada em host), verificação de integridade de arquivos (FIM), análise de configuração, inventário de software e detecção de anomalias. Essa abordagem unificada reduz a necessidade de múltiplas ferramentas e simplifica a resposta a incidentes. Em nossos projetos na JRT Technology Solutions, a implementação do Wazuh costuma substituir pilhas inteiras de monitoramento legado, gerando economia e mais visibilidade.
Preparando o servidor Linux para instalação do Wazuh
Nesta seção, vamos preparar o servidor que hospedará os componentes centrais do Wazuh. Os comandos variam conforme a distribuição, então mostraremos os passos para Ubuntu/Debian e para CentOS/RHEL/Rocky Linux. O objetivo é garantir que as dependências básicas estejam instaladas, o nome do host esteja correto e as portas necessárias estejam acessíveis. Execute todos os comandos como usuário root ou com sudo.
Passo 1: Atualizar o sistema e instalar dependências básicas
Em Ubuntu/Debian, utilize o gerenciador de pacotes apt. Os pacotes curl, tar, openssl, gnupg e apt-transport-https são necessários para baixar o script de instalação, manipular arquivos e validar assinaturas. Já em CentOS/RHEL/Rocky, os pacotes equivalentes são curl, tar, openssl e policycoreutils-python-utils (para manipular SELinux, se estiver ativo).
# Ubuntu/Debian — atualizar repositórios e instalar dependências
sudo apt-get update -y
sudo apt-get install -y curl tar openssl gnupg apt-transport-https
# CentOS/RHEL/Rocky — atualizar pacotes e instalar dependências
sudo yum update -y
sudo yum install -y curl tar openssl policycoreutils-python-utils
Verifique a saída para garantir que nenhum pacote apresentou erro. Em seguida, defina um nome de host adequado para o servidor, pois o Wazuh utiliza o hostname para identificar o nó nas configurações do cluster. Use o comando hostnamectl set-hostname no Linux com systemd.
# Definir hostname (exemplo para o nó central)
sudo hostnamectl set-hostname wazuh-server.local
# Confirmar o hostname
hostname
wazuh-server.local
Passo 2: Configurar o firewall para as portas do Wazuh
Embora em ambientes de laboratório você possa desativar o firewall, em produção é imprescindível liberar apenas as portas necessárias. No Ubuntu/Debian, o comando ufw é comum; no CentOS/RHEL/Rocky, usa-se firewalld. As portas do Wazuh são 1514/TCP (comunicação agente–servidor), 1515/TCP (registro de agentes), 55000/TCP (API do servidor), 9200/TCP (API do indexer), 9300–9400/TCP (comunicação do cluster do indexer) e 443/TCP (dashboard).
# Ubuntu/Debian — liberar portas no UFW
sudo ufw allow 1514/tcp
sudo ufw allow 1515/tcp
sudo ufw allow 55000/tcp
sudo ufw allow 9200/tcp
sudo ufw allow 9300:9400/tcp
sudo ufw allow 443/tcp
sudo ufw reload
# CentOS/RHEL/Rocky — liberar portas no firewalld
sudo firewall-cmd --permanent --add-port=1514/tcp
sudo firewall-cmd --permanent --add-port=1515/tcp
sudo firewall-cmd --permanent --add-port=55000/tcp
sudo firewall-cmd --permanent --add-port=9200/tcp
sudo firewall-cmd --permanent --add-port=9300-9400/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
Confirme se as regras foram aplicadas com sudo ufw status verbose ou sudo firewall-cmd --list-ports. Lembre-se de que, se você estiver usando um provedor de nuvem como AWS, GCP ou Azure, também precisará liberar essas portas no security group ou firewall da plataforma.
Passo 3: Sincronizar o relógio (NTP/Chrony)
O Wazuh exige timestamps confiáveis. No Ubuntu/Debian, o serviço systemd-timesyncd geralmente já está ativo; no CentOS/RHEL/Rocky, o chronyd é o padrão. Verifique e, se necessário, habilite a sincronização.
# Ubuntu/Debian — verificar e ativar timesyncd
sudo timedatectl set-ntp true
timedatectl status
# CentOS/RHEL/Rocky — habilitar chronyd
sudo systemctl enable --now chronyd
chronyc tracking
System clock synchronized: yes
NTP service: active
Reference ID : 0A7F7F7F (10.127.127.127)
Stratum : 3
Ref time (UTC) : Mon Aug 17 10:00:00 2026
System time : 0.000012345 seconds fast of NTP time
Last offset : +0.000012345 seconds
RMS offset : 0.000045678 seconds
Frequency : 1.234 ppm slow
Residual freq : +0.001 ppm
Skew : 0.123 ppm
Root delay : 0.012345 seconds
Root dispersion : 0.001234 seconds
Update interval : 64.2 seconds
Leap status : Normal
Com o sistema preparado, estamos prontos para baixar o assistente de instalação do Wazuh e gerar o arquivo de configuração dos nós.
Instalando os componentes centrais do Wazuh com o assistente oficial
O assistente de instalação do Wazuh é um script Bash que automatiza a instalação e configuração do indexer, do server e do dashboard. Ele valida dependências, gera certificados autoassinados para comunicação segura entre os componentes e cria credenciais aleatórias. O processo é dividido em etapas: baixar o script, gerar o arquivo config.yml com os IPs dos nós, executar a instalação de cada componente e, por fim, extrair as senhas geradas.
Passo 1: Baixar o script e gerar o arquivo de configuração
Execute o comando curl para baixar o script wazuh-install.sh da versão estável (neste exemplo, 4.7.2). Em seguida, execute-o com a opção --generate-config-files para criar o config.yml. Esse arquivo deve ser editado com os endereços IP reais do seu servidor. Os comandos são os mesmos para Ubuntu/Debian e CentOS/RHEL/Rocky.
# Baixar o assistente de instalação do Wazuh 4.7.2
curl -sO https://packages.wazuh.com/4.7/wazuh-install.sh
# Gerar o arquivo de configuração config.yml
sudo bash wazuh-install.sh --generate-config-files
25/07/2024 10:00:00 INFO: Starting Wazuh installation assistant. Wazuh version: 4.7.2
25/07/2024 10:00:01 INFO: Verbose logging redirected to /var/log/wazuh-install.log
25/07/2024 10:00:02 INFO: -- Generated configuration files. Please edit config.yml and wazuh.yml before proceeding.
O arquivo config.yml contém as seções indexer, server e dashboard. Para um nó único, você deve informar o IP do servidor em cada seção. Abra o arquivo com seu editor preferido (nano, vim) e ajuste os valores. O conteúdo completo do config.yml é mostrado abaixo, com comentários explicativos.
# /root/config.yml — Arquivo de configuração para instalação do Wazuh (nó único)
nodes:
# Wazuh indexer nodes
indexer:
- name: node-1
ip: "10.0.0.10"
# Se você tiver mais nós de indexer, descomente e ajuste:
# - name: node-2
# ip: ""
# - name: node-3
# ip: ""
# Wazuh server nodes
# Se houver mais de um nó servidor, cada um deve ter um node_type (master ou worker)
server:
- name: node-1
ip: "10.0.0.10"
# - name: node-2
# ip: ""
# node_type: worker
# Wazuh dashboard nodes
dashboard:
- name: node-1
ip: "10.0.0.10"
# - name: node-2
# ip: ""
Certifique-se de que o IP 10.0.0.10 seja substituído pelo IP real do seu servidor. Se você estiver usando um nome de domínio, informe o FQDN. O assistente usa esse IP para gerar os certificados SSL, portanto ele deve ser consistente. Após editar, salve o arquivo.
Passo 2: Instalar o Wazuh indexer
O primeiro componente central a ser instalado é o Wazuh indexer. Execute o comando abaixo; o assistente detectará automaticamente a distribuição e instalará os pacotes necessários (OpenSearch e dependências). O processo pode levar alguns minutos.
# Instalar o Wazuh indexer no nó node-1
sudo bash wazuh-install.sh --wazuh-indexer node-1
25/07/2024 10:05:00 INFO: Starting Wazuh installation assistant. Wazuh version: 4.7.2
25/07/2024 10:05:01 INFO: Verbose logging redirected to /var/log/wazuh-install.log
25/07/2024 10:05:05 INFO: --- Dependencies ---
25/07/2024 10:05:05 INFO: Installing apt-transport-https.
25/07/2024 10:05:10 INFO: Installing curl.
25/07/2024 10:05:15 INFO: Installing gnupg.
25/07/2024 10:05:20 INFO: Installing tar.
25/07/2024 10:05:25 INFO: Installing openssl.
25/07/2024 10:05:30 INFO: --- Wazuh indexer ---
25/07/2024 10:05:30 INFO: Adding Wazuh indexer repository.
25/07/2024 10:05:35 INFO: Installing Wazuh indexer packages.
25/07/2024 10:10:00 INFO: Wazuh indexer installation finished.
25/07/2024 10:10:00 INFO: Starting service wazuh-indexer.
25/07/2024 10:10:10 INFO: wazuh-indexer service started.
25/07/2024 10:10:10 INFO: Initializing Wazuh indexer cluster security settings.
25/07/2024 10:10:20 INFO: Wazuh indexer cluster initialized.
25/07/2024 10:10:20 INFO: Installation completed.
Após a instalação do indexer, é necessário iniciar o cluster. O comando --start-cluster configura o modo cluster do OpenSearch e aplica as configurações de segurança. Execute-o logo em seguida.
# Iniciar o cluster do Wazuh indexer
sudo bash wazuh-install.sh --start-cluster
25/07/2024 10:12:00 INFO: Starting Wazuh installation assistant. Wazuh version: 4.7.2
25/07/2024 10:12:01 INFO: Verbose logging redirected to /var/log/wazuh-install.log
25/07/2024 10:12:05 INFO: --- Starting cluster ---
25/07/2024 10:12:10 INFO: Cluster started successfully.
25/07/2024 10:12:10 INFO: Installation completed.
Passo 3: Instalar o Wazuh server (manager)
Com o indexer em execução, instale o Wazuh server. Esse componente inclui o serviço wazuh-manager, a API do servidor e o Filebeat, que envia os alertas para o indexer. O assistente cuida da integração e das credenciais.
# Instalar o Wazuh server no nó node-1
sudo bash wazuh-install.sh --wazuh-server node-1
25/07/2024 10:15:00 INFO: Starting Wazuh installation assistant. Wazuh version: 4.7.2
25/07/2024 10:15:01 INFO: Verbose logging redirected to /var/log/wazuh-install.log
25/07/2024 10:15:05 INFO: --- Dependencies ---
25/07/2024 10:15:05 INFO: Installing apt-transport-https.
25/07/2024 10:15:10 INFO: Installing curl.
25/07/2024 10:15:15 INFO: Installing filebeat.
25/07/2024 10:15:20 INFO: --- Wazuh server ---
25/07/2024 10:15:20 INFO: Adding Wazuh repository.
25/07/2024 10:15:25 INFO: Installing Wazuh manager packages.
25/07/2024 10:20:00 INFO: Wazuh manager installation finished.
25/07/2024 10:20:00 INFO: Starting service wazuh-manager.
25/07/2024 10:20:10 INFO: wazuh-manager service started.
25/07/2024 10:20:10 INFO: Configuring Filebeat.
25/07/2024 10:20:20 INFO: Filebeat configured.
25/07/2024 10:20:20 INFO: Starting service filebeat.
25/07/2024 10:20:30 INFO: filebeat service started.
25/07/2024 10:20:30 INFO: Installation completed.
Passo 4: Instalar o Wazuh dashboard
Por fim, instale o Wazuh dashboard. O assistente instalará o pacote e configurará o acesso HTTPS. Ao final, ele exibirá as credenciais de acesso administrativo.
# Instalar o Wazuh dashboard no nó node-1
sudo bash wazuh-install.sh --wazuh-dashboard node-1
25/07/2024 10:25:00 INFO: Starting Wazuh installation assistant. Wazuh version: 4.7.2
25/07/2024 10:25:01 INFO: Verbose logging redirected to /var/log/wazuh-install.log
25/07/2024 10:25:05 INFO: --- Dependencies ---
25/07/2024 10:25:05 INFO: Installing apt-transport-https.
25/07/2024 10:25:10 INFO: Installing curl.
25/07/2024 10:25:15 INFO: --- Wazuh dashboard ---
25/07/2024 10:25:15 INFO: Adding Wazuh dashboard repository.
25/07/2024 10:25:20 INFO: Installing Wazuh dashboard packages.
25/07/2024 10:30:00 INFO: Wazuh dashboard installation finished.
25/07/2024 10:30:00 INFO: Starting service wazuh-dashboard.
25/07/2024 10:30:10 INFO: wazuh-dashboard service started.
25/07/2024 10:30:10 INFO: Installation completed.
25/07/2024 10:30:15 INFO: You can access the web interface https://10.0.0.10
User: admin
Password: **********
O assistente cria um arquivo wazuh-install-files.tar contendo os certificados e as senhas. Extraia as credenciais com o comando:
# Extrair as senhas geradas pelo assistente
sudo tar -O -xvf wazuh-install-files.tar wazuh-install-files/wazuh-passwords.txt
wazuh-indexer:
username: admin
password: AbCdEfGh123456!@#
wazuh-dashboard:
username: admin
password: XyZ987654321!@#
wazuh-server:
username: wazuh
password: SecretPass123!@#
Guarde essas senhas em local seguro. A senha do usuário admin do dashboard é a que você usará para acessar a interface web em https://IP_DO_SERVIDOR. Os serviços centrais do Wazuh estão agora instalados e em execução.
Instalando o agente Wazuh em endpoints Linux
Com o servidor central funcionando, vamos instalar o agente do Wazuh em uma máquina Linux. O agente coleta logs e eventos do sistema e os envia ao servidor. A instalação varia conforme a distribuição, então cobriremos Ubuntu/Debian (utilizando apt) e CentOS
Quer aprender na prática com especialistas?
A JRT Technology Solutions oferece treinamentos e implementação de Segurança Linux para equipes corporativas.