garrv105/sentinelnet
GitHub: garrv105/sentinelnet
这是一个生产级自适应网络威胁检测与自动响应工具包,通过实时数据包捕获、规则引擎和ML异常检测来识别威胁并自动封禁恶意IP。
Stars: 0 | Forks: 0
# SentinelNet
[](https://github.com/garrv105/sentinelnet/actions/workflows/ci.yml)
[](https://www.python.org/)
[](LICENSE)
[](https://github.com/psf/black)
[](https://github.com/PyCQA/bandit)
[](docker/Dockerfile)
**自适应网络威胁检测与自动响应工具包**
SentinelNet 是一个生产级可部署的网络安全监控系统。它执行实时数据包捕获、重建双向流量、使用混合规则引擎和基于 ML 的异常检测器检测威胁,并通过阻止恶意 IP 进行自动响应——所有功能均通过安全的 REST API 和 WebSocket 流公开。
## 演示

## 功能
| 能力 | 详情 |
|---|---|
| **实时捕获** | 基于 Scapy 的任意接口混杂模式数据包捕获 |
| **流量重构** | 双向 TCP/UDP 流量跟踪,包含 IAT、字节和标志统计 |
| **规则引擎** | 基于签名的检测:端口扫描、SYN 泛洪、DNS 隧道、暴力破解 |
| **异常检测** | 基于统计偏差评分的每 IP 行为画像 |
| **自动响应** | iptables IP 封禁、事件记录、通过 EventBus 告警 |
| **REST API** | 集成 JWT + API 密钥认证、速率限制和安全头的 FastAPI |
| **WebSocket** | 面向仪表板 / SIEM 集成的实时事件流 |
| **PCAP 加载器** | 将原始 `.pcap` / `.pcapng` 文件转换为带标签的流量特征数据集 |
| **Docker** | 使用 `docker-compose up` 一键部署 |
## 架构
```
Packets (eth0/any)
│
▼
PacketCaptureEngine ──► FlowTracker ──► FeatureExtractor
│
┌──────────────────────┤
▼ ▼
RuleEngine AnomalyDetector
│ │
└──────────┬───────────┘
▼
EventBus
│
┌──────────┴───────────┐
▼ ▼
ResponseManager REST API / WS
(IPBlocker + Logger) (JWT auth + slowapi)
```
## 快速开始
### Docker(推荐)
```
git clone https://github.com/garrv105/sentinelnet.git
cd sentinelnet
docker-compose -f docker/docker-compose.yml up
```
### 本地
```
pip install -e ".[dev]"
# 需要 root 权限进行实时数据包捕获
sudo python -m sentinelnet --interface eth0 --mode full --api-port 8080
# 无需 root 权限模拟流量(用于测试)
python scripts/simulate_traffic.py
```
## API 认证
```
# 1. 获取 JWT token
curl -X POST http://localhost:8080/auth/token \
-d "username=admin&password=changeme"
# 2. 使用 token
curl http://localhost:8080/api/v1/status \
-H "Authorization: Bearer "
# 3. 或使用 API key(设置 SENTINELNET_API_KEYS 环境变量)
curl http://localhost:8080/api/v1/incidents \
-H "X-API-Key: your-key-here"
```
API 文档可在 `http://localhost:8080/docs`(Swagger UI)获取。
## PCAP 数据集加载器
将任意 PCAP 捕获转换为带标签的流量特征数据集:
```
from sentinelnet.data.pcap_loader import extract_flows_from_pcap, load_pcap_directory
# 单个文件
df = extract_flows_from_pcap("capture.pcap", label="NORMAL", output_csv="flows.csv")
# 批量目录(按文件名自动标注)
df = load_pcap_directory(
"/data/pcaps/",
label_map={"normal": "NORMAL", "dos": "DoS", "scan": "PortScan"},
output_csv="labeled_flows.csv",
)
```
支持 CICFlowMeter CSV 输出、原始 PCAP/PCAPNG 以及 CAIDA / CTU-13 / UNSW-NB15 数据集格式。
## 测试
```
pip install -e ".[dev]"
pytest tests/ -v --cov=sentinelnet
```
测试覆盖:PacketCaptureEngine、FlowTracker、RuleEngine、AnomalyDetector、EventBus、ResponseManager —— 40 多个测试用例。
## CI/CD 流水线
每次推送和 PR 时运行五作业 GitHub Actions 工作流:
| 作业 | 描述 |
|---|---|
| **Lint** | ruff + black + isort |
| **Test** | Python 3.10 / 3.11 / 3.12 上的 pytest,含覆盖率 |
| **Security** | bandit 静态分析 + pip-audit |
| **Docker** | 构建镜像,验证层 |
| **Release** | 在 `main` 分支构建 wheel 工件 |
## 配置
所有设置位于 `config/sentinelnet.yaml` 和环境变量中:
```
SENTINELNET_JWT_SECRET=
SENTINELNET_ADMIN_PASS_HASH=
SENTINELNET_API_KEYS=key1,key2
SENTINELNET_CORS_ORIGINS=https://yourdomain.com
```
## 安全说明
SentinelNet 需要 root/CAP_NET_RAW 权限进行实时数据包捕获。API 服务器本身以非特权模式运行。对于生产部署,通过 `sudo` 或 Linux capabilities 运行捕获组件,并将 API 服务器置于反向代理(nginx/Caddy)后方。
## 许可证
MIT —— 见 [LICENSE](LICENSE)
*作为生产级网络安全作品集的一部分构建。是与 [XAI-IDS](https://github.com/garrv105/xai-ids) 和 [PQC-Analyzer](https://github.com/garrv105/pqc-analyzer) 配套的三项目套件之一。*
标签:AMSI绕过, API安全, AV绕过, FastAPI, IP封禁, JSON输出, JWT认证, PCAP分析, Rate Limiting, Scapy, SIEM集成, TCP/UDP流跟踪, WebSocket, 依赖分析, 威胁情报, 威胁检测, 安全规则引擎, 安全运营, 实时流量监控, 开发者工具, 扫描框架, 机器学习安全应用, 网络安全, 网络异常检测, 网络流量重构, 自动化响应, 请求拦截, 逆向工具, 防火墙联动, 隐私保护