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, 入侵检测系统, 安全数据湖, 恶意代码分类, 插件系统, 端口扫描检测, 网络安全, 逆向工具, 隐私保护