sahadatx/CodeAlpha-Network-Intrusion-Detection-System
GitHub: sahadatx/CodeAlpha-Network-Intrusion-Detection-System
基于 Snort 3 与 Python 构建的网络入侵检测系统,提供自定义规则、实时流量监控、告警日志分析与多格式自动化报告。
Stars: 0 | Forks: 0
   [](https://github.com/sahadatx/CodeAlpha-Network-Intrusion-Detection-System/actions/workflows/python-tests.yml)  
一个专业的**网络入侵检测系统 (NIDS)**,使用 **Snort 3** 和 **Python** 构建,用于监控实时网络流量并即时检测可疑活动。 该项目使用自定义的 Snort 规则,分析安全警报,生成 **TXT**、**CSV** 和 **JSON** 格式的报告,并包含通过 **GitHub Actions** 进行的自动化测试。 作为 **CodeAlpha 网络安全实习**的一部分开发,旨在展示实用的网络安全和网络监控技能。 # 📑 目录 - [功能](#features) - [截图](#screenshots) - [项目结构](#project-structure) - [安装说明](#installation) - [用法](#usage) - [自定义检测规则](#custom-detection-rules) - [实时数据包监控](#live-packet-monitoring) - [仪表板与警报分析](#dashboard-and-alert-analysis) - [生成的报告](#generated-reports) - [自动化测试](#automated-testing) - [使用的技术](#technologies-used) - [未来改进](#future-improvements) - [贡献](#contributing) - [许可证](#license) - [作者](#author) # 功能 | 功能 | 状态 | |----------|:------:| | Snort 3 集成 | ✅ | | 自定义检测规则 | ✅ | | ICMP 检测 | ✅ | | HTTP 检测 | ✅ | | SSH 检测 | ✅ | | FTP 检测 | ✅ | | TCP SYN 扫描检测 | ✅ | | 实时数据包监控 | ✅ | | 警报分析仪表板 | ✅ | | TXT 报告生成 | ✅ | | CSV 报告生成 | ✅ | | JSON 报告生成 | ✅ | | 专业 CLI 输出 | ✅ | | 自动化测试 | ✅ | | GitHub Actions CI | ✅ | | MIT 许可证 | ✅ | # 截图 以下截图展示了网络入侵检测系统的实现和功能。 ## 1️⃣ 项目结构  ## 2️⃣ Snort 版本  ## 3️⃣ 自定义检测规则  ## 4️⃣ ICMP 检测  ## 5️⃣ HTTP & TCP SYN 检测  ## 6️⃣ 仪表板与警报分析  ## 7️⃣ 生成的报告  ## 8️⃣ GitHub Actions (CI/CD)  # 项目结构 该项目采用模块化目录结构,以分离 Snort 规则、分析脚本、报告、自动化测试和文档。 ``` CodeAlpha-Network-Intrusion-Detection-System/ │ ├── .github/ │ └── workflows/ │ └── python-tests.yml │ ├── logs/ │ └── alerts.log │ ├── reports/ │ ├── assets/ │ ├── report.txt │ ├── report.csv │ ├── report.json │ └── test_report.html │ ├── rules/ │ └── local.rules │ ├── screenshots/ │ ├── 01-project-structure.png │ ├── 02-snort-version.png │ ├── 03-custom-rules.png │ ├── 04-icmp-detection.png │ ├── 05-http-tcp-syn-detection.png │ ├── 06-dashboard-analysis.png │ ├── 07-generated-report.png │ └── 08-github-actions.png │ ├── scripts/ │ └── analyze_logs.py │ ├── tests/ │ ├── test_analyzer.py │ ├── test_files.py │ └── test_reports.py │ ├── CHANGELOG.md ├── LICENSE ├── README.md ├── VALIDATION.md ├── requirements.txt └── .gitignore ``` # 安装说明 ## 克隆仓库 ``` git clone https://github.com/sahadatx/CodeAlpha-Network-Intrusion-Detection-System.git cd CodeAlpha-Network-Intrusion-Detection-System ``` ## 创建虚拟环境 ``` python3 -m venv venv ``` Linux ``` source venv/bin/activate ``` Windows ``` venv\Scripts\activate ``` ## 安装依赖 ``` pip install --upgrade pip pip install -r requirements.txt ``` ## 验证 Snort 安装 ``` snort -V ``` 示例 ``` Snort++ 3.12.2.0 Using DAQ version 3.0.24 Using libpcap version 1.10.6 Using OpenSSL 3.6.2 ``` # 用法 ## 开始实时数据包监控 ``` sudo snort \ -c /etc/snort/snort.lua \ -R rules/local.rules \ -i wlan0 \ -A alert_fast ``` 如有必要,请将 **wlan0** 替换为您的网络接口。 ## 生成检测报告 收集警报后,分析生成的日志文件。 ``` python3 scripts/analyze_logs.py ``` 脚本会自动在 **reports/** 目录下创建 - report.txt - report.csv - report.json # 自定义检测规则 该 IDS 使用自定义的 Snort 规则来检测常见的网络活动和潜在的安全威胁。 | 规则 | 协议 | 端口 | 目的 | |-------|----------|------|----------| | ICMP 检测 | ICMP | 任意 | 检测 Ping 请求 | | HTTP 检测 | TCP | 80 | 检测 HTTP 连接 | | SSH 检测 | TCP | 22 | 检测 SSH 连接 | | FTP 检测 | TCP | 21 | 检测 FTP 连接 | | TCP SYN 检测 | TCP | 任意 | 检测可能的 SYN 扫描 | ## 规则示例 ``` alert tcp any any -> any any ( flags:S; msg:"[CodeAlpha] Possible TCP SYN Scan"; sid:1000005; rev:1; ) ``` ## 检测工作流程 ``` Incoming Network Traffic │ ▼ Snort Packet Capture │ ▼ Apply Custom Detection Rules │ ▼ Generate Security Alerts │ ▼ Save alerts.log │ ▼ Python Log Analyzer │ ▼ Generate Dashboard & Reports ``` # 实时数据包监控 该系统使用 **Snort 3** 持续监控实时网络流量,并实时应用自定义检测规则。 每当有规则匹配到传入流量时,Snort 会立即生成警报,并存储在 **logs/alerts.log** 中以供进一步分析。 检测到的事件包括: - ICMP Ping 请求 - HTTP 连接 - SSH 连接 - FTP 连接 - TCP SYN 扫描尝试 # 仪表板与警报分析 Python 日志分析器会自动处理 **Snort 警报日志**,并生成一个专业的仪表板,总结检测到的网络事件。 该仪表板提供了对入侵尝试、警报统计和网络活动的快速概览。 ## 仪表板概览 该仪表板包括: - 分析时间戳 - 日志文件信息 - 检测到的警报总数 - 警报摘要 - 源 IP 地址排行 - 目标 IP 地址排行 - 最常见警报 - 生成报告状态 ## 仪表板输出示例 ``` ============================================================ CodeAlpha IDS Dashboard ============================================================ Total Alerts : 42 Alert Summary TCP SYN : 3 HTTP : 9 ICMP : 30 Most Common Alert ICMP (30 alerts) ``` # 生成的报告 在处理 **logs/alerts.log** 之后,分析器会自动生成多种格式的报告,用于记录和进一步分析。 生成的文件 ``` reports/ ├── report.txt ├── report.csv └── report.json ``` ## TXT 报告 TXT 报告提供了检测到警报的易读摘要。 它包括: - 报告生成时间 - 日志文件名 - 警报总数 - 警报摘要 - 源 IP 地址排行 - 目标 IP 地址排行 # 自动化测试 该项目包含使用 **Pytest** 开发的自动化测试,以验证 IDS 日志分析器的功能。 测试套件验证: - Python 分析器 - 报告生成 - 项目结构 - 检测规则 - 生成的文件 ## 运行测试 ``` python -m pytest -v ``` ## 输出示例 ``` ============================= test session starts ============================= collected 7 items tests/test_analyzer.py ........ PASSED tests/test_files.py ........... PASSED tests/test_reports.py ......... PASSED ============================== 7 passed in 0.04s ============================== ``` # 使用的技术 | 技术 | 用途 | |------------|----------| | Python 3.13 | 编程语言 | | Snort 3 | 网络入侵检测 | | Kali Linux | 开发平台 | | Pytest | 自动化测试 | | GitHub Actions | 持续集成 | | Git | 版本控制 | | GitHub | 源代码托管 | | CSV | 报告生成 | | JSON | 结构化数据导出 | | 正则表达式 | 日志解析 | # 未来改进 以下增强功能计划在未来版本中推出: - 📧 电子邮件警报通知 - 🌐 基于 Web 的仪表板 - 📊 交互式图表 - 🌍 Geo-IP 位置检测 - 🧠 威胁情报集成 - 📡 多接口监控 - ☁️ 云报告存储 - 🐳 Docker 部署 - 📈 实时分析 - 🔐 高级检测规则 # 贡献 欢迎贡献! 如果您想改进此项目: 1. Fork 此仓库。 2. 创建一个新的功能分支。 3. 提交您的更改。 4. 推送该分支。 5. 发起一个 Pull Request。 请确保: - 代码遵循 PEP 8 指南。 - 新功能包含适当的测试。 - 在必要时更新文档。 # 许可证 该项目基于 **MIT 许可证**授权。 您可以在 MIT 许可证的条款下自由使用、修改和分发此软件。 有关更多信息,请参阅 **LICENSE** 文件。 # 作者 **Sahadat Hossain** 网络安全爱好者 - 📧 电子邮件: pentester.sahadathossain@gmail.com - 💼 LinkedIn: https://www.linkedin.com/in/pentester-sahadat-hossain/ - 🐙 GitHub: https://github.com/sahadatx # 支持 如果您觉得这个项目有用: - ⭐ 给这个仓库点 Star - 🍴 Fork 该项目 - 🛠️ 贡献改进 - 📢 与他人分享