DrVerzide/log-sentinel
GitHub: DrVerzide/log-sentinel
一款零依赖的 SSH 认证日志分析工具,用于检测暴力破解、用户枚举及可能的账号失陷。
Stars: 0 | Forks: 0
# log-sentinel
一款蓝队工具,用于分析 **SSH 认证日志**(`auth.log` / syslog 格式)并检测经典攻击模式,生成人类可读的报告和 JSON 报告。零运行时依赖 — 纯标准库实现。
## 检测规则
| 规则 | 捕获内容 | 严重程度 |
|------|-----------------|----------|
| `brute_force` | 单个 IP 在滑动时间窗口内发生 N 次以上登录失败 | High / Critical |
| `user_enumeration` | 单个 IP 尝试探测多个不同的用户名(`admin`、`oracle`、`postgres`…) | Medium |
| `success_after_failures` | 累积了多次失败尝试的 IP 发生**成功**登录 — 表明暴力破解已得手的特征 | Critical |
所有阈值(尝试次数、窗口大小)均可通过 CLI 配置。
## 安装
```
git clone https://github.com//log-sentinel.git
cd log-sentinel
pip install .
```
## 用法
```
# 分析 log file
log-sentinel /var/log/auth.log
# 立即使用包含的 sample log 进行尝试
log-sentinel data/sample_auth.log
# 针对 SIEM/dashboard 的自定义阈值 + JSON 报告
log-sentinel data/sample_auth.log --brute-threshold 8 --window 5 --json report.json
```
输出示例:
```
==============================================================
LOG SENTINEL - SSH Authentication Analysis
==============================================================
Events parsed : 20
Failed logins : 12
Accepted logins : 3
Invalid users : 4
Unique source IPs : 3
Top attacker IPs (by failed logins):
203.0.113.45 8 failures
198.51.100.23 4 failures
Findings: 3
--------------------------------------------------------------
[CRIT] success_after_failures: Successful login as 'root' from 203.0.113.45 after 8 failed attempts - possible compromise
[HIGH] brute_force: 8 failed logins within 10 min (8 total) from 203.0.113.45
[MED ] user_enumeration: 198.51.100.23 probed 4 distinct usernames: admin, oracle, postgres, test
==============================================================
```
当存在检测结果时,进程将以状态码 `1` 退出,因此它可以作为脚本或 CI/监控任务的拦截条件。
## 设计说明
- **Parser** (`parser.py`):基于 regex 将 syslog 解析为类型化的 `AuthEvent` dataclass。无法识别的行会被安全跳过。
- **Detector** (`detector.py`):每条规则都是针对事件列表的独立纯函数;brute force 使用 O(n) 滑动窗口算法。
- **Report** (`report.py`):渲染与检测完全分离,使得添加新的输出格式变得非常简单。
## 运行测试
```
pip install -e ".[dev]"
pytest
```
## 道德声明
这是一款**防御性**工具:它处理你已经拥有的日志,以揭示*针对*你系统的攻击。示例数据使用的是 RFC 5737 文档 IP。
## 许可证
MIT
标签:Python, SSH, 安全规则引擎, 安全运营, 异常检测, 扫描框架, 文档结构分析, 无后门, 红队行动, 逆向工具