🎁 New User? Get 20% off your first purchase with code NEWUSER20 Register Now →
Menu

Categories

Wazuh SIEM Complete Guide 2026: Free Open-Source Security Monitoring

Wazuh SIEM Complete Guide 2026: Free Open-Source Security Monitoring

Wazuh is the world's leading free, open-source security platform that provides unified SIEM (Security Information and Event Management), XDR (Extended Detection and Response), and HIDS (Host-based Intrusion Detection System) capabilities. Originally forked from OSSEC in 2015, Wazuh has evolved into a comprehensive security monitoring solution trusted by thousands of organizations worldwide.

In a world where commercial SIEM solutions like Splunk cost $50,000 - $500,000+ per year, Wazuh delivers enterprise-grade security monitoring at zero license cost. For SOC analysts, system administrators, and security engineers, Wazuh has become the go-to platform for building a professional security operations center without breaking the budget.

Key Fact: Wazuh monitors over 20 million endpoints globally, processes billions of security events daily, and has 30,000+ GitHub stars. It's the most deployed open-source SIEM in the world — and it's completely free, with no "enterprise edition" paywall.


What Does Wazuh Do?

Capability What It Does Example Use Case
Intrusion Detection (HIDS)Monitors system calls, file changes, registry, and rootkitsDetect unauthorized SSH login attempts
Log AnalysisCollects, parses, and correlates logs from all sourcesAggregate syslog, Apache, nginx, auth logs
File Integrity Monitoring (FIM)Tracks changes to critical files and directoriesAlert when /etc/passwd or web files are modified
Vulnerability DetectionScans installed packages against CVE databasesFind unpatched OpenSSL or Apache versions
Configuration Assessment (SCA)Audits systems against CIS benchmarks and best practicesCheck if SSH root login is disabled
Regulatory ComplianceMaps alerts to compliance frameworksPCI DSS, HIPAA, GDPR, NIST 800-53 reporting
Active ResponseAutomated countermeasures when threats are detectedAuto-block IPs after brute-force attacks
Cloud Security (CSPM)Monitors AWS, Azure, GCP configurationsDetect publicly exposed S3 buckets
Container SecurityMonitors Docker and Kubernetes environmentsDetect privileged container launches
Threat IntelligenceIntegrates IoC feeds for threat detectionMatch network traffic against known C2 servers

Wazuh Architecture

Wazuh uses a server-agent architecture with three main components:

Component Role Technology
Wazuh IndexerStores and indexes security events (search engine)OpenSearch-based (Elasticsearch fork)
Wazuh ServerAnalyzes data from agents, triggers alerts, runs decoders & rulesC, Python — core analysis engine
Wazuh DashboardWeb UI for visualization, alerting, and managementOpenSearch Dashboards (Kibana fork)
Wazuh AgentInstalled on monitored endpoints, collects and forwards dataC — lightweight, cross-platform

Data Flow:
Endpoints (Agents)Wazuh Server (Analysis)Wazuh Indexer (Storage)Dashboard (Visualization)

Agents collect logs, system events, and file changes → Server applies decoders, rules, and correlation → Indexer stores enriched events → Dashboard shows alerts, compliance status, and analytics.

Minimum Hardware Requirements

Deployment Size Agents CPU RAM Storage
Small (Home Lab)1–254 vCPU8 GB50 GB SSD
Medium (SMB)25–1008 vCPU16 GB200 GB SSD
Large (Enterprise)100–1,00016 vCPU32 GB500 GB+ SSD
Enterprise (Multi-node)1,000+Cluster64 GB+ per nodeTB-scale NVMe

Installing Wazuh: All-in-One (Single Server)

The fastest way to deploy Wazuh for testing or small environments:

# All-in-One installation (server + indexer + dashboard)

# Download and run the Wazuh installation assistant
curl -sO https://packages.wazuh.com/4.9/wazuh-install.sh
curl -sO https://packages.wazuh.com/4.9/config.yml

# Edit config.yml — set your server IP
vim config.yml
# nodes:
#   indexer:
#     - name: wazuh-indexer
#       ip: "YOUR_SERVER_IP"
#   server:
#     - name: wazuh-server
#       ip: "YOUR_SERVER_IP"
#   dashboard:
#     - name: wazuh-dashboard
#       ip: "YOUR_SERVER_IP"

# Run the installer
sudo bash wazuh-install.sh --generate-config-files
sudo bash wazuh-install.sh --wazuh-indexer wazuh-indexer
sudo bash wazuh-install.sh --start-cluster
sudo bash wazuh-install.sh --wazuh-server wazuh-server
sudo bash wazuh-install.sh --wazuh-dashboard wazuh-dashboard

