koiakoia/sentinel-unifi

GitHub: koiakoia/sentinel-unifi

一套完整的 UniFi Network 可观测性技术栈,整合 Python API 客户端、Prometheus 指标导出、Wazuh SIEM 告警规则和 Grafana 可视化面板。

Stars: 1 | Forks: 0

# sentinel-unifi 一套完整的 UniFi Network 可观测性技术栈:包含 Python API 客户端、CLI、Prometheus exporter、Wazuh SIEM 集成以及 Grafana dashboard。 专为运行 Integration API (v10+) 的 UniFi 控制器构建,例如 UCG-Fiber、UDM Pro 和 UDM SE。 ## 组件 | 组件 | 文件 | 用途 | |-----------|------|---------| | **API Client** | `unifi/` | 具备自动分页、mixin 组合和 Vault/环境变量认证的 Python 客户端 | | **CLI** | `cli.py` | 基于 Click 的 CLI,用于交互式网络查询 | | **Collector** | `collector.py` | 计划数据收集器(专为 systemd timer 设计) | | **Exporter** | `exporter.py` | Prometheus 指标端点(默认端口 9120) | | **Wazuh Rules** | `wazuh/` | 用于网络事件的自定义 decoder + 告警规则 | | **Grafana Dashboard** | `grafana/` | 用于 UniFi 指标可视化的 Dashboard JSON | ## 快速开始 ``` # 安装依赖 pip install requests click prometheus_client # 设置您的 API key export UNIFI_API_KEY="your-api-key" export UNIFI_CONTROLLER_URL="https://192.168.1.1" # your controller IP # CLI 使用 python3 cli.py info python3 cli.py devices python3 cli.py clients python3 cli.py networks python3 cli.py snapshot ``` ## 认证 API 密钥按以下顺序读取: 1. 位于 `secret/unifi` 的 **HashiCorp Vault**(字段:`api_key`, `controller_url`) 2. **环境变量** `UNIFI_API_KEY` 和 `UNIFI_CONTROLLER_URL` Vault 集成是可选的 —— 环境变量即可独立运行。 ## 架构 ``` UniFi Controller API │ ▼ Collector (5min) ──→ /var/log/sentinel/unifi/ (snapshots + events) │ ▼ Exporter (:9120) ──→ Prometheus ──→ Grafana Dashboard │ ▼ Wazuh Rules (100500-100513) ──→ SIEM Alerts ``` ## Prometheus Exporter 将 exporter 作为 systemd 服务或独立程序运行: ``` python3 exporter.py # 指标位于 http://localhost:9120/metrics ``` 暴露的关键指标:设备运行时间、每台设备的客户端数量、端口利用率、TX/RX 吞吐量、固件版本、错误率。 ## Wazuh SIEM 集成 用于网络事件告警的自定义规则: | Rule ID | 事件 | |---------|-------| | 100500 | 设备离线 | | 100501 | 设备恢复 | | 100502 | 固件变更 | | 100503 | 新设备采纳 | | 100504–100513 | 客户端异常、配置变更、端口事件 | 将 `wazuh/unifi-api-decoder.xml` 和 `wazuh/unifi-api-rules.xml` 部署到您的 Wazuh 服务器规则目录中。 ## UniFi API 说明 - 字段名使用 **camelCase**(而非 snake_case) - 设备类型为 **UPPERCASE**(`USW`, `UAP`, `UGW`) - Base path:`/proxy/network/integration/v1/...` - 需要在 UniFi 控制器 UI 的 Settings → API 中生成的 API 密钥 ## 许可证 MIT
标签:API客户端, API集成, Click CLI, Dashboard, DNS解析, Grafana, HashiCorp Vault, PE 加载器, Python, UDM Pro, UniFi, Wazuh, 可观测性, 告警规则, 命令控制, 开源项目, 数据导出器, 数据采集, 无后门, 系统集成, 网络安全, 网络安全审计, 网络设备管理, 自动化运维, 自定义请求头, 逆向工具, 隐私保护