BeardedTinker/wazuh-homelab-security
GitHub: BeardedTinker/wazuh-homelab-security
一套专为家庭实验室设计的 Wazuh 规则和解码器集合,覆盖 UniFi、Synology、Home Assistant 三大平台的真实安全日志检测。
Stars: 1 | Forks: 0
# Wazuh 家庭实验室安全
针对真实家庭实验室环境的实用 Wazuh 规则、解码器、示例日志和仪表板构建模块。
本仓库专注于三种常见的家庭实验室遥测数据源:
- UniFi 防火墙 / IDS / IPS 事件
- Synology DSM 身份验证事件
- 通过 Wazuh Agent + journald 获取的 Home Assistant 安全相关日志
目标很简单:检测**家庭实验室中的真实安全信号**,而不引入仅限企业级的复杂性。
本仓库反映了**真实可运行的家庭实验室部署**。
# 本仓库涵盖内容
## UniFi
当前已实施的检测思路:
- WAN_LOCAL 防火墙丢弃
- SSH 探测
- Synology DSM 暴露尝试
- Home Assistant 暴露尝试
- HTTP / HTTPS 后台探测
- 来自同一来源的高频重复探测
## Synology DSM
当前已实施的检测思路:
- 登录成功
- 登录失败
- 来自同一 IP 的重复登录失败
- 来自同一 IP 和用户的多次失败后登录成功
## Home Assistant
当前已实施的检测思路:
- 来自 `http.ban` 的无效身份验证
- 来自同一 IP 的重复无效身份验证
- 可疑的 websocket 身份验证活动
- 重复的 websocket 可疑活动
- Moonraker websocket 重连噪声抑制
# 仓库结构
```
.
├── samples/
│ ├── homeassistant/
│ ├── synology/
│ └── unifi/
├── tools/
│ └── sanitize/
└── wazuh/
├── decoders/
├── ossec.conf.snippets/
└── rules/
```
# 文件夹用途
### samples/
包含**经过脱敏的真实日志样本**。
每个源文件夹包含:
- `raw.log`
- `expected.json`
这允许对解码器和规则进行回归测试。
### tools/sanitize/
用于在发布日志前进行脱敏的工具。
典型的脱敏操作包括:
- 替换内部 IP
- 移除用户名
- 移除设备 ID
- 移除敏感 URL 或 token
### wazuh/decoders/
按来源分组的自定义解码器。
示例:
- `0100-unifi-decoders.xml`
- `0200-synology-decoders.xml`
- `0300-homeassistant-decoders.xml`
### wazuh/rules/
按来源分组的自定义规则。
示例:
- `0100-unifi-rules.xml`
- `0200-synology-rules.xml`
- `0300-homeassistant-rules.xml`
规则特意按**来源领域**组织,以保持仓库的可读性。
### wazuh/ossec.conf.snippets/
旨在合并到 `ossec.conf` 中的配置片段。
示例包括:
- 远程 syslog 监听器
- UniFi 日志获取
- Synology 日志获取
- Home Assistant 的 journald 获取
# 安装顺序
应用这些规则时的推荐工作流程:
1. 将解码器复制到 Wazuh 解码器目录
2. 将规则复制到 Wazuh 规则目录
3. 合并所需的 ossec.conf 片段
4. 验证配置
5. 重启 Wazuh manager
6. 使用 wazuh-logtest 进行测试
典型命令:
```
sudo /var/ossec/bin/wazuh-analysisd -t
sudo systemctl restart wazuh-manager
sudo /var/ossec/bin/wazuh-logtest
```
# Home Assistant 集成说明
Home Assistant 日志通过具有 journald 访问权限的 **Wazuh Agent** 获取。
这意味着:
- 事件源自 HA agent
- 源 IP 提取在自定义解码器中进行
- 暴力破解检测通过 Wazuh 规则完成
- 跨源关联在仪表板级别处理
示例检测链:
1. UniFi 检测到针对端口 8123 的探测
2. Home Assistant 记录重复的无效身份验证
3. Wazuh 规则触发暴力破解警报
由于这些事件可能来自**不同的数据源**,因此在**仪表板或监控级别**进行关联更为可靠。
示例关联模式:
UniFi 探测规则 → `100132`
Home Assistant 暴力破解规则 → `100310`
可以在以下位置进行关联:
```
data.srcip
```
在时间窗口内。
# 示例日志
每个来源都包含用于测试的示例日志。
结构:
```
raw.log
expected.json
```
预期文件描述了应该匹配哪些解码器和规则。
这有助于确保规则更改不会静默破坏检测逻辑。
# 仪表板建议
建议的仪表板面板:
- Top attacking IPs(主要攻击 IP)
- Attack timeline(攻击时间线)
- Top attacked services(主要受攻击服务)
- Attack sources map(攻击源地图)
- Top attackers (last 24 hours)(主要攻击者 - 过去 24 小时)
- Top attackers (historical)(主要攻击者 - 历史记录)
- Alert severity distribution(警报严重程度分布)
推荐的索引模式:
```
wazuh-alerts-*
```
示例过滤器:
```
rule.id:(100132 OR 100300 OR 100310)
```
# 已知限制
- 跨源关联特意未作为纯 Wazuh 规则实施
- 某些检测依赖于原始日志格式
- 示例日志已经过脱敏和简化
# 测试方法
修改解码器或规则时:
1. 验证 XML 语法
2. 使用 wazuh-logtest 测试单个事件
3. 测试重复事件阈值
4. 验证提取的字段
5. 验证仪表板中的索引
然后再添加仪表板或主动响应。
# 主动响应警告
自动阻断应**仅在仔细验证后**启用。
在启用主动响应之前:
- 确认解码器准确性
- 了解误报模式
- 端到端验证事件流
建议的第一步是部署**默认禁用**的主动响应。
# 脱敏
在发布日志之前务必进行脱敏:
- IP 地址
- 主机名
- 用户名
- 内部路径
- token 或 ID
# 许可证
选择任何适合共享检测逻辑的许可证。
宽松的许可证通常最便于重用。
# 贡献
未来的改进可能包括:
- 额外的 Home Assistant 检测
- UniFi IDS 富化
- 仪表板导出
- OpenSearch 监控示例
- 可选的主动响应示例
标签:CISA项目, Home Assistant, PB级数据处理, PE 加载器, Synology, UniFi, URL发现, Wazuh, 仪表盘, 威胁情报, 安全检测, 安全运维, 家庭实验室, 开发者工具, 日志清洗, 网络安全, 规则集, 解码器, 认证安全, 速率限制, 防火墙, 隐私保护