基于 Python 控制台 的简单入侵检测系统(IDS)的课程作业程序设计和实现方案。入侵检测系统(IDS)实现,主要功能包括检测 SYN 洪水攻击、ARP 欺骗、端口扫描,并提供日志记录、实时检测和控制台交互
功能概述
- 实时监控网络流量:
- 捕获网络中的数据包,分析其来源、目标、协议等信息。
- 检测常见网络攻击:
- 检测如 SYN 洪水攻击、重复 ARP 请求、端口扫描等常见攻击行为。
- 日志记录:
- 将检测到的异常活动记录到日志文件中,便于后续分析。
- 告警功能:
- 实时输出检测到的异常信息。
这是一个非常完整的入侵检测系统(IDS)实现,主要功能包括检测 SYN 洪水攻击、ARP 欺骗、端口扫描,并提供日志记录、实时检测和控制台交互。以下是对代码的详细说明和潜在改进建议:
代码功能总结
-
攻击检测功能
- SYN 洪水攻击:
- 检测 TCP 数据包中的 SYN 标志,通过计数每个 IP 的 SYN 数据包数量来判断是否达到阈值。
- ARP 欺骗:
- 检测同一 IP 地址是否绑定多个 MAC 地址,通过对比记录的 MAC 地址集合判断是否有欺骗行为。
- 端口扫描:
- 检测同一源 IP 扫描目标主机的多个端口,通过记录已扫描端口的数量来判定是否存在端口扫描行为。
- SYN 洪水攻击:
-
日志记录
- 检测到异常活动后,记录攻击类型、IP 地址和其他详细信息到日志文件
ids_logs.txt
。
- 检测到异常活动后,记录攻击类型、IP 地址和其他详细信息到日志文件
-
实时数据包捕获
- 使用
Scapy
捕获网络数据包并实时分析。
- 使用
-
控制台交互菜单
- 提供选项以启动检测、停止检测、查看日志或退出程序。
技术实现
1. 环境依赖
需要安装以下库:
- Scapy:用于捕获和解析网络数据包。
- 标准库:
os
和time
用于日志管理,threading
用于多线程。
功能模块说明
1. 实时捕获数据包
- 使用
Scapy
捕获 IP 和 ARP 数据包。 - 提供持续监听功能,实时分析网络流量。
2. 检测功能
- SYN 洪水攻击:
- 检测大量的 SYN 数据包。
- 设定阈值(如 100 个 SYN 数据包),超过即触发告警。
- ARP 欺骗攻击:
- 检测同一 IP 地址是否绑定多个 MAC 地址。
- 端口扫描:
- 检测同一 IP 是否扫描多个端口(超过 10 个端口即触发告警)。
3. 日志功能
- 所有异常活动均记录到
ids_logs.txt
文件。 - 包含时间戳、攻击类型和详细信息。
4. 控制台菜单
- 用户通过控制台菜单选择启动检测、停止检测或查看日志。
如果运行过程出现报错,可能是以下几点原因:
可能原因
-
程序中变量初始化错误:
DETECTED_ATTACKS
中的键ports_scanned
未正确初始化,导致在处理时出现错误。
-
Socket 被关闭:
- 网络监听套接字(Socket)可能由于权限不足、缺少网络接口访问权限或程序中止导致被关闭。
-
权限问题:
- 捕获网络数据包需要管理员权限,如果未以管理员权限运行,可能会导致监听失败。
总结
通过以下几步可以有效解决问题:
- 初始化变量:确保
ports_scanned
和其他变量正确初始化。 - 管理员权限运行:确保以管理员权限启动程序。
- 检查网络接口:确认程序监听的网络接口正确。
- 捕获异常:防止异常导致程序崩溃,并记录详细日志。
- 调整系统设置:关闭防火墙或启用监听模式。