andrefinoo/Automated-Incident-Response-Ban-Engine-Python
GitHub: andrefinoo/Automated-Incident-Response-Ban-Engine-Python
一个受 Fail2ban 启发的教学级 Python CLI,通过解析 SSH 日志检测暴力破解并在阈值触发时执行 IP 封禁。
Stars: 0 | Forks: 0
# 自动化事件响应封禁引擎
本项目为 Andrea Finocchielli 和 Alessio Ordazzo 的 Python 实验室期末项目仓库。
该项目是一个教学性质的 CLI,用于分析 SSH 日志,检测暴力破解尝试,并决定当某个 IP 地址在指定时间窗口内超过可配置的阈值时是否对其进行封禁。
`dry-run` 模式允许在不实际修改系统防火墙的情况下模拟封禁,从而确保演示过程安全且可控。
## 项目目标
本项目旨在实现一个受 Fail2ban 等工具启发的小型事件响应引擎。
程序需要:
- 从文件中读取 SSH 日志;
- 识别失败的登录尝试;
- 提取并验证 IPv4 和 IPv6 地址;
- 按 IP 对尝试进行分组;
- 应用封禁阈值;
- 忽略存在于白名单中的 IP;
- 使用多态的防火墙 backend;
- 以 JSON 格式保存配置和状态;
- 使用 pytest 提供自动化测试。
## 环境要求
- Python 3.11+
- pytest
依赖项列于:
```
requirements.txt
```
## 项目设置
克隆仓库:
```
git clone https://github.com/andrefinoo/Automated-Incident-Response-Ban-Engine-Python.git
cd Automated-Incident-Response-Ban-Engine-Python
```
创建虚拟环境:
```
python -m venv .venv
```
在 Windows PowerShell 中激活虚拟环境:
```
.venv\Scripts\activate
```
在 Linux/macOS 中激活虚拟环境:
```
source .venv/bin/activate
```
安装依赖项:
```
pip install -r requirements.txt
```
## 预期的主要命令
在 Windows PowerShell 中:
```
$env:PYTHONPATH="src"
python -m ban_engine --help
```
以 dry-run 模式运行:
```
$env:PYTHONPATH="src"
python -m ban_engine --log examples/auth.log --config examples/config.json --dry-run
```
在 Linux/macOS 中:
```
PYTHONPATH=src python -m ban_engine --help
```
以 dry-run 模式运行:
```
PYTHONPATH=src python -m ban_engine --log examples/auth.log --config examples/config.json --dry-run
```
## 测试
在 Windows PowerShell 中:
```
$env:PYTHONPATH="src"
pytest -q
```
在 Linux/macOS 中:
```
PYTHONPATH=src pytest -q
```
## 仓库结构
```
docs/ documentazione del progetto
examples/ file di esempio per demo e test
src/ban_engine/ codice sorgente principale
src/ban_engine/firewall/ backend firewall
tests/ test automatici con pytest
requirements.txt dipendenze del progetto
README.md guida iniziale del repository
```
## 预期架构
主要的 OOP 部分涉及防火墙 backend。
抽象基类将是 `FirewallBackend`,包含以下通用方法:
- `block_ip(ip: str)`
- `unblock_ip(ip: str)`
- `is_blocked(ip: str)`
预期的子类包括:
- `DryRunFirewallBackend`
- `LinuxIptablesBackend`
- `WindowsFirewallBackend`
引擎将使用抽象类型 `FirewallBackend`,而不直接依赖于操作系统。这允许使用多态性来更改 backend,而无需修改核心逻辑。
## 项目状态
项目正在开发中。
第一个里程碑是使仓库变得整洁、有文档记录、可测试,并为实现应用程序核心做好准备。
标签:PB级数据处理, Python, SSH防爆破, 安全规则引擎, 安全运维, 无后门, 红队行动, 自动化响应, 逆向工具, 防火墙