Halino/Wazuh-Unifi

GitHub: Halino/Wazuh-Unifi

为 Wazuh 提供 UniFi 网络设备的日志解码器、分类规则与关联告警,实现 UniFi 环境的集中监控与安全分析。

Stars: 7 | Forks: 4

# 用于 Wazuh 的 UniFi log parser 本项目提供 **decoders** 和 **rules**,使 Wazuh 能够摄取和分析 UniFi 日志(CEF 导出和设备 syslog)。 ## 包含内容 | 文件 | 用途 | |------|--------| | `wazuh/decoders/unifi_decoders.xml` | 用于 UniFi CEF 和设备 syslog 的 decoders | | `wazuh/rules/unifi_rules.xml` | 用于分类、告警和关联 UniFi 事件的 rules | | `wazuh/ossec-unifi.conf.snippet` | 用于远程 syslog 的 `ossec.conf` 示例片段 | | `tests/sample_logs.txt` | 使用 `wazuh-logtest` 进行测试的示例日志行 | ## 支持的日志来源 1. **UniFi CEF 导出 (SIEM)** 当您将日志发送到 SIEM/syslog 服务器时,来自 **Settings > Control Plane > Integrations > Activity Logging** 的日志。格式:`CEF:0|Ubiquiti|UniFi Network|...` 2. **UniFi 设备 syslog** 来自 UniFi 设备(APs、交换机、网关)的原始 syslog,例如 `hostapd`、`ath*`、STA 关联/取消关联。 3. **网关防火墙 (netfilter)** 当您在网关防火墙/流量规则 (UDM/UXG/USG) 上启用 **Log** 时,网关会发送内核 netfilter 日志行,如 `[WAN_LOCAL-D-0] DESCR="..." SRC=... DST=... PROTO=... DPT=...`。`unifi-fw` decoder 会解析这些内容;rules 对 ACCEPT / DROP-REJECT / **DNAT**(入站到端口转发/暴露的服务)进行分类,并关联端口扫描。 ## 部署 ### 1. 将 decoder 和 rules 复制到 Wazuh manager 在 Wazuh manager 上: ``` # Decoders sudo cp wazuh/decoders/unifi_decoders.xml /var/ossec/etc/decoders/ # Rules sudo cp wazuh/rules/unifi_rules.xml /var/ossec/etc/rules/ ``` ### 2. (可选)在 manager 上接收 syslog 如果 UniFi(或您的 SIEM)将 syslog **发送到 Wazuh manager**,请将 `wazuh/ossec-unifi.conf.snippet` 中的代码片段添加到 `/var/ossec/etc/ossec.conf` 中的 `` 内部: - 将 `` 设置为您的 UniFi/网络范围(例如 `192.168.0.0/16`)。 - 经典 syslog 使用 `udp`;如果您的发送方使用 TCP,请使用 `tcp` 和端口 514。 ### 3. 替代方案:syslog 写入文件,然后由 Wazuh 读取该文件 如果另一台主机(例如 rsyslog)接收到 UniFi syslog 并将其写入文件,请让 Wazuh 指向该文件。 **rsyslog 示例**(例如 `/etc/rsyslog.d/unifi.conf`),用于将 UniFi 消息写入文件: ``` # 在 514 端口接收 UDP syslog,将 UniFi 写入文件 module(load="imudp") input(type="imudp" port="514") if $msg contains "CEF:0|Ubiquiti" or $msg contains "hostapd" or $msg contains "ath" then { action(type="omfile" file="/var/log/unifi.log") } ``` **Wazuh** - 在拥有 `/var/log/unifi.log` 文件的主机(manager 或 agent)上,将其添加到 `` 内部的 `ossec.conf` 中: ``` /var/log/unifi.log syslog ``` - 如果该文件位于 **manager** 上,请将此内容添加到 manager 的 `ossec.conf` 中。 - 如果该文件位于另一台服务器上,请在该处安装 Wazuh **agent**,并将此代码块添加到 **agent** 的 `ossec.conf`(或等效文件)中,以便 agent 将该日志转发给 manager。 ### 4. 重启 Wazuh ``` sudo systemctl restart wazuh-manager ``` ## UniFi 端:将日志发送到 Wazuh - **CEF(推荐)** 在 UniFi 中:**Settings > Control Plane > Integrations > Activity Logging** > 选择 **SIEM Server** > 设置您的 Wazuh manager(或 syslog 中继)的 **IP** 和 **端口**(例如 **514**)。 日志将为 CEF 格式,并由 `unifi_decoders.xml` 解码。 - **设备 syslog** 在 UniFi 控制器/设备上,将 **Remote syslog** 设置为相同的 IP 和端口。设备将发送 hostapd 样式的消息;相同的 decoders/rules 会处理它们。 ## 规则组和级别 | 组 / 概念 | 示例 | |----------------|----------| | `unifi` | 所有 UniFi 事件 | | 管理员 / 配置 | 管理员访问、配置更改 (级别 3-5) | | 客户端 WiFi | 客户端连接/断开/漫游 (级别 2) | | 安全 | 威胁检测并阻止、蜜罐、防火墙阻止 (级别 5-8) | | WAN / 性能 | 故障转移、高延迟、丢包 (级别 4-5) | | 电源 | PoE / AP 功率不足、超出 PoE 可用性 (级别 5-6) | | 网关防火墙 | netfilter ACCEPT (静默) / DROP-REJECT / DNAT 端口转发命中 (级别 0-4) | | 关联 | 暴力破解、取消认证震荡 (deauth flapping)、重复阻止、端口扫描、多重威胁 (级别 8-12) | 在 Wazuh UI 中,您可以使用例如 `rule.groups:unifi`、`rule.groups:firewall` 或规则 ID 范围 `100100`-`100234` 进行过滤。 ## 关联 / 频率规则 当基础规则在时间窗口内重复触发时,这些规则将激活: | 规则 ID | 触发条件 | 频率 / 窗口 | 级别 | 描述 | |---------|------------|-------------------|-------|-------------| | 100210 | 100204 (RADIUS) | 60 秒内 5 次 | 10 | 可能的 RADIUS 暴力破解 | | 100211 | 100201 (取消关联) | 60 秒内 10 次 | 8 | 快速取消关联 (取消认证 / 震荡) | | 100212 | 100111 (防火墙阻止) | 120 秒内 10 次,相同源 | 8 | 重复的防火墙阻止 (扫描) | | 100213 | 100109 (威胁) | 120 秒内 3 次 | 12 | 多次威胁检测 | | 100214 | 100120 (内部威胁) | 300 秒内 3 次,相同源 | 12 | 来自主机的多次内部威胁 | ### 激进的关联规则 这些规则**更敏感且可能产生更多噪音**。它们都会将 `aggressive` 添加到 `rule.groups` 中,以便您可以对其进行过滤或区别处理: | 规则 ID | 触发条件 | 频率 / 窗口 | 级别 | 描述 | |---------|------------|-------------------|-------|-------------| | 100215 | 100111 (防火墙阻止) | 300 秒内 3 次,相同源 | 10 | 激进:早期防火墙扫描检测 | | 100216 | 100204 (RADIUS) | 300 秒内 3 次,相同源 | 10 | 激进:早期 RADIUS 暴力破解嫌疑 | | 100217 | 100214 (内部威胁) | 900 秒内 2 次,相同源 | 14 | 激进:持续的内部威胁源 | | 100218 | 100109 (威胁) | 600 秒内 2 次,相同源 | 14 | 激进:触发多次威胁检测的源 | ## MITRE ATT&CK 映射 规则包含 `` 标签,因此事件会显示在 Wazuh MITRE 仪表板中: | 技术 | ID | 规则 | |-----------|-----|-------| | Valid Accounts | T1078 | 100101 (管理员访问) | | Impair Defenses | T1562 | 100102 (配置更改) | | Hardware Additions | T1200 | 100103 (设备采用) | | Service Stop | T1489 | 100104, 100112 (设备离线,WAN 故障转移) | | Application Layer Protocol | T1071 | 100109, 100111, 100213, 100232 (威胁、防火墙阻止) | | Network Service Scanning | T1046 | 100110, 100212, 100234 (蜜罐、重复阻止、端口扫描) | | Exploit Public-Facing Application | T1190 | 100233 (针对暴露服务的 DNAT / 端口转发命中) | | Brute Force | T1110 | 100210 (RADIUS 暴力破解) | | Network Denial of Service | T1498 | 100211 (取消认证震荡) | ## 测试 decoder 和 rule 在 manager 上使用 `wazuh-logtest`: ``` /var/ossec/bin/wazuh-logtest ``` 粘贴示例行,例如: ``` CEF:0|Ubiquiti|UniFi Network|9.3.33|544|Admin Accessed UniFi Network|1|UNIFIcategory=System UNIFIhost=Office UDM Pro src=203.0.113.59 msg=Admin accessed. ``` 您应该会看到 `unifi-cef` decoder 和相应的规则(例如 100101)匹配。 完整的带注释示例日志集位于 `tests/sample_logs.txt` 中——每行都注明了预期的 decoder 和规则 ID。 ## 文件结构 ``` Wazuh-Unifi/ |-- README.md |-- LICENSE |-- CHANGELOG.md |-- .gitignore |-- tests/ | |-- sample_logs.txt |-- wazuh/ | |-- decoders/ | | |-- unifi_decoders.xml | |-- rules/ | | |-- unifi_rules.xml | |-- ossec-unifi.conf.snippet ``` ## 兼容性 根据 2026 年 2 月的官方 [UniFi System Logs & SIEM Integration](https://help.ui.com/hc/en-us/articles/33349041044119-UniFi-System-Logs) 文档进行了验证。已使用 **UniFi Network Application 10.0.x**(最新版本:10.0.162)进行测试。 | 组件 | 状态 | |-----------|--------| | **CEF (SIEM 导出)** | 与 UniFi Network 9.3.x 和 10.0.x 兼容。格式未更改:`CEF:0\|Ubiquiti\|UniFi Network\|Version\|EventID\|Name\|Severity\|Extension`。decoder 接受可选的 "UniFi Network Application" 产品名称,以备未来版本之需。 | | **CEF 键** | Parser 提取标准标头 + `src` (IPv4/IPv6)、`UNIFIcategory`、`UNIFIsubCategory`、`UNIFIadmin`、`UNIFIclientMac`。其他扩展键(例如 `UNIFIutcTime`、`UNIFIdeviceName`、`UNIFIclientIp`)保留在 `extra_data` 中,不会中断解码。 | | **事件名称** | 规则匹配来自[官方文档](https://help.ui.com/hc/en-us/articles/33349041044119-UniFi-System-Logs)的所有当前事件名称:管理员访问/进行配置更改、设备采用/离线、WiFi 客户端连接/断开/漫游、检测并阻止威胁、触发蜜罐、被防火墙阻止、WAN 故障转移、高延迟/丢包、PoE 输出不足/超出 PoE 可用性/AP 功率不足。 | | **日志类别** | Monitoring (访客热点、WiFi、有线、状态)、Internet (中断与故障转移、性能)、Power (PoE、冗余)、Security (防火墙、蜜罐、入侵防御)、System (管理员活动、设备、网络、VPN、WiFi、有线)。System 下的 VPN 事件由通用规则 (100199) 捕获。 | | **CyberSecure / Traffic Flows** | 根据[官方 Traffic Flows 文档](https://help.ui.com/hc/en-us/articles/32201256219799),Traffic Flow 日志 (DPI/IDS) 尚未通过 CEF 导出。它们仅以 CSV 和 NetFlow/IPFIX 格式提供。当 Ubiquiti 为流量流添加 CEF 支持时,可能需要新的 decoders/rules。 | | **设备 syslog** | 与来自 UniFi AP 和转发到远程 syslog (STA 关联/取消关联、RADIUS) 的设备的 hostapd/ath 样式日志兼容。设备固件也可能发出 JSON;此 parser 针对经典的 syslog 格式。 | 如果 Ubiquiti 添加了新的事件类型,通用规则 (100199) 会将未知的 CEF 事件保留在 `unifi` 组中而不发出警报。可根据需要添加特定规则。 ## 参考 - [UniFi System Logs & SIEM Integration](https://help.ui.com/hc/en-us/articles/33349041044119-UniFi-System-Logs-SIEM-Integration) - [Wazuh - 配置 syslog](https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/syslog.html) - [Wazuh - 自定义 decoders](https://documentation.wazuh.com/current/user-manual/ruleset/decoders/custom.html)
标签:IP 地址批量处理, Syslog, UniFi, Wazuh, 云计算, 安全运营, 扫描框架, 插件系统, 日志解析, 红队行动, 规则引擎, 证书伪造