fatimaanees485-art/suricata-nids-deployment

GitHub: fatimaanees485-art/suricata-nids-deployment

一套基于 Suricata 的 Docker 化网络入侵检测系统,提供本地检测规则、实时告警监控、自动化响应和可视化仪表盘。

Stars: 0 | Forks: 0

# 网络入侵检测系统 此软件包使用 Suricata 搭建了一套基于网络的入侵检测系统。它包含本地规则、持续告警监控、响应钩子、测试流量以及可选的仪表盘。 ## 功能概述 - 配置了用于数据包捕获和 JSON 告警的 Suricata IDS - 包含针对扫描、暴力破解、可疑 DNS、ICMP 探测、Web 攻击和恶意软件指标的本地检测规则 - 用于持续监控 `eve.json` 的脚本 - 带有 dry-run 模式和可选拦截功能的响应脚本 - 用于验证告警的测试流量脚本 - 用于告警可视化的可选 Streamlit 仪表盘 ## 目录结构 ``` suricata-nids/ config/suricata.yaml rules/local.rules scripts/monitor_alerts.py scripts/respond.py scripts/generate_test_traffic.py dashboard/app.py docker-compose.yml logs/ ``` ## 使用 Docker 快速开始 1. 编辑 `docker-compose.yml` 并设置网络接口: ``` command: ["-i", "eth0", "-c", "/etc/suricata/suricata.yaml"] ``` 请使用你真实的捕获接口,例如 `eth0`、`ens33`、`enp0s3`,或操作系统显示的其他接口。 2. 启动 Suricata: ``` docker compose up -d ``` 3. 查看告警: ``` python scripts/monitor_alerts.py --eve logs/eve.json ``` 4. 在另一个终端运行测试流量: ``` python scripts/generate_test_traffic.py --target 127.0.0.1 ``` ## Linux 原生安装 安装 Suricata: ``` sudo apt update sudo apt install suricata ``` 复制规则文件: ``` sudo cp rules/local.rules /etc/suricata/rules/local.rules ``` 在 `/etc/suricata/suricata.yaml` 中添加或确认已加载此规则文件: ``` rule-files: - local.rules ``` 验证配置: ``` sudo suricata -T -c /etc/suricata/suricata.yaml -v ``` 启动实时捕获: ``` sudo suricata -c /etc/suricata/suricata.yaml -i eth0 ``` ## 持续监控 监控脚本会持续跟踪 Suricata 的 `eve.json` 告警流,并打印重要告警: ``` python scripts/monitor_alerts.py --eve logs/eve.json ``` 运行响应操作: ``` python scripts/monitor_alerts.py --eve logs/eve.json --respond --min-severity 2 ``` 默认情况下,响应模式处于 dry-run(模拟运行)状态。它会将响应决策写入 `logs/responses.log`。 ## 响应机制 响应脚本支持: - 记录告警元数据 - 在冷却期内抑制来自同一源的重复告警 - 生成拦截名单(blocklist)文件 - 使用 `iptables` 进行可选的 Linux 防火墙拦截 dry-run 示例: ``` python scripts/respond.py --src-ip 10.0.0.55 --signature "ET SCAN Example" --severity 2 ``` 实时拦截示例: ``` sudo python scripts/respond.py --src-ip 10.0.0.55 --signature "ET SCAN Example" --severity 2 --enforce ``` 仅在测试通过后再启用实时拦截,因为如果规则范围过大,自动拦截可能会中断合法用户的访问。 ## 仪表盘 安装 Streamlit: ``` pip install streamlit pandas ``` 运行: ``` streamlit run dashboard/app.py -- --eve logs/eve.json ``` 仪表盘会显示告警数量、严重程度分布、高频源 IP、高频签名以及最近的告警。 ## 检测覆盖范围 本地规则包含以下场景的示例: - ICMP ping 扫描 - Nmap 风格的 SYN 扫描 - SSH 暴力破解模式 - HTTP SQL 注入尝试 - HTTP 路径遍历尝试 - 可疑的 PowerShell 下载字符串 - 针对可疑动态 DNS 域名的 DNS 查询 - 已知的恶意测试域名 这些只是入门规则。在生产环境中,请将它们与持续维护的社区或商业规则集结合使用,并针对您的实际环境调整容易误报的签名。 ## 运维检查清单 1. 选择捕获接口。 2. 在 `config/suricata.yaml` 中设置受信任的内部网络。 3. 加载 `rules/local.rules`。 4. 验证 Suricata 配置。 5. 启动持续数据包捕获。 6. 确认 `logs/eve.json` 能接收到告警。 7. 运行测试流量并验证检测结果。 8. 启动监控脚本。 9. 在 dry-run 模式下启用响应。 10. 审查误报情况。 11. 仅对高可信度的告警类别启用强制执行。 ## 安全注意事项 - 首先在 IDS 模式下运行。 - 在规则调优完成之前,保持拦截功能禁用。 - 未经明确加入白名单,绝不拦截共享的 DNS 解析器、网关或代理服务器。 - 以适当的权限存储日志,因为其中可能包含内部 IP、主机名、URL 和用户活动信息。
标签:Docker, IP 地址批量处理, Kubernetes, Metaprompt, Python, Suricata, 安全防御评估, 插件系统, 无后门, 现代安全运营, 网络安全, 请求拦截, 逆向工具, 隐私保护