AlperEnesErsu/LogSentry
GitHub: AlperEnesErsu/LogSentry
用 Ruby 从零构建的微型 SIEM 系统,实时监控 Web 日志并检测攻击模式,兼具防篡改归档和 Web 面板。
Stars: 0 | Forks: 0
# LogSentry
[](https://github.com/AlperEnesErsu/LogSentry/actions/workflows/ci.yml)
[](https://www.ruby-lang.org)
[](LICENSE)
[](#测试)
一个实时监控 Web 服务器日志、检测攻击模式并发送
通知的微型 SIEM —— **从零开始,一步步,使用 Ruby 构建。**
这是 Splunk、Wazuh 或 TR7 等企业级系统底层逻辑的
一个可运行示例。其目的不是打造一个产品,而是**通过亲手构建
这些逻辑来学习**:流处理、状态管理、时间窗口、
daemonization、防篡改归档。
```
access.log ─▶ TAILER ─▶ PARSER ─▶ ENGINE ─▶ NOTIFIERS ─▶ ekran / JSONL / Telegram
canlı metin→ kayan hata │
izleme veri pencere yalıtımı ▼
STORE + ARCHIVER
SQLite + hash zinciri
│
▼
WEB (Sinatra)
dashboard + SSE
```

## 它是如何工作的?
Web 服务器会将收到的每一个请求写入 `access.log`。单独的一行
日志是无害的——可能只是某人输错了密码。但如果**同一个 IP 在 1 分钟内产生了 50 行**
这样的日志,那它就不再无害了。
LogSentry 实时监控日志文件,解析每一行,将其通过规则进行匹配,如果
发现可疑的模式,就会连同证据一起生成警报。
### 检测到的模式
| 规则 | 测量内容 | 窗口 | 阈值 | 严重程度 |
|---|---|---|---|---|
| `brute_force` | 来自同一 IP 的 `401`/`403` 响应 | 60 秒 | 4 | high |
| `credential_stuffing` | 访问同一 endpoint 的**不同 IP** 数量 | 300 秒 | 25 | high |
| `flood` | 来自同一 IP 的所有请求 | 1 秒 | 100 | high |
| `path_scan` | 来自同一 IP 的**不同**敏感目录数量 | 300 秒 | 3 | medium |
| `sqli` | SQL 注入特征(`union select`、`information_schema`…) | 60 秒 | 0 | critical |
| `xss` | XSS / 命令注入特征(`