Halino/Wazuh-FileZilla
GitHub: Halino/Wazuh-FileZilla
为 Wazuh 提供 FileZilla Server FTP 日志的解码器和检测规则,解决日志解析、时间戳冲突及暴力破解与数据外泄检测问题。
Stars: 0 | Forks: 0
# 用于 Wazuh 的 FileZilla Server FTP 解析器
**Decoders** 和 **rules**,使 Wazuh 能够摄取和分析 **FileZilla Server** FTP
会话日志 — 身份验证、暴力破解以及文件传输/删除活动。
## 包含内容
| 文件 | 用途 |
|------|--------|
| `wazuh/decoders/filezilla_decoders.xml` | 解析 FileZilla `Session N` FTP 日志行 |
| `wazuh/rules/filezilla_rules.xml` | 认证、暴力破解、下载/上传/删除、批量下载外泄 |
| `wazuh/ossec-filezilla.conf.snippet` | `localfile` 配置示例 |
| `tests/sample_logs.txt` | 用于 `wazuh-logtest` 的示例行 |
## 日志格式
FileZilla Server 写入的每条 FTP 会话行都带有 `Session N` 标记。括号
有两种形式 — 登录前(仅 IP)和登录后(IP + 用户):
```
[FTP Session 5 203.0.113.10] USER alice
[FTP Session 5 203.0.113.10] 530 Login incorrect.
[FTP Session 5 203.0.113.10 alice] 230 Logged on
[FTP Session 5 203.0.113.10 alice] RETR /pub/movie.mkv
```
提取的字段:`session`、`srcip`、`dstuser`(仅限登录后)、`ftp_message`。
decoder 是**基于内容的**:它在纯文本的 `Session N` token 上进行预匹配,因此
无需任何 syslog 标头即可解码日志行。
## 时间戳陷阱(请先阅读此部分)
FileZilla Server 可能在每条日志行前加上**以 `Z` 结尾的 ISO8601 时间戳**
(例如 `2026-07-09T12:00:00.123Z ...`)。带有尾部 `Z` 的时间戳**不是**有效的
RFC3164 syslog 标头,因此 Wazuh 的 syslog 预解码器会以 **"No decoder matched"** 拒绝整行,
导致 FileZilla decoder 根本无法运行。
**修复方法 — 禁用时间戳,使日志行变为无标头格式:**
- **FileZilla Server > Settings > Logging** → 取消勾选 **"Include a timestamp in the log"**
- 或者在配置中:设置 **`include_headers = false`**
decoder 基于对 `Session N` 的预匹配(而非基于时间戳),因此无标头的
日志行可以完美匹配。
## 规则
| 规则 ID | 级别 | 检测内容 | MITRE |
|---------|-------|---------|-------|
| 110200 | 0 | 分组(任何 FileZilla FTP 消息) | — |
| 110201 | 5 | 登录尝试 (`USER ...`) | — |
| 110202 | 6 | 登录失败 (`530`) | T1078 |
| 110203 | 3 | 登录成功 (`230`) | — |
| 110204 | 10 | 暴力破解(120 秒内失败 5 次,同一 IP) | T1110 |
| 110205 | 3 | 文件下载 (`RETR`) | — |
| 110206 | 5 | 文件上传 (`STOR` / `APPE`) | — |
| 110207 | 4 | 文件删除 (`DELE` / `RMD`) | — |
| 110208 | 4 | **批量下载**(600 秒内 50 次,同一 IP) — 挖取 / 数据外泄 | T1030 |
规则 ID 使用专门的 **110200-110208** 区块,以避免与其他规则集发生冲突。
## 部署
```
sudo cp wazuh/decoders/filezilla_decoders.xml /var/ossec/etc/decoders/
sudo cp wazuh/rules/filezilla_rules.xml /var/ossec/etc/rules/
sudo systemctl restart wazuh-manager
```
然后使用 `localfile` 收集 FileZilla Server 日志(参见
`wazuh/ossec-filezilla.conf.snippet`) — 并记得先在 FileZilla 日志设置中
禁用 ISO8601 时间戳。
## 测试
```
/var/ossec/bin/wazuh-logtest
```
粘贴,例如(无需 syslog 标头 — decoder 是基于内容的):
```
[FTP Session 5 203.0.113.10] 530 Login incorrect.
```
预期:decoder 为 `filezilla`,规则为 **110202**(authentication_failed,T1078)。
完整集合请参见 `tests/sample_logs.txt`。
## 兼容性
- Wazuh 4.x(使用 `pcre2`)。
- 开启文件记录的 FileZilla Server 1.x(禁用时间戳 — 见上文)。
## 许可证
MIT — 详见 [LICENSE](LICENSE)。
标签:FileZilla, Wazuh, 云计算, 日志解析, 红队行动, 规则引擎, 证书伪造