# Access the dashboard
# URL: https://YOUR_SERVER_IP
# Default user: admin
# Password: shown at end of installation

Docker Deployment (Recommended for Labs)

# Clone Wazuh Docker repository
git clone https://github.com/wazuh/wazuh-docker.git -b v4.9.0
cd wazuh-docker/single-node

# Generate SSL certificates
docker compose -f generate-indexer-certs.yml run --rm generator

# Start Wazuh stack
docker compose up -d

# Check status
docker compose ps

# Dashboard available at: https://localhost:443
# API available at: https://localhost:55000
# Default credentials: admin / SecretPassword

# View logs
docker compose logs -f wazuh.manager

Lab Tip: Docker deployment is perfect for home labs, training, and SIEM/SOC practice. You can deploy a full Wazuh stack on a single VPS or even a Raspberry Pi (with sufficient RAM). For production, use the native installation or a multi-node cluster.


Agent Deployment

Linux Agent Installation

# RHEL/CentOS/AlmaLinux
rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH
cat > /etc/yum.repos.d/wazuh.repo << 'EOF'
[wazuh]
gpgcheck=1
gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH
enabled=1
name=Wazuh repository
baseurl=https://packages.wazuh.com/4.x/yum/
protect=1
EOF

WAZUH_MANAGER="10.0.0.100" yum install wazuh-agent -y
systemctl daemon-reload
systemctl enable --now wazuh-agent

# Debian/Ubuntu
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | gpg --no-default-keyring \
  --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import && chmod 644 /usr/share/keyrings/wazuh.gpg

echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main" \
  | tee /etc/apt/sources.list.d/wazuh.list

WAZUH_MANAGER="10.0.0.100" apt-get install wazuh-agent -y
systemctl daemon-reload
systemctl enable --now wazuh-agent

# Verify agent connection
sudo /var/ossec/bin/wazuh-control status
sudo cat /var/ossec/logs/ossec.log | tail -20

Windows Agent Installation

# PowerShell (Administrator)
Invoke-WebRequest -Uri https://packages.wazuh.com/4.x/windows/wazuh-agent-4.9.0-1.msi `
  -OutFile $env:tmp\wazuh-agent.msi

