harshhhhh10/Log-File-Analyzer-Intrusion-Detection
GitHub: harshhhhh10/Log-File-Analyzer-Intrusion-Detection
基于 Python 的日志分析工具,从 Apache 和 SSH 日志中自动检测暴力破解、DoS 模式及黑名单 IP 并生成可视化报告。
Stars: 0 | Forks: 0
# 用于入侵检测的日志文件分析器
这是一个基于 Python 的工具,用于分析 Apache 和 SSH 日志文件,并检测可疑活动,如暴力破解尝试、DoS 模式和黑名单 IP。
在 Elevate Labs 实习期间开发。
## 功能
- 解析 Apache 和 SSH 日志文件
- 检测 SSH 上的暴力破解登录尝试
- 标记在分析的日志文件中请求次数异常高的 IP(基于总量的阈值,而非时间窗口——这意味着几秒钟内的请求突发和一周内分散的相同请求量会以相同的方式被标记)
- 根据黑名单检查所有 IP
- 生成访问量最高的 IP 的彩色条形图
- 保存带有时间戳的事件报告
## 项目结构
```
├── analyzer.py # main script
├── config.json # settings (log folder, thresholds)
├── blacklist.txt # known bad IPs
├── requirements.txt
├── logs/
│ ├── apache.log
│ └── ssh.log
├── graphs/
│ └── access.png # generated after running
└── report.txt # generated after running
```
注意:图表仅绘制 Apache/Web 流量——SSH 暴力破解活动会记录在报告中,但不会显示在图表中。
## 如何运行
**1. 克隆仓库**
```
git clone https://github.com/harshhhhh10/log-file-analyzer-intrusion-detection.git
cd log-analyzer
```
**2. 安装依赖**
```
pip install -r requirements.txt
```
**3. 运行**
```
# 分析 logs/ 文件夹中的所有日志(自动检测)
python analyzer.py
# 仅分析 ssh 日志
python analyzer.py ssh.log
# 仅分析 apache 日志
python analyzer.py apache.log
# 一次性分析多个文件
python analyzer.py ssh.log apache.log
# 使用 flags 强制指定文件类型
python analyzer.py --ssh mylog.txt
python analyzer.py --apache mylog.txt
# 跳过 graph 生成
python analyzer.py --no-graph
```
## 配置
编辑 `config.json` 以更改日志文件夹或检测阈值:
```
{
"logs_dir": "logs",
"bruteforce_limit": 3,
"dos_limit": 4
}
```
- `logs_dir` — 未将文件作为参数传递时要扫描的文件夹
- `bruteforce_limit` — 标记 IP 前的 SSH 失败尝试次数
- `dos_limit` — 标记 IP 前的 Apache 请求数量
## 黑名单
将 IP 添加到 `blacklist.txt` 中,每行一个。SSH 日志中的任何匹配项都会在报告中被标记。
## 示例输出
```
========================================
Intrusion Detection Report
2025-03-12 10:25:00
========================================
[Brute Force - SSH]
192.168.1.10 -> 5 failed attempts
[DoS Pattern - Apache]
192.168.1.10 -> 5 requests
45.33.21.90 -> 5 requests
[Blacklisted IPs]
45.33.21.90
10.0.0.5
```
## 使用工具
- Python 3
- Regex
- Pandas
- Matplotlib
### 🛠️ 近期安全更新(2026 年 4 月)
* **检测修复:** 我发现了一个 bug,解析器此前会遗漏 SSH 日志中的“invalid user”尝试。我已经更新了 regex 使其更加灵活(使用惰性匹配),从而弥补了这一可见性盲区。
* **IP 关联:** 该工具现在会同时根据黑名单检查 SSH 和 Apache 日志。这可以防止攻击者通过切换协议来隐藏其活动。
* **代码文档:** 在主要逻辑中添加了详细注释,以解释检测阈值背后的“原因”。
标签:Python, 安全运营, 扫描框架, 无后门, 红队行动, 逆向工具, 配置错误