Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Wazuh

CSecurity

Expert agent for Wazuh open-source EDR/SIEM platform. Covers agent deployment, ossec.conf configuration, FIM, SCA, active response, custom rules and decoders, vulnerability detection, compliance (PCI DSS, HIPAA, GDPR), cluster deployment, and Wazuh indexer/dashboard setup. WHEN: \"Wazuh\", \"OSSEC\", \"open-source EDR\", \"FIM\", \"SCA\", \"Wazuh manager\", \"Wazuh agent\", \"ossec.conf\", \"active response\", \"Wazuh indexer\".

4 stars
0 votes
0 copies
0 views
Added 9/24/2026
securityshellbashnodetestingapidatabasesecurity

Works with

cliapi

Security Analysis

C68/100
criticalAccesses sensitive system or user directories
criticalAccesses sensitive system or user directories
highCreates or modifies cron jobs for persistent execution

Pro scans all 5 files and shows the line behind each finding

Scanned 9/24/2026

$npx -y skills add chrishuffman5/domain-expert --skill wazuh --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Wazuh?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Wazuh
[![Security: C — Skills Directory](https://www.skillsdirectory.com/api/skills/chrishuffman5-wazuh/badge)](https://www.skillsdirectory.com/skills/chrishuffman5-wazuh)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: wazuh
description: "Expert agent for Wazuh open-source EDR/SIEM platform. Covers agent deployment, ossec.conf configuration, FIM, SCA, active response, custom rules and decoders, vulnerability detection, compliance (PCI DSS, HIPAA, GDPR), cluster deployment, and Wazuh indexer/dashboard setup. WHEN: \"Wazuh\", \"OSSEC\", \"open-source EDR\", \"FIM\", \"SCA\", \"Wazuh manager\", \"Wazuh agent\", \"ossec.conf\", \"active response\", \"Wazuh indexer\"."
license: MIT
---

# Wazuh

This skill covers Wazuh, the open-source security monitoring platform. It has deep expertise in Wazuh architecture (manager, agents, indexer, dashboard), ossec.conf configuration, File Integrity Monitoring (FIM), Security Configuration Assessment (SCA), active response, custom rule and decoder development, vulnerability detection, and regulatory compliance automation (PCI DSS, HIPAA, GDPR).

## How to Approach Tasks

When you receive a request:

1. **Identify the deployment model** — Single-node (all-in-one) vs. distributed cluster. Large environments (>100 agents) should use distributed deployment for scalability.

2. **Determine the version** — Wazuh 4.x is current (4.7.x as of 2024). Significant architecture changes between versions; confirm version before providing specific configuration guidance.

3. **Classify the request type:**
   - **Deployment / installation** — Load `references/architecture.md`
   - **ossec.conf configuration** — Agent or manager configuration
   - **Rule development** — Custom XML rules and decoders
   - **FIM configuration** — File integrity monitoring scope
   - **SCA** — Security configuration assessment policies
   - **Active response** — Automated response to alerts
   - **Compliance** — PCI DSS, HIPAA, GDPR mapping
   - **Vulnerability detection** — CVE scanning configuration

4. **Analyze** — Apply Wazuh-specific reasoning. Wazuh is highly configurable but requires more manual tuning than commercial EDR products. The quality of detections depends heavily on rule and decoder quality.

## Architecture Overview

See `references/architecture.md` for full architecture details.

**Core components:**
- **Wazuh Manager** — Receives agent data, runs detection rules, generates alerts
- **Wazuh Agent** — Lightweight agent on monitored endpoints (Linux, Windows, macOS)
- **Wazuh Indexer** — OpenSearch-based event storage and search (replaces Elasticsearch in older versions)
- **Wazuh Dashboard** — Kibana-based web console for analysis and management
- **Filebeat** — Forwards manager output to Wazuh Indexer (in distributed setups)

## Agent Deployment

Agents are installed via native packages (RPM, APT, MSI, PKG) for Linux, Windows, and macOS and pointed at the manager address. See `references/agent-deployment.md` for full install commands per platform.

## ossec.conf Configuration

The primary configuration file for both agents (`/var/ossec/etc/ossec.conf`) and the manager.

### Agent ossec.conf Structure

```xml
<ossec_config>
  <!-- Manager connection -->
  <client>
    <server>
      <address>wazuh-manager.corp.com</address>
      <port>1514</port>
      <protocol>tcp</protocol>
    </server>
    <enrollment>
      <enabled>yes</enabled>
    </enrollment>
  </client>

  <!-- Logging configuration -->
  <logging>
    <log_format>plain</log_format>
  </logging>

  <!-- File Integrity Monitoring -->
  <syscheck>
    <frequency>43200</frequency>  <!-- 12 hours -->
    <scan_on_start>yes</scan_on_start>
    
    <!-- Directories to monitor -->
    <directories realtime="yes" check_all="yes" report_changes="yes">
      /etc
    </directories>
    <directories check_all="yes">/usr/bin</directories>
    <directories check_all="yes">/usr/sbin</directories>
    <directories check_all="yes">/bin</directories>
    <directories check_all="yes">/sbin</directories>
    
    <!-- Windows specific -->
    <directories realtime="yes">%WINDIR%/System32</directories>
    <directories realtime="yes">%PROGRAMFILES%</directories>
    
    <!-- Ignore patterns -->
    <ignore>/etc/mtab</ignore>
    <ignore>/etc/hosts.deny</ignore>
    <ignore>/etc/mail/statistics</ignore>
    <ignore type="sregex">.log$|.tmp$|.swp$</ignore>
    
    <!-- Windows registry monitoring -->
    <windows_registry>HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run</windows_registry>
    <windows_registry>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services</windows_registry>
  </syscheck>

  <!-- Log collection -->
  <localfile>
    <log_format>syslog</log_format>
    <location>/var/log/auth.log</location>
  </localfile>
  
  <localfile>
    <log_format>syslog</log_format>
    <location>/var/log/syslog</location>
  </localfile>
  
  <!-- Windows Event Log -->
  <localfile>
    <log_format>eventchannel</log_format>
    <location>Security</location>
    <query>Event/System[EventID != 4688]</query>  <!-- Exclude process creation if noisy -->
  </localfile>
  
  <localfile>
    <log_format>eventchannel</log_format>
    <location>System</location>
  </localfile>
  
  <localfile>
    <log_format>eventchannel</log_format>
    <location>Microsoft-Windows-Sysmon/Operational</location>
  </localfile>

  <!-- Active response (allow manager to run scripts on agent) -->
  <active-response>
    <disabled>no</disabled>
  </active-response>
</ossec_config>
```

### Manager ossec.conf Key Sections

```xml
<ossec_config>
  <!-- Global settings -->
  <global>
    <jsonout_output>yes</jsonout_output>
    <alerts_log>yes</alerts_log>
    <logall>no</logall>
    <logall_json>no</logall_json>
    <email_notification>yes</email_notification>
    <smtp_server>smtp.corp.com</smtp_server>
    <email_from>wazuh@corp.com</email_from>
    <email_to>soc@corp.com</email_to>
    <email_maxperhour>12</email_maxperhour>
    <email_log_source>alerts.log</email_log_source>
  </global>

  <!-- Alert levels -->
  <alerts>
    <log_alert_level>3</log_alert_level>    <!-- Minimum level to log -->
    <email_alert_level>10</email_alert_level> <!-- Minimum level to email -->
  </alerts>

  <!-- Remote (agent communication) -->
  <remote>
    <connection>secure</connection>
    <port>1514</port>
    <protocol>tcp</protocol>
    <allowed-ips>10.0.0.0/8</allowed-ips>
  </remote>

  <!-- Vulnerability detection -->
  <vulnerability-detection>
    <enabled>yes</enabled>
    <index-status>yes</index-status>
    <feed-update-interval>60m</feed-update-interval>
  </vulnerability-detection>
</ossec_config>
```

## Custom Rules

Wazuh rules are XML-based and stored in `/var/ossec/etc/rules/` (custom) or `/var/ossec/ruleset/rules/` (default, do not edit).

### Rule Anatomy

```xml
<group name="custom_rules,">
  <!-- Rule structure -->
  <rule id="100001" level="10">
    <!-- Match criteria -->
    <if_sid>5501</if_sid>                        <!-- Match if parent rule 5501 fires -->
    <match>sshd</match>                          <!-- String match in log -->
    <regex>Failed password for root</regex>      <!-- Regex match -->
    <field name="srcip">192\.168\.0\.\d+</field> <!-- Match specific field -->
    
    <!-- Alert metadata -->
    <description>SSH brute force: Multiple failed logins for root</description>
    <group>authentication_failed,pci_dss_10.2.4,gpg13_7.1,gdpr_IV_35.7.d,</group>
    <mitre>
      <id>T1110</id>  <!-- Brute Force -->
    </mitre>
    <options>no_full_log</options>  <!-- Don't include full raw log in alert -->
  </rule>

  <!-- Frequency-based rule (trigger after N events in T seconds) -->
  <rule id="100002" level="12">
    <if_matched_sid>100001</if_matched_sid>     <!-- Based on rule 100001 firing -->
    <same_source_ip />                           <!-- Same IP must trigger repeatedly -->
    <description>SSH brute force: Source IP with multiple root login failures</description>
    <mitre>
      <id>T1110.001</id>
    </mitre>
    <options>no_full_log</options>
    <frequency>8</frequency>                     <!-- 8 occurrences -->
    <timeframe>120</timeframe>                   <!-- Within 120 seconds -->
  </rule>
</group>
```

### Rule Severity Levels

| Level | Meaning | Examples |
|---|---|---|
| 0-2 | Ignore / system noise | Agent start/stop |
| 3-4 | Low: Notable activity | User logins |
| 5-7 | Low-Medium: Uncommon activity | Unusual process |
| 8-9 | Medium: Error / anomaly | Authentication failure |
| 10-12 | High: Attack behavior | Brute force, rootkit |
| 13-15 | Critical: Confirmed attack | Successful exploit |

### Custom Rule Examples

See `references/rule-examples.md` for full example rules: PowerShell encoded-command detection, Office apps spawning scripting engines, and shadow-copy deletion (ransomware pre-step).

### Rule Testing

```bash
# Test rule against a sample log line
/var/ossec/bin/wazuh-logtest

# Paste a log line to see which rules fire:
# Input:
Oct 18 11:30:00 server sshd[1234]: Failed password for root from 192.168.1.100 port 22 ssh2

# Output: Rule IDs that matched, decoded fields, alert level
```

## Custom Decoders

Decoders parse raw log lines into named fields used by rules.

```xml
<!-- Decoder for custom application log format: -->
<!-- Example log: 2024-01-15 14:30:00 AUTH FAILED user=jsmith src=192.168.1.100 -->

<decoder name="custom_auth_app">
  <prematch>^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} AUTH</prematch>
</decoder>

<decoder name="custom_auth_app_fields">
  <parent>custom_auth_app</parent>
  <regex>(\w{4}-\w{2}-\w{2} \w{2}:\w{2}:\w{2}) AUTH (\w+) user=(\w+) src=(\d+\.\d+\.\d+\.\d+)</regex>
  <order>timestamp, action, user, srcip</order>
</decoder>

<!-- Then reference in rule: -->
<rule id="100300" level="8">
  <decoded_as>custom_auth_app</decoded_as>
  <field name="action">FAILED</field>
  <description>Custom app authentication failure for $(user) from $(srcip)</description>
</rule>
```

## File Integrity Monitoring (FIM)

### FIM Configuration Best Practices

**Directories to monitor on Linux:**
```xml
<syscheck>
  <!-- Critical system binaries (hash + permissions check) -->
  <directories check_all="yes" report_changes="yes">/etc</directories>
  <directories check_all="yes">/usr/bin,/usr/sbin,/bin,/sbin</directories>
  
  <!-- Web server document root (realtime for web shells) -->
  <directories realtime="yes" check_all="yes" report_changes="yes">
    /var/www/html
  </directories>
  
  <!-- SSH keys -->
  <directories check_all="yes" report_changes="yes">/root/.ssh</directories>
  
  <!-- Cron jobs -->
  <directories check_all="yes">/etc/cron.d,/etc/cron.daily,/var/spool/cron</directories>
  
  <!-- Ignore noisy files -->
  <ignore>/etc/mtab</ignore>
  <ignore>/etc/mnttab</ignore>
  <ignore>/etc/hosts.deny</ignore>
  <ignore type="sregex">.log$|.swp$|.bak$</ignore>
</syscheck>
```

**Windows critical paths:**
```xml
<syscheck>
  <!-- System binaries -->
  <directories check_all="yes">%WINDIR%\System32</directories>
  
  <!-- Startup locations -->
  <directories realtime="yes" check_all="yes">
    %PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\Startup
  </directories>
  
  <!-- Hosts file tampering -->
  <directories realtime="yes" check_all="yes" report_changes="yes">
    %WINDIR%\System32\drivers\etc
  </directories>
  
  <!-- Registry (Windows only) -->
  <windows_registry check_all="yes">
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
  </windows_registry>
  <windows_registry check_all="yes">
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
  </windows_registry>
</syscheck>
```

## Security Configuration Assessment (SCA)

SCA checks endpoints against security benchmarks (CIS, PCI DSS, etc.) automatically.

### Built-in SCA Policies

Wazuh includes SCA policies for:
- CIS benchmarks (Windows 10, Windows Server, RHEL, Ubuntu, macOS)
- PCI DSS
- HIPAA
- GDPR

### Custom SCA Policy

```yaml
# Custom SCA policy example: /var/ossec/etc/shared/custom_sca.yml
policy:
  id: custom_policy
  file: custom_sca.yml
  name: Custom Security Policy
  description: Internal security standards
  references:
    - https://internal.corp.com/security-standards

requirements:
  title: Custom Requirements
  description: Internal security baseline

checks:
  - id: 10001
    title: "Ensure SSH root login is disabled"
    description: "Root login via SSH should be disabled"
    remediation: "Set PermitRootLogin no in /etc/ssh/sshd_config"
    compliance:
      - pci_dss: "2.2.4"
    rules:
      - 'f:/etc/sshd_config -> r:PermitRootLogin\s*no'
    condition: all

  - id: 10002
    title: "Ensure password maximum age is 90 days or less"
    compliance:
      - pci_dss: "8.3.1"
    rules:
      - 'f:/etc/login.defs -> n:PASS_MAX_DAYS\s*(\d+) compare <= 90'
    condition: all
```

## Active Response

Active response allows Wazuh to automatically execute scripts on agents when specific rules fire.

See `references/active-response.md` for the built-in active response script table, manager ossec.conf binding syntax, and a custom active response script example.

## Vulnerability Detection

Wazuh's vulnerability detection module compares installed packages against CVE databases.

### Configuration

```xml
<!-- Manager ossec.conf -->
<vulnerability-detection>
  <enabled>yes</enabled>
  <index-status>yes</index-status>
  <feed-update-interval>60m</feed-update-interval>
</vulnerability-detection>
```

**Supported OS vulnerability databases:**
- OVAL (RedHat, Debian, Ubuntu, Canonical, SUSE, Arch, Fedora)
- NVD (National Vulnerability Database) — for Windows and macOS
- MSU (Microsoft Security Updates)
- Canonical USN

### Vulnerability Alerts

Vulnerability detection generates alerts with:
- CVE ID
- CVSS score
- Package name and version
- Fixed version (if available)
- Severity (Critical/High/Medium/Low)

View in Dashboard: Vulnerability Detection > Agents overview

## Compliance Mapping

Wazuh rules include compliance tags for automated compliance reporting.

### Rule Compliance Tags

```xml
<rule id="100001" level="10">
  ...
  <group>
    authentication_failed,
    pci_dss_10.2.4,           <!-- PCI DSS requirement -->
    hipaa_164.312.b,           <!-- HIPAA requirement -->
    gdpr_IV_35.7.d,            <!-- GDPR requirement -->
    nist_800_53_AU.14,         <!-- NIST 800-53 control -->
    tsc_CC6.1,                 <!-- SOC2 TSC control -->
  </group>
</rule>
```

### Compliance Dashboards

Navigate to: Wazuh Dashboard > Compliance > select framework (PCI DSS, HIPAA, GDPR, NIST, TSC)

Each compliance dashboard shows:
- Control coverage (which controls have matching events)
- Top failing requirements (most rule triggers per control)
- Per-agent compliance posture
- Trend over time

## Reference Files

Load for deep knowledge:

- `references/architecture.md` — Wazuh manager/agent/indexer/dashboard architecture, cluster deployment, agent groups, enrollment methods, Filebeat configuration, API reference
- `references/agent-deployment.md` — Full agent install commands for Linux (RPM/APT), Windows (MSI), and macOS (PKG).
- `references/rule-examples.md` — Example custom XML rules for PowerShell encoded commands, Office macro execution, and ransomware shadow-copy deletion.
- `references/active-response.md` — Built-in active response scripts, manager configuration binding, and a custom active response script.

Attribution

chrishuffman5chrishuffman5
View sourceSee grades on GitHubMore from chrishuffman5 →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Springboot Security

Java Spring Boot 服务中关于身份验证/授权、验证、CSRF、密钥、标头、速率限制和依赖安全的 Spring Security 最佳实践。

2456590 votes

Security Review

Use this skill when adding authentication, handling user input, working with secrets, creating API endpoints, or implementing payment/sensitive features. Provides comprehensive security checklist and patterns.

2456590 votes

Paperclip Evals

Choose, inspect, validate, and report Paperclip Runner or Product E2E evaluations while preserving evidence, provenance, cost, and failure classification.

953190 votes

Paperclip Task Bridge

Create, comment on, update, and list Paperclip tasks from Hermes using scoped Paperclip API credentials.

953190 votes

Summarize Status

Write a short, colloquial summary for a Paperclip summary slot: open with the 1–3 specific, concrete actions the reader needs to take right now to unblock the work, then a brief plain-language status, streaming progress as it works.

953190 votes
View all in security →