Halino/Wazuh-MariaDB
GitHub: Halino/Wazuh-MariaDB
为 Wazuh 提供 MariaDB/MySQL 错误日志的自定义检测规则,覆盖访问拒绝、暴力破解、连接中断和崩溃损坏等数据库安全与完整性事件。
Stars: 0 | Forks: 0
# Wazuh 的 MariaDB 规则
用于让 Wazuh 检测 **MariaDB / MySQL**(`mariadbd`)错误日志中身份验证攻击和完整性问题的**规则**。
## 包含内容
| 文件 | 用途 |
|------|---------|
| `wazuh/rules/mariadb_rules.xml` | 拒绝访问、暴力破解、中断的连接、崩溃/损坏 |
| `wazuh/ossec-mariadb.conf.snippet` | `localfile` 配置示例(journald 和文件) |
| `tests/sample_logs.txt` | 用于 `wazuh-logtest` 的示例日志行 |
## 解码器
本仓库未提供自定义解码器。Wazuh 的默认规则集已经包含了一个 `mariadb` 解码器,它可以匹配来自 `program_name` **`mariadbd`** 的日志行,并从 `Access denied for user ''@''` 消息中提取诸如 `dstuser` 和 `srcip` 等字段。下面的规则只需通过 `mariadb ` 来引用它 —— 因此无需将任何内容复制到 `/var/ossec/etc/decoders/` 中。
## 规则
| 规则 ID | 级别 | 检测内容 | MITRE |
|---------|-------|---------|-------|
| 110400 | 6 | 用户访问拒绝(登录被拒绝) | T1078 |
| 110401 | 10 | 暴力破解(120 秒内 6 次拒绝,同一 IP) | T1110 |
| 110402 | 4 | 中断的连接(审计 / 故障排查) | — |
| 110403 | 11 | **崩溃 / 损坏**(信号、表崩溃、InnoDB 损坏) | T1485 |
规则 ID 使用专用的 **110400-110403** 区块,以避免与其他规则集发生冲突。
- **110400** 会在出现 `Access denied for user ...` 时触发。这些行仅在 MariaDB 在 **`log_warnings >= 2`** 配置下运行时才会输出(参见[部署](#deployment))。
- **110401** 将来自**相同源 IP** 的重复 `110400` 事件关联为暴力破解警报。
- **110402** 是用于记录断开连接(超时、`max_allowed_packet`、未能正常关闭的客户端)的低级别审计追踪。
- **110403** 标记服务器崩溃和磁盘损坏 —— 包括服务器故障、崩溃漏洞利用尝试或破坏性活动。
## 部署
规则位于 **manager** 上:
```
sudo cp wazuh/rules/mariadb_rules.xml /var/ossec/etc/rules/
sudo systemctl restart wazuh-manager
```
然后在 MariaDB 主机上收集 `mariadbd` 日志。在现代 systemd 发行版上,MariaDB 通常将日志记录到 **journald** 而不是文件中 —— 因此有两种路径。
### 路径 A - journald(现代发行版的默认方式)
在 agent 上读取 journal(参见 `wazuh/ossec-mariadb.conf.snippet`):
```
journald
journald
^(mariadb|mysqld|mysql)\.service$
```
### 路径 B - 专用错误日志文件
或者,配置 MariaDB 将日志记录到文件中。在 `/etc/mysql/mariadb.conf.d/50-server.cnf`(或 `/etc/my.cnf.d/server.cnf`)中:
```
[mariadbd]
log_error = /var/log/mysql/error.log
log_warnings = 2 # REQUIRED so "Access denied" lines are emitted
```
重启 MariaDB,然后使用 **syslog** 日志格式读取文件,以便预解码器能提取出 `program_name = mariadbd`:
```
syslog
/var/log/mysql/error.log
```
## 测试
```
/var/ossec/bin/wazuh-logtest
```
例如,粘贴:
```
Jul 9 12:00:00 db mariadbd[1234]: [Warning] Access denied for user 'app'@'203.0.113.10' (using password: YES)
```
预期结果:解码器为 `mariadb`,规则 **110400**(authentication_failed,T1078)。
完整集合请参见 `tests/sample_logs.txt`。
## 兼容性
- Wazuh 4.x(使用 `pcre2`;journald 读取器需要 Wazuh 4.4+)。
- MariaDB 10.x / 11.x 以及 MySQL 5.7 / 8.x(任何其 `mariadbd`/`mysqld` 错误日志能被默认 `mariadb` 解码器解析的版本)。
## 许可证
MIT — 参见 [LICENSE](LICENSE)。
标签:MariaDB, PB级数据处理, Wazuh, 云计算, 安全运维, 数据库监控, 规则引擎