MEH1999/auth-log-analyzer
GitHub: MEH1999/auth-log-analyzer
一个无依赖的 Python 命令行工具,通过解析 Linux 身份验证日志并运用滑动窗口突发检测规则识别 SSH 暴力破解源 IP。
Stars: 0 | Forks: 0
# auth-log-analyzer
[](https://github.com/MEH1999/auth-log-analyzer/actions/workflows/tests.yml)

一个轻量级、无依赖的 Python 工具,用于解析 Linux 身份验证日志
(`/var/log/auth.log`, `secure`),以提取**失败登录活动**并使用
滑动窗口突发规则检测**SSH 暴力破解源**。
这是我为了巩固检测工程基础知识而编写的——同样的分诊分析
流程,原本应用于 SIEM/EDR 遥测数据,现在精简到了最原始的日志层。
## 为什么
在 Sentinel 中告警被触发之前,它最初只是日志中的一行。这个工具
重现了最初的分析步骤:将数千行嘈杂的 syslog 日志转化为
一份值得调查的简短 IP 列表。
## 检测逻辑
1. 解析 `Failed password`、`Invalid user` 和 `Accepted password` 事件。
2. **按源 IP** 聚合失败记录,并记录被针对的用户名。
3. 计算任意 `--window` 分钟滑动窗口内最大的失败突发量
(`O(n)` 双指针扫描)。
4. 当某个 IP 的失败次数超过 `--threshold` **并且**达到该突发阈值时将其标记——
这样缓慢、合法的重试就不会触发告警。
## 用法
```
python auth_log_analyzer.py examples/auth.log
python auth_log_analyzer.py examples/auth.log --threshold 10 --window 5 --year 2025
python auth_log_analyzer.py examples/auth.log --csv report.csv
python auth_log_analyzer.py examples/auth.log --chart top_offenders.png # optional (needs matplotlib)
```
### 概览主要违规者

### 输出示例
```
============================================================
AUTH LOG ANALYSIS
============================================================
Unique source IPs : 29
Failed attempts : 83
Successful logins : 2
Rule : >= 8 failures in 5 min window
------------------------------------------------------------
SOURCE IP FAILS BURST TARGETED USERS
203.0.113.44 40 40 admin, deploy, git, oracle, postgres (+4)
203.0.113.88 18 17 root
------------------------------------------------------------
2 IP(s) flagged for brute-force behaviour.
```
## 测试
```
python -m pytest # or: python tests/test_analyzer.py
```
## 展示的技能
- 使用 `re` 进行日志解析、时间戳处理、dataclasses
- 滑动窗口突发检测(双指针)
- 使用 `argparse` 设计 CLI、CSV 报告生成
- 将原始事件映射为安全信号(MITRE ATT&CK **T1110 – Brute Force**)
## 路线图
- [ ] 对标记的源进行 GeoIP 富化
- [ ] 输出 JSON 以便接入 SIEM
- [ ] 支持 `journalctl` / systemd-journal 输入
标签:PB级数据处理, Python, Web技术栈, 代码示例, 安全规则引擎, 安全运维, 数据分析, 无后门, 逆向工具