Aula 28: Wazuh — SIEM open source e plataforma unificada de segurança

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.yml antes da instalação e interpretar as credenciais geradas.
  • Instalar e configurar o agente do Wazuh em endpoints Linux, incluindo o arquivo ossec.conf completo.
  • 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.



Falar no WhatsApp

Thiago Paes Rodrigues

Com mais de 22 anos de experiência em Tecnologia da Informação, este profissional construiu uma trajetória sólida como empresário, atuando de forma estratégica na implementação de soluções tecnológicas que otimizam processos e impulsionam resultados em diferentes setores.