goodbaye/parser

GitHub: goodbaye/parser

一款轻量级 Python CLI 工具,用于解析 SSH 认证日志并检测暴力破解、失败后成功登录及非典型时间登录等可疑活动。

Stars: 0 | Forks: 0

# LogSentinel 一款小型的 CLI 实用工具,用于解析 Linux 的 SSH 身份验证日志(`auth.log` / `secure`), 它可以发现可疑活动:brute-force 攻击、多次失败尝试后的成功登录, 以及非典型时间的登录。 本项目是一项独立的学习实践——旨在练习日志解析和类似于 SIEM 中关联规则的检测逻辑, 但它是从零开始使用 Python 实现的,未使用现成的 SIEM 系统。 ## 功能 - 解析 OpenSSH 的标准 syslog 行(`Failed password`、`Accepted password` / `Accepted publickey`、`Invalid user`) - 检测规则: - **Brute force** — 在滑动时间窗口内,来自同一 IP 的 N 次或更多次失败登录尝试 - **失败尝试后的成功登录** — 来自某 IP 的成功登录,且该 IP 在此之前不久发生过多次失败尝试(经典的“攻击者最终成功潜入”模式) - **非典型时间登录** — 在可自定义的非工作时间内的成功登录 - 控制台输出报告,并支持导出为 JSON / CSV - Unit 测试(pytest)以及基于 GitHub Actions 的 CI-workflow ## 安装 ``` git clone https://github.com/goodbaye/parser.git cd parser pip install -r requirements.txt ``` 该实用工具本身不需要任何外部依赖——`requirements.txt` 仅包含运行测试所需的 `pytest`。 ## 使用说明 ``` python3 -m logsentinel.cli sample_logs/auth.log --year 2026 ``` 导出结果: ``` python3 -m logsentinel.cli sample_logs/auth.log --year 2026 --json findings.json --csv findings.csv ``` 选项: | 标志 | 描述 | |---|---| | `--year YEAR` | 需要附加到日志时间戳的年份(syslog 行中未指定年份)。默认为当前年份。 | | `--json PATH` | 将结果以 JSON 格式写入指定路径 | | `--csv PATH` | 将结果以 CSV 格式写入指定路径 | | `--quiet` | 不在控制台输出报告 | ### 输出示例 ``` Parsed 12 recognized log lines from sample_logs/auth.log Findings: 4 (high=2, medium=2, low=0) ---------------------------------------------------------------------------------------------------- [HIGH ] 2026-01-10T03:14:08 rule=brute_force ip=203.0.113.5 user=root 5 failed login attempts from 203.0.113.5 within 60s (threshold=5) [HIGH ] 2026-01-10T03:14:20 rule=success_after_failures ip=203.0.113.5 user=root Successful login for user 'root' from 203.0.113.5 after 7 prior failed attempt(s) [MEDIUM] 2026-01-10T02:47:33 rule=off_hours_login ip=198.51.100.77 user=backup_svc Successful login for user 'backup_svc' from 198.51.100.77 at 02:47:33 (off-hours window) [MEDIUM] 2026-01-10T03:14:20 rule=off_hours_login ip=203.0.113.5 user=root Successful login for user 'root' from 203.0.113.5 at 03:14:20 (off-hours window) ---------------------------------------------------------------------------------------------------- ``` ## 运行测试 ``` pip install -r requirements.txt pytest -v ``` ## 项目结构 ``` parser/ ├── logsentinel/ │ ├── __init__.py │ ├── parser.py # разбор строк лога в объекты LogEvent │ ├── detectors.py # правила детектирования -> объекты Finding │ ├── report.py # вывод в консоль / JSON / CSV │ └── cli.py # точка входа CLI на argparse ├── tests/ │ ├── test_parser.py │ └── test_detectors.py ├── sample_logs/ │ └── auth.log # синтетический пример лога для демонстрации └── .github/workflows/ci.yml ``` ## 后续改进 - 支持来自 `journalctl` / `.evtx`(Windows Event Log)的输入数据 - 用于检测分布式 brute-force(多个 IP,单一目标账号)的规则 - 使用配置文件来设置阈值,而不是使用硬编码的值 - 封装为可通过 pip 安装的 CLI(`pyproject.toml`,入口点 `logsentinel`) ## 许可证 MIT — 参见 [LICENSE](LICENSE)。
标签:Linux运维, Python, SIEM规则, SSH, 安全规则引擎, 异常检测, 无后门, 红队行动, 逆向工具