使用 Python 构建模块化 IDS/IPS 工具:网络安全实用指南

发布: (2025年12月20日 GMT+8 06:33)
3 min read
原文: Dev.to

Source: Dev.to

什么是 IDS‑IPS‑Tool?

IDS‑IPS‑Tool 是一个基于 Python 的安全框架,将三项关键功能合并为一个模块化的包:

  • IDS(入侵检测系统): 使用正则表达式模式分析日志文件(例如 /var/log/auth.log),识别恶意活动。
  • IPS(入侵防御系统): 通过系统防火墙(iptables)自动阻断违规 IP。
  • 网络 IDS: 一个嗅探器,监控实时网络流量,捕获可疑的数据包模式(例如 TCP SYN 扫描)。

架构与技术栈

该工具 模块化基于配置——新规则通过更新 config.json 文件添加,而不是硬编码。

  • Python 3.x – 核心逻辑。
  • Scapy – 深度数据包检查和网络嗅探。
  • Watchdog – 通过文件系统事件实现实时日志监控。
  • Subprocess – 与 Linux iptables 交互,实现自动阻断。

项目结构

IDS-IPS-Tool/
├── src/           # 核心模块(检测、预防、日志)
├── config.json    # 攻击特征(正则与模式)
├── ids_main.py    # 日志分析入口
├── netids_main.py # 网络嗅探入口
└── ips_main.py    # 自动阻断入口

关键特性:基于正则的检测

系统的核心在于能够解析复杂日志。下面是配置文件中的一个检测模式示例:

{
  "patterns": [
    {
      "name": "Failed SSH Login",
      "regex": "Failed password.*from ([\\d.]+)",
      "severity": "high"
    }
  ]
}

捕获组动态提取攻击者的 IP 地址,并将其传递给 IPS 模块进行即时缓解。

入门指南

克隆仓库

git clone https://github.com/Bangkah/IDS-IPS-Tool.git
cd IDS-IPS-Tool

安装依赖

pip install -r requirements.txt

运行网络嗅探器(需要 root 权限)

sudo python netids_main.py config.json --iface eth0

经验教训

  • 性能: 实时数据包嗅探需要高效的数据处理,以避免丢包。
  • 安全性: 在将 IP 传递给 shell 命令前进行过滤,防止命令注入。
  • 自动化: 将“看到攻击”与“阻止攻击”程序化衔接是实现有效防御的关键。

路线图与贡献

这是一个持续进行的项目。未来目标包括:

  • 使用 Streamlit 添加 Web 仪表盘。
  • 集成 Telegram/Discord 警报。
  • 支持 nftablesiptables 并存。

如果你对网络安全或 Python 感兴趣,欢迎查看代码、提交 issue 或者发起 PR。

GitHub 仓库: Bangkah/IDS-IPS-Tool

Back to Blog

相关文章

阅读更多 »

仓库利用的权威指南

引言 仓库本质上只是一个 3‑D 盒子。利用率只是衡量你实际使用了该盒子多少的指标。虽然物流 c...