KnnnZzz/Wazuh_SIEM
GitHub: KnnnZzz/Wazuh_SIEM
面向企业和 MSSP 场景的 Wazuh SIEM 开箱即用配置集,集成威胁情报、网络设备监控、主动响应与 SOC 通知,帮助安全团队快速部署端到端的安全事件检测与自动化处置能力。
Stars: 1 | Forks: 0
# 🛡️ Wazuh SIEM — 企业级配置
## 📋 目录
- [概述](#overview)
- [架构](#architecture)
- [仓库结构](#repository-structure)
- [Manager 配置 (ossec.conf)](#manager-configuration)
- [集成](#integrations)
- [VirusTotal](#virustotal-integration)
- [MISP 威胁情报](#misp-threat-intelligence-integration)
- [Telegram 通知](#telegram-notifications)
- [网络设备监控](#network-device-monitoring)
- [OPNsense 防火墙](#opnsense-firewall)
- [MikroTik RouterOS](#mikrotik-routeros)
- [自定义解码器与规则](#custom-decoders--rules)
- [主动响应](#active-responses)
- [Agent 配置](#agent-configurations)
- [Docker Syslog 收集器](#docker-syslog-collector)
- [安装与部署](#installation--deployment)
- [安全注意事项](#security-considerations)
- [许可证](#license)
## 概述
本仓库包含专为企业和 MSSP 环境设计的 **Wazuh SIEM** 部署的完整配置集。它涵盖:
| 功能 | 描述 |
|---|---|
| **威胁情报** | 每次文件完整性事件发生时,针对 VirusTotal 和 MISP 自动进行 IoC 查询 |
| **防火墙监控** | 实时获取 OPNsense filterlog 和 Suricata 事件并发出告警 |
| **路由器审计** | 全面的 MikroTik RouterOS 审计(登录、防火墙、DNS、脚本、计划任务) |
| **主动响应** | 自动清除威胁,在 OPNsense 上进行 IP 封禁,以及 firewall-drop 操作 |
| **SOC 通知** | 实时 Telegram 告警,支持针对 MikroTik 的格式化,以提供即时的 SOC 可视性 |
| **文件完整性监控 (FIM)** | 跨 Linux 和 Windows 终端的 Syscheck 实时监控 |
| **漏洞检测** | 原生 Wazuh 漏洞检测,每 60 分钟更新数据源 |
| **合规性** | 规则标记有 MITRE ATT&CK、PCI DSS 和 GDPR 映射 |
## 架构
```
┌─────────────────────────────────┐
│ Wazuh Manager │
│ WAZUH_MANAGER_IP │
│ │
│ ┌───────────┐ ┌─────────────┐ │
│ │ VirusTotal│ │ MISP │ │
│ │Integration│ │ Integration │ │
│ └───────────┘ └─────────────┘ │
│ ┌───────────┐ ┌─────────────┐ │
│ │ Telegram │ │ Wazuh │ │
│ │ Alerts │ │ Indexer │ │
│ └───────────┘ └─────────────┘ │
└────────┬────────────┬───────────┘
│ │
┌─────────────────┼────────────┼──────────────────┐
│ │ │ │
┌────────▼──────┐ ┌──────▼──────┐ ┌──▼───────────┐ ┌──▼────────────┐
│ Linux Agents │ │ Windows │ │ OPNsense │ │ Docker │
│ (FIM /tmp, │ │ Agents │ │ Agent │ │ Collector │
│ /root) │ │ (FIM C:\) │ │ (Syslog + │ │ (MikroTik │
│ │ │ │ │ Suricata) │ │ Syslog) │
└───────────────┘ └─────────────┘ └──────────────┘ └──────────────┘
▲
│ UDP 514
┌──────┴──────┐
│ MikroTik │
│ Routers │
└─────────────┘
```
## 仓库结构
```
Wazuh_SIEM/
├── ossec.conf # Main Wazuh Manager configuration
├── Dashboards.ndjson # Wazuh/OpenSearch dashboard export (importable)
├── README.md
│
├── Agents/ # Per-group agent.conf files (shared_agent_config)
│ ├── Linux/agent.conf # Linux agents — FIM on /tmp, /root
│ ├── MISP/agent.conf # MISP server agent — FIM on /tmp
│ ├── MISP_WINDOWS/agent.conf # Windows MISP agent — FIM on C:\Temp
│ ├── OPNSense/agent.conf # OPNsense agent — filter, Suricata, auth, system logs
│ └── server-A/agent.conf # MikroTik log collector — reads /var/log/mikrotik/
│
├── VirusTotal/ # VirusTotal integration files
│ ├── virustotal # Shell wrapper (calls virustotal.py)
│ ├── virustotal.py # Python integration script
│ └── remove-threat.sh # Active response: delete malicious files
│
├── MISP/ # MISP integration files
│ ├── custom-misp_file_hashes.py # Custom Python integration (multi-IoC)
│ └── Rules/
│ ├── misp.xml # MISP generic rules (100620–100622)
│ └── misp_files_hashes.xml # MISP file-hash rules (100800–100805)
│
├── Telegram/ # Telegram SOC notification integration
│ └── custom-telegram # Bash script — context-aware alert notifications
│
├── OPNSense/ # OPNsense firewall integration
│ ├── Decoders/OPNsense_decoder.xml # Filterlog decoder (pcre2)
│ ├── Rules/OPNsense_rule.xml # Firewall rules (100900–100912)
│ └── active-response/opnsense-block.sh # Active response: block IP via OPNsense API
│
├── MikroTik/ # MikroTik RouterOS integration
│ ├── Decoders/
│ │ ├── MikroTik.xml # v2 decoders (direct syslog)
│ │ └── mikrotik-decoders.xml # Docker collector decoders (20+ event types)
│ ├── Rules/
│ │ ├── MikroTik.xml # v2 rules: login fail/success, brute-force (110011–110013)
│ │ └── mikrotik-rules.xml # Docker collector rules: full audit (101000–101023)
│ └── docker/wazuh-collector/ # Dockerized syslog collector for MikroTik
│ ├── docker-compose.yml # Docker Compose with socat UDP listener
│ ├── ossec.conf # Minimal agent config for the container
│ └── logs_mikrotik/ # Persistent volume for MikroTik logs
│
└── local/ # Wazuh local custom decoders & rules
├── Decoders/local_decoder.xml # Squid proxy & DNS decoders
└── Rules/local_rules.xml # Squid, DNS, and SSH rules (100001, 100100–100101)
```
## Manager 配置
主配置文件 [`ossec.conf`](ossec.conf) 配置了 Wazuh Manager 的以下关键部分:
### 全局设置
- 启用 JSON 和纯文本告警输出
- 完整日志归档(`logall` / `logall_json`)用于取证分析
- Agent 断开连接告警时间:**15 分钟**
### 远程连接
| 端口 | 协议 | 用途 |
|------|----------|---------|
| 1514/tcp | Secure | Agent 通信(主要) |
| 514/udp | Syslog | OPNsense 防火墙日志 (`OPNSENSE_SUBNET/24`) |
| 514/udp | Syslog | MikroTik 路由器日志 (`MIKROTIK_ROUTER_IP_1`, `MIKROTIK_ROUTER_IP_2`) |
### 安全模块
| 模块 | 状态 | 配置 |
|--------|--------|---------------|
| **Rootcheck** | ✅ 启用 | 每 12 小时 — 检查文件、木马、设备、PID、端口 |
| **Syscheck (FIM)** | ✅ 启用 | 每 12 小时 — 监控 `/etc`、`/usr/bin`、`/usr/sbin`、`/bin`、`/sbin`、`/boot` |
| **Syscollector** | ✅ 启用 | 每 1 小时 — 硬件、操作系统、网络、软件包、端口、进程 |
| **SCA** | ✅ 启用 | 每 12 小时 — 安全配置评估 |
| **漏洞检测** | ✅ 启用 | 数据源每 60 分钟更新 |
| **Osquery** | ❌ 禁用 | 已为 `/var/log/osquery/` 预配置 |
| **CIS-CAT** | ❌ 禁用 | 已使用 Java/CIS-CAT 路径预配置 |
### 身份验证 (wazuh-authd)
- 端口 **1515**,采用基于密码的注册
- 断开连接 **1 小时** 后强制重新注册
- 强密码套件:`HIGH:!ADH:!EXP:!MD5:!RC4:!3DES:!CAMELLIA`
### CDB 列表
Manager 加载以下 **CDB 查询列表** 用于 IoC 匹配:
- `malicious-ioc/malware-hashes`
- `malicious-ioc/malicious-ip`
- `malicious-ioc/malicious-domains`
## 集成
### VirusTotal 集成
**目的:** 自动将 Syscheck (FIM) 检测到的文件哈希值与 VirusTotal 数据库进行比对扫描。
| 设置 | 值 |
|---------|-------|
| 触发条件 | `syscheck` 组事件 |
| API 版本 | v2 (`/vtapi/v2/file/report`) |
| 告警格式 | JSON |
#### 文件
| 文件 | Manager 上的位置 | 描述 |
|------|---------------------|-------------|
| `virustotal` | `/var/ossec/integrations/virustotal` | Shell 封装器 — 解析路径并启动 Python 脚本 |
| `virustotal.py` | `/var/ossec/integrations/virustotal.py` | 核心逻辑 — 从 syscheck 告警中提取 MD5,查询 VT API,将结果发送到 Wazuh socket |
| `remove-threat.sh` | `/var/ossec/active-response/bin/remove-threat.sh` | 主动响应 — 删除被标记为恶意的文件(由规则 `87105` 触发) |
#### 工作原理
1. **Syscheck** 检测到新建/修改的文件并计算其 MD5 哈希
2. **VirusTotal 集成** 使用该哈希查询 VT API
3. 如果 **positives > 0**,Wazuh 会生成高级别告警(规则 `87105`)
4. **主动响应** `remove-threat.sh` 自动从终端**删除**该恶意文件
### MISP 威胁情报集成
**目的:** 将多种 IoC 类型(文件哈希、IP、域名、注册表项、进程名称)与自建的 MISP 实例进行交叉比对。
| 设置 | 值 |
|---------|-------|
| 触发条件 | 所有级别 ≥ 5 的告警 |
| MISP URL | `https://misp.local` |
| 告警格式 | JSON |
#### 文件
| 文件 | Manager 上的位置 | 描述 |
|------|---------------------|-------------|
| `custom-misp_file_hashes.py` | `/var/ossec/integrations/custom-misp_file_hashes.py` | 多 IoC MISP 查询脚本 |
#### 支持的 IoC 提取
自定义 MISP 脚本 (`custom-misp_file_hashes.py`) 从多种告警类型中提取指标:
| # | IoC 类型 | 来源 | 提取字段 |
|---|----------|--------|------------------|
| 1 | **文件哈希** | Syscheck (FIM) | `md5_after`、`sha1_after`、`sha256_after` |
| 2 | **注册表项** | Syscheck (Windows) | `syscheck.path` |
| 3 | **域名** | Sysmon 事件 22 (DNS) | `win.eventdata.queryName` |
| 4 | **IP / 文件名** | Windows 事件 4688 | 命令行 IP 正则表达式或 `newProcessName` |
| 5 | **IP 与域名** | 网络 / MikroTik | `srcip`、`domain`、`srcaddr` |
#### 主要特性
- **企业白名单** — 通过 `options` JSON 配置或硬编码的备用方案(跳过 `127.0.0.1`、`svchost.exe` 等)
- **不区分大小写** 的白名单匹配
- **MISP Sightings** — 选择性地将 sighting 推送回 MISP 以实现协同威胁情报
- **私有 IP 过滤** — 内置 RFC 1918 过滤器(在实验室/测试环境中禁用)
- **主动响应注入** — 将 `srcip` 或 `syscheck.path` 注入到输出消息中,以便主动响应可以据此执行操作
#### MISP 规则
**`misp.xml`**(通用):
| 规则 ID | 级别 | 描述 |
|---------|-------|-------------|
| 100620 | 10 | MISP 事件(基础规则) |
| 100621 | 5 | MISP:API 问题 |
| 100622 | 12 | MISP:发现 IoC |
**`misp_files_hashes.xml`**(特定于文件哈希):
| 规则 ID | 级别 | 描述 | MITRE |
|---------|-------|-------------|-------|
| 100800 | 0 | 基础分组规则 | — |
| 100801 | 0 | 在 MISP 中未找到哈希 | — |
| 100802 | **15** | **威胁确认** — 在 MISP 中发现 IoC! | T1068 |
| 100803 | 10 | 无效的 MISP API 凭证 | — |
| 100804 | 10 | 超出速率限制 | — |
| 100805 | 10 | MISP 服务器错误 | — |
### Telegram 通知
**目的:** 向 Telegram 频道/群组发送实时且具备上下文感知的告警通知,以提供即时的 SOC 可视性。
| 设置 | 值 |
|---------|-------|
| 触发条件 | 所有级别 ≥ 12 的告警 |
| 告警格式 | JSON |
| 脚本 | `Telegram/custom-telegram` |
#### ossec.conf 配置
```
custom-telegram
12
http://localhost
json
```
#### 文件
| 文件 | Manager 上的位置 | 描述 |
|------|---------------------|-------------|
| `custom-telegram` | `/var/ossec/integrations/custom-telegram` | Bash 脚本 — 解析告警 JSON 并通过 Telegram Bot API 发送格式化的 HTML 消息 |
#### 工作原理
该脚本基于告警的规则组使用**两种通知模式**:
**🚨 MikroTik 模式** — 当告警属于 `mikrotik` 组时:
```
🚨 MIKROTIK ALERT 🚨
Level: 15
Threat: MikroTik log: Brute-force attack detected from IP 10.0.0.100
User: admin
Source IP: 10.0.0.100
Target (User/Rule): admin1
Method: winbox
🛡️
```
提取 MikroTik 特定字段:`admin_user`、`target_user`、`srcaddr`、`method`。
**⚠️ 通用模式** — 用于所有其他的高严重性告警:
```
⚠️ WAZUH SOC ALERT ⚠️
Level: 15
Agent: web-server-01
Threat: MISP Threat Intel: Confirmed Detection - Threat found on the system!
Source IP: 10.0.0.50
🛡️
```
提取标准字段:`agent.name`、`rule.description`、`data.srcip`。
#### 主要特性
- **上下文感知格式化** — 自动检测 MikroTik 告警并渲染路由器特定字段
- **HTML 解析** — 使用 Telegram 的 HTML 模式实现粗体标签和清晰的格式化
- **Null 安全提取** — 所有 `jq` 调用均使用 `// empty` 备用方案,以防止因字段缺失导致崩溃
- **依赖极少** — 仅需 `bash`、`jq` 和 `curl`
## 网络设备监控
### OPNsense 防火墙
自定义解码器和规则解析通过 syslog 转发的 OPNsense `filterlog` 输出。
#### 解码器 (`OPNsense_decoder.xml`)
从 OPNsense filterlog CSV 格式中提取:
- `tracker` — 规则追踪器哈希
- `action` — `pass` / `block`
- `protocol`、`srcip`、`dstip`、`srcport`、`dstport`
#### 规则 (`OPNsense_rule.xml`)
| 规则 ID | 级别 | 描述 | MITRE |
|---------|-------|-------------|-------|
| 100900 | 0 | 基础分组规则 | — |
| 100901 | 0 | 流量已允许(静默) | — |
| 100902 | 0 | 流量已阻止(静默) | — |
| 100910 | 0 | 误报:广播丢弃 | — |
| 100911 | 0 | 误报:IPv6 多播丢弃 | — |
| 100912 | 0 | 静默原生规则 87702 的广播告警 | — |
| 100903 | **10** | **来自同一 IP 的多次阻止**(45 秒内 18 次)— 可能是扫描/泛洪 | T1118 |
| 100905 | **12** | **Q-Feeds:确认并阻止了恶意 IP** | T1595 |
#### Agent 配置 (`Agents/OPense/agent.conf`)
OPNsense Agent 监控:
- `/var/log/filter/latest.log` — 防火墙过滤日志
- `/var/log/suricata/eve.json` — Suricata IDS 事件 (JSON)
- `/var/log/auth/latest.log` — 身份验证日志
- `/var/log/system/latest.log` — 系统日志
- `/conf` 目录 — 针对配置文件的 FIM
### MikroTik RouterOS
根据收集方式的不同,两组解码器/规则用于处理 MikroTik 日志:
#### 方式 1:直接 Syslog (`MikroTik.xml`)
适用于通过 syslog 直接发送到 Wazuh Manager 的 MikroTik 日志。使用 `MikroTik::` 前缀进行匹配。
| 规则 ID | 级别 | 描述 | MITRE |
|---------|-------|-------------|-------|
| 110011 | 12 | 登录失败 | — |
| 110012 | 3 | 成功登录 | — |
| 110013 | **15** | **检测到暴力破解**(同一 IP 在 120 秒内失败 5 次) | T1110 |
#### 方式 2:Docker 收集器 (`mikrotik-decoders.xml` / `mikrotik-rules.xml`)
适用于通过 Docker 化 syslog 收集器收集的 MikroTik 日志(会预置路由器 IP)。
**解码器(20 多种事件类型):**
| 解码器 | 事件类型 |
|---------|------------|
| `mikrotik-identity-change` | 系统标识更改 |
| `mikrotik-time-change` | 系统时间被修改 |
| `mikrotik-timezone-change` | 时区设置更改 |
| `mikrotik-ppp-login` | PPP/VPN 用户登录 |
| `mikrotik-ppp-auth-failed` | PPP 身份验证失败 |
| `mikrotik-ppp-logout` | PPP 用户登出 |
| `mikrotik-failed-user-login` | 管理员登录失败 |
| `mikrotik-successful-user-login` | 管理员登录成功 |
| `mikrotik-user-logout` | 管理员登出 |
| `mikrotik-user-modify` | 用户被添加/修改/移除 |
| `mikrotik-user-password-change` | 密码已更改 |
| `mikrotik-ipv4-filter-rule-modify` | IPv4 防火墙规则被添加/更改 |
| `mikrotik-ipv4-filter-rule-removed` | IPv4 防火墙规则被移除 |
| `mikrotik-ipv6-filter-rule-modify` | IPv6 防火墙规则被添加/更改 |
| `mikrotik-ipv6-filter-rule-removed` | IPv6 防火墙规则被移除 |
| `mikrotik-ip-service-change` | IP 服务配置更改 |
| `mikrotik-dns-change-cli` | DNS 设置已更改 (SSH/API) |
| `mikrotik-dns-change-web-winbox` | DNS 设置已更改 (Web/WinBox) |
| `mikrotik-script-add-cli` | 脚本已添加 (SSH/API) |
| `mikrotik-script-add-web-winbox` | 脚本已添加 (Web/WinBox) |
| `mikrotik-scheduler-add-cli` | 计划任务已添加 (SSH/API) |
| `mikrotik-scheduler-add-web-winbox` | 计划任务已添加 (Web/WinBox) |
| `mikrotik-ppp-secret-add` | PPP 密钥已添加 |
**规则:**
| 规则 ID | 级别 | 描述 | MITRE |
|---------|-------|-------------|-------|
| 101000 | 0 | Docker 收集器的基础规则 | — |
| 101001 | 14 | 系统标识已更改 | — |
| 101002 | 12 | 系统时间已更改 | — |
| 101003 | 8 | 时区已更改 | — |
| 101004 | 10 | PPP 用户登录 | — |
| 101005 | 10 | PPP 身份验证失败 | — |
| 101006 | 10 | PPP 用户登出 | — |
| 101007 | 12 | 管理员登录失败 | — |
| 201007 | **14** | **暴力破解**(3 分钟内失败 10 次) | T1110 |
| 101008 | 8 | 管理员登录成功 | — |
| 101009 | 6 | 管理员登出 | — |
| 101010 | 12 | 用户被添加/修改/移除 | — |
| 101011 | 14 | 密码已更改 | — |
| 101012 | 12 | 防火墙规则已添加/更改 | — |
| 101013 | 13 | 防火墙规则已移除 | — |
| 101014 | 8 | IPv6 防火墙规则已添加/更改 | — |
| 101015 | 13 | IPv6 防火墙规则已移除 | — |
| 101016 | 10 | IP 服务已更改 | — |
| 101017 | 7 | DNS 配置已更改 | — |
| 101020 | 13 | 脚本已添加 | — |
| 101022 | 12 | 计划任务已添加 | — |
| 101023 | 10 | PPP 密钥已添加 | — |
## 自定义解码器与规则
### 本地解码器 (`local/Decoders/local_decoder.xml`)
| 解码器 | 目的 |
|---------|---------|
| `custom_squid` | 解析 Squid 代理日志(程序名匹配) |
| `custom_squid_domain` | 从 Squid `GET` 请求中提取域名 |
| `custom-dns` | 解析自定义 DNS 查询日志 |
| `custom-dns-domain` | 从 DNS 日志中提取查询的域名 |
### 本地规则 (`local/Rules/local_rules.xml`)
| 规则 ID | 级别 | 组 | 描述 |
|---------|-------|-------|-------------|
| 100001 | 5 | `sshd` | 来自特定 IP 的 SSH 身份验证失败(示例) |
| 100100 | 5 | `squid` | 通过 Squid 代理检测到的 Web 流量 |
| 100101 | 5 | `custom_dns` | 检测到可疑的 DNS 查询 |
## 主动响应
| 名称 | 脚本 | 触发规则 | 操作 | 范围 |
|------|--------|-------------|--------|-------|
| `remove-threat` | `remove-threat.sh` | `87105`(VirusTotal 检测为恶意) | 删除恶意文件 | 本地 Agent |
| `firewall-drop` | `firewall-drop`(内置) | `100802`(发现 MISP IoC) | 通过 iptables 阻止 IP(5 分钟超时) | 本地 Agent |
| `opnsense-ban` | `opnsense-block.sh` | `110013`(MikroTik 暴力破解) | 通过 API 将 IP 添加到 OPNsense `Wazuh_Blacklist` 别名中 | 本地 (Manager) |
### OPNsense 主动响应 (`opnsense-block.sh`)
当在 MikroTik 路由器上检测到暴力破解攻击时,该脚本会:
1. 从告警 JSON 中提取 `srcip`
2. 调用 **OPNsense API** (`/api/firewall/alias_util/add/Wazuh_Blacklist`)
3. 将攻击 IP 添加到 `Wazuh_Blacklist` 防火墙别名中
4. 引用此别名的 OPNsense 防火墙规则将阻止来自该 IP 的所有流量
## Agent 配置
基于组的 `agent.conf` 文件通过集中管理(`/var/ossec/etc/shared//agent.conf`)进行部署:
| 组 | 操作系统 | FIM 目录 | 额外日志来源 |
|-------|----|-----------------|-------------------|
| `Linux` | Linux | `/tmp`、`/root` (实时) | — |
| `MISP` | Linux | `/tmp` (实时) | — |
| `MISP_WINDOWS` | Windows | `C:\Temp` (实时) | — |
| `OPNSense` | FreeBSD | `/conf` (实时) | Suricata EVE、filter、auth、system 日志 |
| `server-A` | Linux (Docker) | — | `/var/log/mikrotik/mikrotik.log` |
## Docker Syslog 收集器
`docker/wazuh-collector/` 目录包含一个 **Docker 化的 Wazuh Agent**,它作为 MikroTik 路由器的 syslog 到 Wazuh 的桥梁。
### 工作原理
```
MikroTik Router ──UDP 514──▶ Docker Container (socat) ──▶ /var/log/mikrotik/mikrotik.log
│
▼
Wazuh Agent reads log ──▶ Wazuh Manager
```
1. 容器运行 `socat` 以监听 **UDP 514**
2. 每条 syslog 消息都**预置了发送者的 IP** (`$SOCAT_PEERADDR`),用于多路由器识别
3. 消息被追加到 `/var/log/mikrotik/mikrotik.log`
4. Wazuh Agent(运行在容器内)读取日志并将其转发给 Manager
5. Manager 应用 `mikrotik-collector` 解码器和规则
### 部署
```
cd docker/wazuh-collector/
docker-compose up -d
```
**环境变量**(在 `docker-compose.yml` 中设置):
| 变量 | 值 |
|----------|-------|
| `WAZUH_MANAGER` | `WAZUH_MANAGER_IP` |
| `WAZUH_REGISTRATION_PASSWORD` | *(已配置)* |
| `WAZUH_AGENT_GROUP` | `server-A` |
## 安装与部署
### 前置条件
- **Wazuh Manager** 4.x 安装在 Ubuntu 24.04 上
- **Wazuh Indexer** 运行在 `WAZUH_INDEXER_IP:9200` (HTTPS)
- 收集器主机上已安装 **Docker** 和 **Docker Compose**
- 可访问位于 `https://misp.local` 的 **MISP** 实例
- **VirusTotal API 密钥**(免费或高级版)
- 已启用 API 访问的 **OPNsense**
### 分步指南
1. **Manager 配置**
# 复制主配置文件
cp ossec.conf /var/ossec/etc/ossec.conf
2. **自定义规则和解码器**
# 本地规则与解码器
cp local/Decoders/local_decoder.xml /var/ossec/etc/decoders/local_decoder.xml
cp local/Rules/local_rules.xml /var/ossec/etc/rules/local_rules.xml
# MISP 规则
cp MISP/Rules/misp.xml /var/ossec/etc/rules/misp.xml
cp MISP/Rules/misp_files_hashes.xml /var/ossec/etc/rules/misp_files_hashes.xml
# OPNsense 解码器和规则
cp OPNsense/Decoders/OPNsense_decoder.xml /var/ossec/etc/decoders/
cp OPNsense/Rules/OPNsense_rule.xml /var/ossec/etc/rules/
# MikroTik 解码器和规则
cp MikroTik/Decoders/*.xml /var/ossec/etc/decoders/
cp MikroTik/Rules/*.xml /var/ossec/etc/rules/
3. **集成**
# VirusTotal
cp VirusTotal/virustotal /var/ossec/integrations/virustotal
cp VirusTotal/virustotal.py /var/ossec/integrations/virustotal.py
chmod 750 /var/ossec/integrations/virustotal
chown root:wazuh /var/ossec/integrations/virustotal*
# MISP
cp MISP/custom-misp_file_hashes.py /var/ossec/integrations/
chmod 750 /var/ossec/integrations/custom-misp_file_hashes.py
chown root:wazuh /var/ossec/integrations/custom-misp_file_hashes.py
# Telegram
cp Telegram/custom-telegram /var/ossec/integrations/custom-telegram
chmod 750 /var/ossec/integrations/custom-telegram
chown root:wazuh /var/ossec/integrations/custom-telegram
4. **主动响应**
# VirusTotal 威胁清除
cp VirusTotal/remove-threat.sh /var/ossec/active-response/bin/
chmod 750 /var/ossec/active-response/bin/remove-threat.sh
chown root:wazuh /var/ossec/active-response/bin/remove-threat.sh
# OPNsense IP 阻止
cp OPNSense/active-response/opnsense-block.sh /var/ossec/active-response/bin/
chmod 750 /var/ossec/active-response/bin/opnsense-block.sh
chown root:wazuh /var/ossec/active-response/bin/opnsense-block.sh
5. **Agent 组配置**
# 创建组目录并复制配置
for group in Linux MISP MISP OPNSense server-A; do
mkdir -p /var/ossec/etc/shared/$group
cp Agents/$group/agent.conf /var/ossec/etc/shared/$group/agent.conf
done
6. **重启 Manager**
systemctl restart wazuh-manager
7. **部署 Docker 收集器**
cd docker/wazuh-collector/
docker-compose up -d
## 安全注意事项
| 项目 | 文件 | 所需操作 |
|------|---------|-----------------|
| VirusTotal API 密钥 | `ossec.conf` | 替换为环境变量或 vault 引用 |
| MISP API 密钥 | `ossec.conf` | 替换为环境变量或 vault 引用 |
| OPNsense API 密钥/Secret | `opnsense-block.sh` | 替换为环境变量或 vault 引用 |
| Telegram Bot Token | `custom-telegram` | 将 `YOUR_TOKEN` 和 `YOUR_CHAT_ID` 替换为您的实际值 |
| Wazuh 注册密码 | `docker-compose.yml` | 替换为环境变量 |
| 内部 IP 地址 | 多个文件 | 如有需要请检查并进行泛化处理 |
| SSL 证书 | `ossec.conf` (indexer 部分) | 确保路径对您的环境是正确的 |
## 许可证
本项目按原样提供,用于教育和专业用途。
- **VirusTotal 集成**(`virustotal.py`、`virustotal`)基于官方 Wazuh 集成,并在 **GPLv2** 许可下发布。
- **MISP 集成**(`custom-misp_file_hashes.py`)是自定义开发,并在 **AGPL-3.0** 许可下发布。
- 所有自定义解码器、规则和主动响应脚本均为原创作品。
## **由 [KnnnZzz](https://github.com/KnnnZzz) 攻防与开发** 👾
使用 🛡️ Wazuh · 🔍 VirusTotal · 🧬 MISP · 🔥 OPNsense · 📡 MikroTik · 📲 Telegram 构建
标签:Ask搜索, Cloudflare, Docker, GDPR, Metaprompt, MikroTik, MITRE ATT&CK, MSSP, OISF, OPNsense, PCI DSS, RouterOS, Suricata, Syslog采集器, Telegram, VirusTotal, Wazuh, x64dbg, 主动响应, 人工智能安全, 企业安全, 企业级配置, 合规性, 威胁情报, 安全告警, 安全运营中心, 安全防御评估, 应用安全, 开发者工具, 托管安全服务, 日志管理, 机器人通知, 现代安全运营, 端点安全, 系统日志, 红队行动, 网络安全, 网络映射, 网络资产管理, 自动化防御, 自定义解码器, 补丁管理, 请求拦截, 路由器审计, 逆向工具, 防火墙监控, 隐私保护