joel15thegoat/Intrusion_Detection_System-python
GitHub: joel15thegoat/Intrusion_Detection_System-python
一个使用 Python 和 Scapy 构建的实时网络入侵检测系统,支持基于可配置规则的端口扫描与 ARP 欺骗检测,并提供多种告警日志输出方式。
Stars: 0 | Forks: 0
# 入侵检测系统
一个使用 Python 构建的实时网络入侵检测系统。
`ids_live_capture.py` 使用 Scapy 捕获网络数据包,根据可配置的规则检查流量,并将警报记录到 HTML 和 syslog 样式的文件中。它支持控制台模式和可选的 Tkinter GUI。
## 功能:
使用 Scapy 进行实时数据包捕获
基于规则的检测:
受信任的 IP
TCP SYN 端口扫描检测
ARP 欺骗检测
可配置的签名匹配
可选的 HTML 警报报告导出
可选的 syslog 样式日志记录
控制台模式和 GUI 模式
支持 JSON 或 YAML 格式的规则文件
要求
Python 3.8+
scapy>=2.7.0
PyYAML>=6.0
## 要求:
- Python 3.10+
- `scapy>=2.7.0`
- `PyYAML>=6.0`
## 安装:
```
python -m pip install 'scapy>=2.7.0' 'pyyaml>=6.0'
```
## 用法:
运行 IDS 脚本
```
python nids_live_capture.py --rules rules.yaml --iface eth0 --html alerts.html --syslog alerts.log
```
或仅在控制台模式下运行
```
python nids_live_capture.py --nogui --rules rules.json --iface "Wi-Fi"
```
## 选项
| 选项 | 描述 |
|--------------------|-----------------------------------------------|
| `--rules ` | JSON 或 YAML 规则文件 |
| `--iface ` | 用于捕获的网络接口 |
| `--bpf ` | 用于数据包捕获的 BPF 过滤器字符串 |
| `--html ` | HTML 警报报告文件路径 |
| `--syslog ` | syslog 样式日志文件路径 |
| `--nogui` | 在不使用 Tkinter GUI 的情况下运行 |
## 规则文件示例:
```
trusted_ips:
- 127.0.0.1
signatures:
- name: "TCP SYN port scan"
protocol: "TCP"
field: "flags"
value: "S"
description: "Detect excessive SYN packets from same source."
type: "port_scan"
threshold: 10
window_seconds: 5
```
## 注意事项:
数据包捕获需要 Scapy。
`Tkinter `仅在 GUI 模式下需要。
在 Windows 上,可能需要 Npcap/WinPcap 才能提供完整的数据包捕获支持。
如果 Tkinter 不可用,请使用 `--nogui` 在控制台模式下运行。
## 文件:
`ids_live_capture.py `— 主 IDS 脚本
`requirements.txt` — 依赖列表
## 贡献
1. Fork 该仓库
2. 克隆你的 fork
3. 编辑 `ids_live_capture.py` 或改进 README
4. 提交并推送你的更改
5. 发起 pull request
## 许可证
本项目基于 MIT 许可证发布。请随意使用和修改它。
标签:ARP欺骗检测, Scapy, 入侵检测系统, 安全数据湖, 恶意代码分类, 插件系统, 端口扫描检测, 网络安全, 逆向工具, 隐私保护