论文部分内容阅读
随着网络的发展,计算机网络的安全已经成为一个国际化的问题,每年全球因计算机网络的安全系统被破坏而造成的经济损失达数百亿美元。Snort是一个基于libpcap的轻量级网络入侵检测系统(轻量级是指在检测时尽可能少地影响网络的正常操作),它具备一个优秀的轻量级NIDS应该具备的跨平台操作和对系统影响最小等特征,并且允许管理员在短时间内通过修改配置进行实时的安全响应。作为一个开放源代码的网络入侵检测系统,Snort具有非常好的可扩展性和可移植性,已经成为众多研究机构和网络安全提供商剖析的重要对象。Snort有3种工作模式:嗅探器、数据包记录器、网络入侵检测系统。它具有实时数据流量分析和日志IP网络报文的能力,能够进行协议分析,对内容进行搜索和匹配。它能够检测各种不同的攻击方式,对攻击进行实时报警。本文Snort的整体架构进行了比较深入的研究。当Snort启动时,它会根据配置文件中的信息,按行读取出规则文件中的所有攻击规则,形成一个三层链树状结构,然后用libpcap从网卡循环抓包,对之进行TCP/IP协议解析,存储于一个Packet数据结构中,数据包的所有信息,都包含在Packet中。然后把包传给预处理器进行必要的预处理,如IP分片重组,TCP流重组等。接着传送给检测引擎,把数据包与规则链表树进行匹配,若匹配成功,则报警。因此,本文把Snort的整个检测流程分为五个模块:规则处理模块,数据包捕获与解码模块,预处理器模块,检测引擎模块,报警与输出模块。针对各个模块,介绍了相应的数据结构,算法,功能,原理等,对非常重要的函数,也以伪代码的形式,进行了介绍,尤其是Snort中最重要的模块——检测引擎模块,进行了最为详细地介绍。针对Snort可视化不强,对它进行了一些适应性的改进,包括对Snort检测部分的代码进行了一些修改,编写一个调度程序Detector,用它来配置Snort的参数,给Snort发送调度命令,接收和处理Snort的报警信息。