SubhanarayanRath/Log_Analyzer
GitHub: SubhanarayanRath/Log_Analyzer
一款基于 Python 的 Apache 日志分析与入侵检测 CLI 工具,通过解析日志并运用规则检测暴力破解和异常流量等可疑行为。
Stars: 0 | Forks: 0
# Web Log 分析与入侵检测 CLI 工具
一款基于 Python 的模块化命令行工具,用于分析 Apache 服务器日志,并检测诸如暴力破解尝试和异常流量峰值等活动模式。
## 问题陈述
Web 服务器会生成大量包含时间戳和 IP 地址信息的访问日志。手动分析这些日志以识别诸如暴力破解攻击或异常流量峰值等可疑行为不仅效率低下,而且容易出错。因此,我们需要一种自动化解决方案,能够处理日志、提取有意义的统计数据,并检测潜在的安全威胁。
## 目标
本项目的目标是开发一个命令行日志分析工具,其功能如下:
* 解析 Apache 和服务器日志文件。
* 从原始日志行中提取结构化信息。
* 汇总请求统计数据,例如 IP 频率和状态码分布。
* 使用基于规则的检测逻辑来检测可疑活动。
* 允许为安全分析配置阈值。
## 功能
* Apache 日志行解析,
* 按 IP 地址聚合请求,
* HTTP 状态码分布分析,
* 高频流量 IP 检测,
* 基于重复 401 请求的暴力破解检测,
* 基于时间窗口的暴力破解检测,
* 可通过 CLI 配置的检测阈值。
## 项目架构
本项目采用模块化结构,以分离解析、处理和检测等职责。这提高了项目的可维护性和可扩展性。
各个模块如下:
1. main.py
作为应用程序的入口点。它负责处理命令行参数、读取日志文件,并协调解析、处理和检测过程。
2. core/parser.py
负责解析原始 Apache 日志行,并将其转换为结构化的字典对象。
3. core/processor.py
存储已解析的日志,并维护汇总统计数据,例如总请求数、每个 IP 的请求数以及状态码分布。
4. core/detector.py
包含基于规则的检测算法,用于识别可疑活动,如高频流量、暴力破解尝试和基于时间的攻击。
## 执行流程
1. 用户通过 CLI 参数提供日志文件路径以及可选的检测参数。
2. main.py 逐行读取日志文件。
3. 每一行日志都会传递给 parser.py,由其将其转换为结构化数据。
4. 结构化数据由 processor.py 进行存储和聚合。
5. detector.py 使用基于规则的检测算法对处理后的数据进行分析。
* 结果将以汇总统计数据和检测结果的形式打印在终端中。
## 检测逻辑
1. 高频流量检测
识别总请求数超过用户自定义阈值的 IP 地址。这有助于检测异常的流量峰值或潜在的可疑行为。
2. 暴力破解检测(按 IP)
标记产生超出定义阈值的重复 HTTP 401 (Unauthorized) 响应的 IP 地址。这可能表明存在密码猜测尝试。
3. 基于时间窗口的暴力破解检测
分析可配置时间窗口内的失败登录尝试。如果同一个 IP 在短时间内产生多个 401 响应,则会被标记为可疑。该功能使用了滑动时间窗口方法。
* 阈值和时间窗口值均可以通过 CLI 参数进行配置。
## 用法
运行 Log Analyzer:
* python main.py --file sample.log
使用自定义阈值和时间窗口:
* python main.py --file sample.log --threshold 5 --window 60
* 参数说明:-
1. --file = 日志文件的路径(必填)
2. --threshold = 检测阈值(默认值:5)
3. --window = 用于基于时间检测的时间窗口,以秒为单位(默认值:60)
## 未来改进
* 支持流式日志分析,而不仅仅是处理静态文件。这将允许监控实时的服务器活动。
* 通过减少时间窗口算法中的嵌套循环来改进检测逻辑,从而优化大型日志文件的处理性能。
* 添加导出功能,将汇总结果保存为 CSV 格式以便进一步分析。
* 增加对其他基于 HTTP 状态码的检测支持,例如重复的 403 响应。
* 扩展兼容性,以支持除 Apache 默认格式外的其他日志格式。
## 输出示例
```
====================
LOG SUMMARY
====================
Total Requests: 13
Requests Per IP:
192.168.1.10 → 11
192.168.1.15 → 1
10.0.0.5 → 1
Status Code Distribution:
200 → 1
302 → 1
403 → 1
401 → 10
====================
DETECTION RESULTS
====================
High Traffic IPs:
192.168.1.10 → 11 requests
Brute Force Suspects:
192.168.1.10 → 10 failed attempts
Time-Window Brute Force Detected:
192.168.1.10 → 10 attempts within 60 seconds
Analysis Complete.
```
标签:IP 地址批量处理, Python, Web安全, 云计算, 无后门, 红队行动, 蓝队分析, 规则引擎, 逆向工具