ds-ds-00/Breacher_Ips
GitHub: ds-ds-00/Breacher_Ips
基于 Python 和 Scapy 构建的多线程主机入侵防御系统,通过滑动窗口检测网络攻击并自动调用 iptables 进行实时阻断。
Stars: 0 | Forks: 1
# Breacher_Ips
## 一个基于 Python 开发的多线程、异步基于主机的入侵防御系统 (HIPS)。利用 Scapy 进行实时数据包摄取,采用滑动窗口签名进行状态威胁检测,并通过内核级的 Netfilter/iptables 规则实现自动化的主动防御
## 架构拓扑
系统采用异步执行队列,以确保在密集流量下实现零丢包的数据包监控。
┌──────────────────────┐
│ Raw Network Socket │
└──────────┬───────────┘
│
▼ [Scapy Sniffer Loop]
┌──────────────────────┐
│ Asynchronous Queue │
└──────────┬───────────┘
│
▼ [ExtractorWorker Thread]
┌──────────────────────┐
│ Feature Extraction │
└──────────┬───────────┘
│
▼ [Normalized Data]
┌──────────────────────┐
│ Detection Engine │
└────┬────────────┬────┘
│ │
│ Evaluate │ Evaluate
▼ Modules ▼ Components
┌────────────────┐ ┌─────────────────┐
│ Stateful Rule │ │ DatabaseManager │
│ Evaluator │ └────────┬────────┘
└────────┬───────┘ │
│ ▼ [Thread-Safe Commit]
▼ Alert Triaged ┌─────────────────┐
┌────────────────┐ │ SQLite Storage │
│ Firewall │ │ (breacherips.db)│
│ Controller │ └─────────────────┘
└────────┬───────┘
│
▼ [System Call Wrapper]
┌────────────────┐
│ Netfilter │
│ (iptables) │
└────────────────┘
### 核心子系统
1. **摄取层 (`capture/`)**: 使用 Scapy 的非阻塞捕获引擎挂钩原始网络 socket 接口。绑定到指定的适配器,并将原始数据报结构直接推送到有界的处理队列中。
2. **解析层 (`parser/`)**: 生成一个独立的 `ExtractorWorker` 线程,不断处理队列提取,安全地抽象和规范化结构属性(IP 头部、传输层标志、时间戳)。
3. **检测引擎 (`detection/`)**: 使用滚动时间窗口向量编排并发的、有状态的检测插件。当前的评估定义涵盖:
* **SYN Flood**: 跟踪异常的非对称半开 TCP 标志。
* **Port Scan**: 评估在紧凑的时间限制内,跨水平和垂直端口扫描的唯一阈值目标。
* **ICMP Flood**: 监控快速的 ping 间隔。
* **Bruteforce**: 检查快速的应用层协议失败密度。
4. **防御层 (`prevention/`)**: 通过核心网络防护栏验证矩阵管理实时保护动作。包含集成的符合 CIDR 的网络/主机 `whitelist` 检查。如果非白名单异常触发警报,它会使用 Netfilter 规则在内核级别动态丢弃恶意流量。
5. **持久化层 (`database/`)**: 一个基于 SQLite 构建的线程安全事务引擎。它利用安全事件记录上的优化索引生成实时遥测分析。
## 📁 仓库目录结构
```
prevention_sys/
├── capture/
│ ├── __init__.py
│ └── sniffer.py # Non-blocking raw packet sniffer loop
├── parser/
│ ├── __init__.py
│ └── extractor.py # Asynchronous worker processing packet queue
├── detection/
│ ├── __init__.py
│ ├── engine.py # Central analytics processing engine
│ ├── syn.py # Stateful TCP SYN Flood signature evaluation
│ ├── portscan.py # Horizontal/Vertical port scan evaluation
│ ├── icmp.py # Volumetric ICMP Flood evaluation
│ └── bruteforce.py # Application authentication failure logic
├── prevention/
│ ├── __init__.py
│ ├── firewall.py # Netfilter / iptables interaction wrapper
│ └── whitelist.py # Thread-safe object managing safe CIDR blocks
├── database/
│ ├── __init__.py
│ ├── db.py # Thread-safe SQLite engine manager
│ ├── models.py # SQLite table definitions and indices
│ └── breacherips.db # Persistent binary local ledger (Git ignored)
├── requirements.txt # Frozen package deployment dependencies
├── .gitignore # System, cache, and DB storage rules
├── main.py # Daemon application root startup coordinator
└── verify_db.py # Administrative utility to dump raw events
```
# 核心子系统
## 摄取层 (`capture/`)
摄取层负责使用 Scapy 的数据包捕获引擎持续监控网络流量。数据包被实时捕获,并立即放入线程安全的队列中,而不执行任何繁重的处理。这种设计确保了即使在网络活动频繁的时期,数据包捕获也能保持响应。
**职责**
- 从网络接口捕获实时数据包
- 独立于检测引擎运行
- 将数据包推送到有界的处理队列中
- 尽量减少繁重流量期间的丢包情况
## 解析层 (`parser/`)
解析层由一个专用的工作线程组成,该线程不断从队列中检索数据包,并提取检测引擎所需的规范化特征。
提取的信息包括:
- 源 IP 地址
- 目标 IP 地址
- 源端口
- 目标端口
- 协议
- TCP 标志
- 数据包时间戳
然后,规范化的数据包结构将被转发到检测引擎。
## 检测引擎 (`detection/`)
检测引擎通过维护网络活动的滑动窗口来执行状态流量分析。每个攻击检测器独立运行,并根据预定义的阈值评估传入的数据包。
目前已实现的检测模块包括:
- **SYN Flood 检测**
- 检测来自同一源的过量 TCP SYN 数据包。
- **Port Scan 检测**
- 通过监控在可配置时间窗口内对多个目标端口的连接来检测水平和垂直扫描。
- **ICMP Flood 检测**
- 识别超过正常操作阈值的异常 ICMP Echo Request 流量。
- **暴力破解检测**
- 跟踪短时间内的重复身份验证尝试,以识别潜在的密码猜测攻击。
## 防御层 (`prevention/`)
当检测到恶意活动时,防御子系统将执行自动响应操作。
保护工作流程:
1. 验证源 IP 是否存在于白名单中。
2. 忽略受信任的主机。
3. 为恶意源插入 `iptables` DROP 规则。
4. 在数据库中记录防御操作。
## 💾 持久化层 (`database/`)
BreacherIPS 将所有检测到的安全事件存储在本地 SQLite 数据库中。
每条记录包含如下信息:
- 时间戳
- 源 IP
- 攻击类型
- 详情
- 检测状态
- 防御操作
数据库层是线程安全的,独立于检测引擎运行。
# 安装说明
## 前置条件
在 Ubuntu/Debian 上安装所需的系统软件包。
```
sudo apt update
sudo apt install python3 python3-pip python3-venv iptables nmap -y
```
## 克隆仓库
```
git clone https://github.com/ds-ds-00/Breacher_Ips.git
cd Breacher_Ips/prevention_sys
```
## 创建虚拟环境
```
python3 -m venv ips_env
source ips_env/bin/activate
pip install -r requirements.txt
```
## 配置白名单
在启动 BreacherIPS 之前,请将您信任的 IP 地址列入白名单,以防止意外阻断。
示例:
```
whitelist.add_to_whitelist("127.0.0.1")
whitelist.add_to_whitelist("192.168.1.0/24")
```
## 启动 IPS
```
sudo ../ips_env/bin/python3 main.py
```
# 🧪 测试
## 验证记录的事件
```
sudo python3 verify_db.py
```
## Port Scan 检测
从另一台机器运行 Nmap SYN 扫描。
```
sudo nmap -sS
```
## ICMP Flood 检测
```
ping -f
```
## SYN Flood 检测
在受控测试环境或渗透测试实验室中生成大量 TCP SYN 流量。BreacherIPS 应检测到异常流量模式,并自动为非白名单主机创建 `iptables` 规则。
# ✨ 功能
- 多线程架构
- 异步生产者-消费者 pipeline
- 使用 Scapy 进行实时数据包捕获
- 状态攻击检测
- 通过 iptables 自动阻断 IP
- 线程安全的 SQLite 日志记录
- 白名单支持
- 模块化检测引擎
- 易于扩展的设计
# 未来增强
计划的改进包括:
- 自动解除 IP 阻断工具
- 用于监控的 Web 仪表板
- 电子邮件警报
- 基于机器学习的异常检测
- YAML 规则配置
- Docker 支持
- nftables 支持
- REST API 标签:iptables, Netfilter, Scapy, 主机入侵防御系统, 入侵检测与防御, 异步多线程, 红队行动, 网络安全, 逆向工具, 隐私保护