# Install with manager IP
msiexec.exe /i $env:tmp\wazuh-agent.msi /q `
  WAZUH_MANAGER="10.0.0.100" `
  WAZUH_AGENT_NAME="win-server-01" `
  WAZUH_AGENT_GROUP="windows-servers"

# Start the service
NET START Wazuh

Agent Deployment at Scale (Ansible)

# Ansible playbook for mass agent deployment
---
- name: Deploy Wazuh Agent to all Linux servers
  hosts: all_linux_servers
  become: yes
  vars:
    wazuh_manager_ip: "10.0.0.100"
    wazuh_agent_group: "linux-servers"
  
  tasks:
    - name: Import Wazuh GPG key
      rpm_key:
        key: https://packages.wazuh.com/key/GPG-KEY-WAZUH
        state: present
      when: ansible_os_family == "RedHat"

    - name: Add Wazuh repository
      yum_repository:
        name: wazuh
        description: Wazuh repository
        baseurl: https://packages.wazuh.com/4.x/yum/
        gpgcheck: yes
        gpgkey: https://packages.wazuh.com/key/GPG-KEY-WAZUH
      when: ansible_os_family == "RedHat"

    - name: Install Wazuh agent
      package:
        name: wazuh-agent
        state: present
      environment:
        WAZUH_MANAGER: "{{ wazuh_manager_ip }}"
        WAZUH_AGENT_GROUP: "{{ wazuh_agent_group }}"

    - name: Enable and start Wazuh agent
      systemd:
        name: wazuh-agent
        enabled: yes
        state: started

Key Features Deep Dive

1. File Integrity Monitoring (FIM)

# /var/ossec/etc/ossec.conf — FIM configuration

<syscheck>
  <frequency>300</frequency>  <!-- Check every 5 minutes -->
  <alert_new_files>yes</alert_new_files>
  
  <!-- Critical system files -->
  <directories realtime="yes" check_all="yes">/etc/passwd,/etc/shadow,/etc/group</directories>
  <directories realtime="yes" check_all="yes">/etc/ssh/sshd_config</directories>
  <directories realtime="yes" check_all="yes">/etc/sudoers,/etc/sudoers.d</directories>
  
  <!-- Web application files -->
  <directories realtime="yes" report_changes="yes">/var/www/html</directories>
  
  <!-- Crontabs -->
  <directories realtime="yes" check_all="yes">/etc/crontab,/etc/cron.d</directories>
  
  <!-- Ignore false positives -->
  <ignore>/var/www/html/cache</ignore>
  <ignore type="sregex">\.log$</ignore>
</syscheck>

2. Custom Detection Rules

# /var/ossec/etc/rules/local_rules.xml

<group name="custom_rules">
  
  <!-- Detect multiple failed SSH logins (brute force) -->
  <rule id="100001" level="10" frequency="5" timeframe="120">
    <if_matched_sid>5710</if_matched_sid>
    <description>SSH brute force attack detected (5+ failures in 2 min)</description>
    <mitre>
      <id>T1110</id>  <!-- Brute Force -->
    </mitre>
    <group>authentication_failures,pci_dss_10.2.4,pci_dss_11.4,</group>
  </rule>

  <!-- Detect new user creation -->
  <rule id="100002" level="8">
    <if_sid>5901</if_sid>
    <match>useradd</match>
    <description>New user account created: $(account)</description>
    <mitre>
      <id>T1136</id>  <!-- Create Account -->
    </mitre>
    <group>account_changed,pci_dss_8.1.2,gdpr_II_5.1.f,</group>
  </rule>

  <!-- Detect web shell upload (PHP) -->
  <rule id="100003" level="12">
    <if_sid>550</if_sid>
    <match>/var/www</match>
    <regex>\.php$</regex>
    <description>New PHP file created in web directory — possible web shell</description>
    <mitre>
      <id>T1505.003</id>  <!-- Web Shell -->
    </mitre>
    <group>web,attack,</group>
  </rule>

  <!-- Detect sudo to root -->
  <rule id="100004" level="5">
    <if_sid>5402</if_sid>
    <match>USER=root</match>
    <description>User $(srcuser) executed command as root via sudo</description>
    <group>sudo,pci_dss_10.2.2,</group>
  </rule>

</group>

3. Active Response (Automated Countermeasures)

# /var/ossec/etc/ossec.conf — Active Response configuration

<!-- Auto-block IPs after brute force detection -->
<active-response>
  <command>firewall-drop</command>
  <location>local</location>
  <rules_id>100001</rules_id>
  <timeout>3600</timeout>  <!-- Block for 1 hour -->
</active-response>

<!-- Disable compromised user account -->
<active-response>
  <command>disable-account</command>
  <location>local</location>
  <rules_id>100010</rules_id>  <!-- Triggered by account compromise rule -->
  <timeout>no</timeout>  <!-- Permanent until admin reviews -->
</active-response>

Wazuh vs Commercial SIEM Solutions

Feature Wazuh Splunk ELK Stack Microsoft Sentinel
License CostFree (open source)$50K–$500K+/yearFree core / paid featuresPay per GB ingested
HIDS (Agent-based)Built-inAdd-on (UF)Requires BeatsMDE integration
Vulnerability DetectionBuilt-inAdd-onExternal toolsDefender integration
File Integrity (FIM)Built-inAdd-onExternal (AIDE)FIM workbook
Compliance ReportingPCI, HIPAA, GDPR, NISTEnterprise add-onsManual setupWorkbooks
Active ResponseBuilt-inSOAR add-onExternalLogic Apps
Cloud MonitoringAWS, Azure, GCPExtensiveManualAzure native
MITRE ATT&CK MappingBuilt-inAppManualBuilt-in
Docker/K8s MonitoringBuilt-inAdd-onBeatsContainer Insights
Learning CurveModerateModerate-HighHighModerate
Community30K+ GitHub starsEnterprise supportLarge communityMicrosoft support

Cost Comparison: A 100-agent Wazuh deployment costs only infrastructure (~$50-200/month on a VPS). The same coverage with Splunk Enterprise would cost $100,000+/year. Even Splunk Cloud starts at approximately $15,000/year. Wazuh makes enterprise SIEM accessible to organizations of any size.


Compliance Frameworks in Wazuh

Wazuh automatically maps security events to regulatory compliance requirements:

Framework Industry What Wazuh Covers
PCI DSS 4.0Payment card industryRequirements 1, 2, 5, 6, 8, 10, 11
HIPAAHealthcareAccess controls, audit controls, integrity
GDPREU data protectionArticles 5, 25, 30, 32, 33, 35
NIST 800-53US governmentAC, AU, CM, IA, SI, RA control families
SOC 2Service organizationsSecurity, availability, processing integrity
CIS BenchmarksAll industriesAutomated SCA checks against CIS profiles

Real-World SOC Integration

How Wazuh fits into a professional Security Operations Center:

SOC Function Wazuh Role Integration
Tier 1 — Alert TriageDashboard with severity-based alert queueSlack/Teams/PagerDuty notifications
Tier 2 — InvestigationDeep event correlation, MITRE mappingTheHive, MISP, VirusTotal
Tier 3 — Threat HuntingCustom rules, CDB lists, advanced queriesYARA rules, Sigma rules
Incident ResponseActive response, forensic dataShuffle SOAR, custom scripts
Compliance ReportingBuilt-in dashboards for PCI/HIPAA/GDPRPDF export, scheduled reports

Wazuh Alert Levels

Level Severity Description Example
0–3InformationalNormal operations, no action neededSuccessful login, service start
4–7WarningUnusual activity, should investigateFirst failed login, config change
8–11HighSignificant threat, immediate investigationMultiple failed logins, FIM alert
12–15CriticalActive attack, immediate response requiredRootkit detected, web shell, brute force

Wazuh API: Automation & Integration

# Authenticate with Wazuh API
TOKEN=$(curl -s -u "wazuh-wui:wazuh-wui" -k \
  -X POST "https://localhost:55000/security/user/authenticate" | \
  jq -r '.data.token')

# List all agents
curl -s -k -X GET "https://localhost:55000/agents" \
  -H "Authorization: Bearer $TOKEN" | jq '.data.affected_items[] | {id, name, status, os: .os.name}'

# Get security alerts (last 24 hours)
curl -s -k -X GET "https://localhost:55000/alerts" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"limit": 20, "sort": "-timestamp"}' | jq

# Get vulnerability inventory for an agent
curl -s -k -X GET "https://localhost:55000/vulnerability/001" \
  -H "Authorization: Bearer $TOKEN" | jq '.data.affected_items[] | {cve: .cve, name: .name, severity: .severity}'

# Restart an agent remotely
curl -s -k -X PUT "https://localhost:55000/agents/001/restart" \
  -H "Authorization: Bearer $TOKEN"

Wazuh Career Impact

SIEM skills — especially with Wazuh — are among the most in-demand in cybersecurity:

Role Salary (US) Salary (EU) Wazuh Relevance
SOC Analyst (L1)$55,000 – $80,000€40,000 – €55,000Core tool
SOC Analyst (L2)$80,000 – $110,000€55,000 – €80,000Core tool
SOC Analyst (L3 / Lead)$110,000 – $150,000€75,000 – €110,000Architecture & tuning
Security Engineer$120,000 – $180,000€80,000 – €130,000Deployment & integration
Detection Engineer$130,000 – $190,000€90,000 – €140,000Custom rule development
SIEM Administrator$100,000 – $145,000€70,000 – €100,000Primary responsibility

Why Wazuh on Your Resume Matters: Many organizations are migrating from expensive Splunk deployments to Wazuh. Professionals who can deploy, configure, and tune Wazuh are in high demand — especially at startups, MSPs (Managed Security Service Providers), and mid-size enterprises looking to build cost-effective security operations.


Getting Started: 30-Day Wazuh Learning Path

Week Focus Activities
1Setup & BasicsDocker deployment, dashboard exploration, deploy 2-3 agents, understand alert flow
2Detection & MonitoringConfigure FIM, understand built-in rules, explore vulnerability detection, setup SCA
3Custom Rules & ResponseWrite custom rules, configure active response, integrate with Slack/email, MITRE mapping
4Advanced & IntegrationAPI automation, compliance dashboards, threat intel feeds, simulate attacks with Atomic Red Team


Further Reading on Dargslan


Final Verdict

Wazuh is the most capable free security platform available today. It delivers SIEM, XDR, HIDS, vulnerability detection, file integrity monitoring, compliance reporting, and automated response — all without a single dollar in license fees.

For SOC analysts and security engineers, Wazuh expertise is a career accelerator. As organizations increasingly move away from expensive commercial SIEMs, professionals who can deploy and tune Wazuh are building the next generation of security operations centers.

For organizations, Wazuh means enterprise-grade security monitoring without enterprise pricing. Whether you're a startup with 5 servers or a mid-size company with 500 endpoints, Wazuh scales to meet your needs — and it grows with you.

Start with a Docker lab today. Deploy a few agents. Write your first custom rule. The learning curve is manageable, the community is supportive, and the career payoff is substantial.

Master Wazuh & Intrusion Detection

Build your SIEM lab and learn enterprise security monitoring:

Get Linux Intrusion Detection with OSSEC & Wazuh →
Share this article:

Stay Updated

Subscribe to our newsletter for the latest tutorials, tips, and exclusive offers.