《Linux平台下智能入侵检测系统设计与实现.doc》由会员分享,可在线阅读,更多相关《Linux平台下智能入侵检测系统设计与实现.doc(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、本科论文目 录摘 要IAbstractII引 言11 入侵检测与Snort概述31.1入侵检测系统概念31.2 Snort系统31.3 Snort的特点31.4 Snort规则41.4.1 规则的结构41.4.2 规则头部51.4.3 规则选项61.5 本章小结62 需求分析与总体设计72.1 必要功能需求分析72.2 数据库的设计72.3 Snort的整体框架102.3.1工作流程122.3.2 Snort的运行模式122.4本章小结143 SIDS的详细设计与实现153.1 SIDS实现方案153.2准备工作173.2.1环境的准备173.2.2各软件的准备173.3SIDS的实现193.
2、3.1数据获取功能实现193.3.2数据存储功能实现203.3.3 规则编写功能实现213.3.4 告警显示功能实现233.3.5 控制台功能实现253.4 本章小结264系统测试与检测结果分析274.1搜集入侵数据274.2检测与解析274.3 本章小结29结 论30致 谢31参考文献32本科论文摘 要 互联网的普及已经深深的影响了整个世界,使得整个世界变得更加的紧密。虽然给生活在地球村的人带来了便利,但是也威胁到了人们的日常。因此入侵检测系统作为一个具有主动性和实时性的安全措施,对入侵检测的研究起到十分重要的作用。它主要是通过收集和分析计算机外部和内部的信息,判断是否有可疑的入侵的现象,来
3、完成对入侵的警告和达到防御的作用,使得网络入侵的伤害减少到最低的程度。本课题主要论述了基于Linux系统下,介绍了入侵检测系统的概念。从入侵检测系统的结构和运行流程方面对Snort做了深入的解析来对相关的规则做了扩展和实现。在设计中用Lipacp对网络数据包进行获取,snort作为入侵探测器对数据包进行实时的解析。用MySQL数据库用于存储入侵检测的日志。用Apache作为HTTP的服务器,用BASE作为基于Web入侵事件数据库分析台,用Barnyard将报警日志存入到数据库中。在这其中为实现BASE,用Apache为其提供网络的服务,同时BASE作为查看分析MySQL数据库的分析台。最后对调
4、试的结果进行记录和总结。关键词:Snort;入侵检测;IDS;网络安全 Abstract The popularity of the Internet has deeply affected the whole world, making the whole world more closely. Although it brings convenience to people living in the global village, it also threatens peoples daily life.Thus,intrusion detection system plays an e
5、ssential role in the research of intrusion on detection,as an active and real-time security measure. role in the research of intrusion detection. It is mainly through the collection and analysis of computer external and internal information, to determine whether there is a suspicious intrusion pheno
6、menon, to complete the warning of intrusion and achieve the role of defense, so as to reduce the harm of network intrusion to the lowest degree.This paper mainly discusses the overview of intrusion detection system based on Linux. Snort is deeply analyzed from the aspects of the related technology a
7、nd operation process of the structure of the intrusion detection system to expand and implement the relevant rules. In the design, we use lipacp to get the network packets, Snort as the intrusion detector to analyze the packets in real time. Mysql database is used to store intrusion detection logs.
8、Apache is used as HTTP server, base is used as web-based intrusion event database analysis platform, and barnyard is used to store the alarm log in the database 1. In order to realize base, Apache is used to provide network services, and base is used as the analysis platform to view and analyze MySQ
9、L database. Finally, the debugging results are recorded and summarized.Keywords: snort; intrusion detection; IDS; network security引 言随着人类进入21世纪以来,由于计算机网络是开放的和互联的,所以会经常受到网络“黑客”的攻击和其他一些具有病毒程序和活动的入侵。人们为了能够阻止和减小这些危害,同时最大限度的让伤害降到最低,入侵检测技术已经成为当前研究的重点和难点,Snort入侵检测系统就随之诞生了。它具有支持多平台的扩展性,主要功能是通过对网络数据包的获取来解析,然
10、后对其进行规则匹配,然后记录下不同的攻击规则,在下一次遇到时,直接从规则库中获取进行匹配。该系统可以有效的减少入侵检测的失误,大大提高入侵检测的效率,可以对入侵检测模型进行二次开发,具有完整的功能结构,因此基于Linux平台下的Snort的开发越来越关键了。但是Snort系统界面对用户不友好,用户的使用界面依然是基于命令行的字符方式,所以对系统的配置和使用都十分麻烦,容易出现错误的情况。由于Snort系统设计中包含了许多的模块,而且各个模块之间都是相互联系的,所以在对每个模块进行安装时,要求每一步都要正确,其中一步错误那么整个系统配置都会出现错误,所以对于用户来说无法简单的,一次性正确的安装完
11、成。Snort检测系统发展至今已经拥有了最基本了检测框架,同时具有部署第三方插件的功能。它的源代码是由C语言编写的,所以具有二次开发的功能,已逐渐引起人们的重视,许多国家已经开始研究对Snort的解析和研究,并运用与中小企业当中。现在主流的研究包括:(1)不断的扩展对检测攻击的第三方的插件,比如支持各种网络协议的检测功能和优化更加人性化的主界面,让人机交互更加的方便,使检测的能力不断的扩大。(2)将机器学习和深度学习融入到系统中,通过自主学习的手段不断强化检测的能力,学习到更多的规则集,然后通过提高规则匹配的通过率从而提高了检测的效率。本课题是在基于Linux平台下的智能入侵检测系统的设计与实
12、现。在Linux下的Centos主机提供实时入侵检测的功能。目的在于减少用户对于主机的干预,从而方便用户去控制。为了便于用户去操作Snort系统,提供了一套基于Web的控制台,减少了部署上的麻烦,使得操作更加的简单了。本文一共分三个章节。第一章:介绍了基于Linux下的入侵检测的相关概念,然后以Snort为原理对相关的技术原理进行了阐述。同时介绍了规则集。本章将要从原理上对SIDS进行介绍。第二、三章:分别介绍了整个系统的需求、数据库的设计和完成对Linux平台下的入侵系统的实现。主要是对SIDS进行实现,SIDS功能十分的丰富和齐全,本课题是选择一个带有Web界面控制台和数据库,实现入侵检测
13、和日志记录的功能。第四章:对完成的系统进行验证和分析结果。在实现的基础上对系统所实现的功能进行逐个的测试。验证系统是否能够对攻击进行相应的检测,保证系统能够正确的运行。1 入侵检测与Snort概述入侵检测是计算机从网络中获取接收的数据,然后对收集到的信息对其检测1。如有发现对主机用户有威胁的攻击和入侵现象,则系统会通过软硬件结合的方式,主动的为主机提供全方位的保护。在众多的入侵检测安全管理工具中,Snort是目前最主流和具有应用前景的系统。1.1入侵检测系统概念入侵检查是对防火墙(防火墙)的合理补充,可以帮助系统应对网络攻击,并扩展了系统管理员的安全管理功能(包括安全审核,监视,攻击识别和响应
14、),以增强信息安全基础架构的完整性。它从计算机网络系统中的若干关键点收集信息,并分析这些信息,确定网络中是否有违反安全策略的行为和遭到袭击的迹象2。对于入侵检测系统而言,最重要的是如何对其进行检测。 一般分类为异常检测误用检测。根据信息来源的不同,可以分为主机入侵检测系统(HIDS)和网络入侵检测系统(NIDS)3。HIDS根据主机系统的系统日志和审计记录来进行检测分析。NIDS是根据网络的数据包来分析的。HIDS的部署比较的麻烦,所以花费代价很大,而部署比较的简单,有较低的成本。HIDS有特定监视行为的功能,但是太过依赖于主机的日志。NIDS具有更好的实时性和可移植性。但是缺点是无法检测大量
15、的数据。所以完整的入侵检测系统需要主机和网络两种系统合二为一。1.2 Snort系统Snort是一个由C语言开发的免费的开源的软件和基于Lipacp的轻量级网络入侵检测系统。它可以在多个不同的平台进行跨平台的部署像Linux和Windows系统。并且可以对数据和规则等功能同时的进行,来检测可能存在的危险。由于Snort是开源的,所以开发者们可以随意的对Snort的源码进行二次的开发,不断扩充了Snort的功能。对于使用者来说变得更加的简单和方便。Snort的典型运行环境如图1.1所示4。1.3 Snort的特点Snort具有多平台性和扩展性的入侵检测系统,由于从网络获取数据,所以Snort被定
16、义为基于网络的入侵检测。针对每一种入侵行为,都提炼出它的特征并按照规范写成规则,从而形成一个规则库,将捕获的数据包对照规则库逐一匹配,若匹配成功,则认为该入侵行为成立5。Snort入侵检测系统的特点如下:(1)Snort系统在多个平台进行部署,它具有在不同系统的扩展性;(2)具有实时分析功能和获取网络数据包的能力。能够对网络入侵做出迅速的反应,发出报警提示,同时系统还提供多告警的方式。(3)Snort具有灵活的日志格式,支持Topdump的二进制格式,也支持ASCII字符形式,也支持XML格式的,更便于维护和检查6;完备的Snort具有强大的功能是任何一款入侵检测系统无法对比的。如今Snort
17、的发展正值顶峰,很多研究人员都在不停的对Snort进行更多的扩充。不久以后Snort将成为最大的检测系统。图1.1 搭建Snort实体图1.4 Snort规则Snort实际上就是基于规则匹配的入侵检测系统,其实质就是把数据包解析获得该规则然后与规则库中的规则链进行匹配。那么规则集就是一条条规则所组成的。而规则是根据源IP、目标IP、源端口范围和目标端口范围等属性分类组织成为规则集的9。因此可以把入侵检测分为两步。第一步就是先网络获取数据包,第二步就是和规则集进行匹配。如果匹配成功了,那说明存在威胁,Snort系统会对威胁做出报警。当入侵的规则都检测完毕后,发现没有与之匹配的,说明这些数据十分的
18、安全。1. 41 规则的结构 一般情况下,Snort规则按照逻辑可以分为两个部分:规则头和规则选择10。如图1.2表示。图1.2 Snort规则结构Snort规则最重要的部分是规则标题。 它由七个部分组成:规则操作,网络协议,源网络地址和端口,方向标志,目标地址和端口。Snort通过规则头部的协议来限制发生的动作。Snort规则头部的基本结构如图1.3所示:图1.3 Snort规则头部结构1. 42 规则头部 1规则动作规则操作位于Snort规则的开头,并执行与规则条件匹配的规则操作。Snort自带了5个已经定义好的动作种类,自己也可以定义不同的规则动作。定义好的动作有Log、Pass、Act
19、ivate、Alert和Dynamic。Log表示对日志进行记录,Pass表示通过,Activate表示对检测结果反应,Alert表示对结果报警,最后Dynamic表示动态动作,与Activate一起运行。2协议协议字段是Snort规则头的第二个部分,可以看到协议的类型。目前研究的类型只有四种:TCP、UDP、IP和ICMP。后续会有IPX和OSPF等协议。当协议处于头部的时候,那么就会启动协议的作用。3网络地址段一般地址都为两种,一个是源网络地址和目的网络地址。某一个特定地址可以指的是IP地址。任意地址被定义可以用关键字“any”。用斜杠加一个数字来表示这是哪一种网络地址比如,B类网络地址用
20、/16表示,C类网络地址用/24表示,特定网络地址用/32表示。在操作符中,有一个操作符可以通知Snort系统获取所有的IP地址,排除规则中的IP地址。这个操作符就是“!”。4端口号端口号有许多的运行规则,比如任何有效的端口号可以用any关键字来表示像log tcp any any- 192.168.17.0/24。也可以用单个静态端口号来表示端口号,比如有源端口号80来代表超文本传输协议,远程登录协议Telnet可以用端口号23表示。可以用“:”符号来表示范围像1:1024代表1到1024号。alert tcp 192.168.2.0/24 23 - any any (content: co
21、nfidential; msg: Detected confidential;)5方向段方向端表示的是规则所确定的源和目的的方向。用操作符的左边“-”的表示源地址而右边表示端口号。操作符的右边“-”的表示目的地址和左边表示端口号。为了方便更好的同时表示源和目的可以用操作符“”来表示。1. 43 规则选项 规则选项是启动Snort检测系统中最重要的组成部分。它的作用是对告警的信息和检验数据包的特征进行定义。Snort规则的选项是在括号中,并且每一个规则选项必须用“;”分隔开。当执行规则动作的时候,选项所需要的条件就会达到。一个选项包括两个主要部分:一个关键字和变量值11.其中关键字有许多比如:m
22、sg,flow,ack等。 1.5 本章小结本章介绍了Snort系统的整个概念,并分别介绍了Snort系统的功能。 然后我介绍了Snort的主要规则。规则的结构主要是由两个部分组成的。然后就继续这两个部分的特点和结构。2 需求分析与总体设计本章主要通过系统的分析决定模块的分割与各模块之间的关系,说明功能结构的设计,并明确说明各功能模块所要完成的工作,提供系统整个设计和功能结构的设计。最后,各模块的特定设计流程,主要商务活动和系统的主要设计部分,详细信息,数据库表的设计基础,并决定表的结构和特定内容。2.1 必要功能需求分析功能的需求分析是一个项目最基础的工作,它指的是确定系统的需要哪些必备的功
23、能。然后根据必要功能对这些功能模块进行开发。本文根据项目调查的结果实现了以下的功能:(1)获取网络数据包。作为网络检测的第一步,也是最基础的一步。它是整个系统运行的前提,网络数据包被Lipacp包获取之后,被分析检测,是否存在含有威胁的特征。(2)分析数据包信息。分析数据信息是整个系统中最重要的模块。它是整个系统的核心部分,主要功能是检查和分析捕获的数据路径以验证入侵的风险。(3)对威胁的行为告警。检测数据和捕获数据,原本用户是无法看到入侵检测的情况,所以需要通过告警信息,来展示是否已将入侵的信息检测到。(4)对检测信息的保存模块。入侵检测到的信息并不能直接检测就丢弃,后面需要调用其数据和做分
24、析,所以需要将其存入到数据库中,这样用户需要信息时,可以从数据库中直接观看,为后续统计和显示数据作了铺垫。2.2 数据库的设计该系统采用MySQL作为数据库。 由于检测和分析的数据包存储在数据库中,因此有必要根据数据包信息设计数据库表。表单的域和协议头有关信息对应。分别对四种网络协议进行分析,同时建立对应的数据库表,分别为ARP、ICMP、UDP、IP、TCP等表。下图2.1是各个表的关系示意图。其中signature包括规则形式的报告通知信息,如果按类型分类,它会指示诸如报告类型的主要编号,报告类型,报告类型的主要信息,报告优先级,版本号以及报告类型等字段。event表示的是告警的元数据的信
25、息,Sid和cid共同作为主码,告警事件发生的系统时间等字段。图2.1 数据库模型图下面介绍每一个协议所对应的相关的数据表:(1)ICMP协议信息表如表2-1所示为ICMP协议数据包首部信息表,记录ICMP数据信息,主要包括有传感器识别符、事件识别符、种类和标识符等ICMP协议数据包信息。表2-1 ICMP数据表字段名称类型长度备注Sidint20传感器识别符Cidint20事件识别符Icmp_typetinyint20类型Icmp_codetinyint20代码Icmp_csumsmallint20校验码Icmp_idsmallint10标识符Icmp_seqsmallint10序列号(1)
26、 UDP协议信息表如表2-2所示UDP协议数据包首部信息表,有目标端口等UDP协议信息。表2-2 UDP数据表字段名称类型长度备注Cidint20传感器识别符Sidint20事件识别符Udp_sportsmallint10源端口 长度不超过1024Udp_dportsmallint10目标端口 长度不超过1024Udp_lensmallint20数据报长度 长度不超过1024Udp_csumsmallint20校验码(3)TCP协议信息表如表2-3所示为TCP协议数据包首部信息表。主要有偏移量、序号、标志位等TCP协议信息。表2-3 TCP数据表字段名称类型长度备注SidINT20传感器识别符
27、CidINT20事件识别符tcp_sportSMALLINT10源端口tcp_dportSMALLINT10目的端口tcp_seqINT20序号tcp_ackINT20确认号tcp_offTINYINT10偏移量tcp_resTINYINT10首部长度 长度不超过1024tcp_flagsTINYINT10标志位tcp_winSMALLINT10接收窗口tcp_csumSMALLINT20校验码tcp_urpSMALLINT20紧急数据偏移(4)IP数据包信息表如表2-4所示IP数据包首部信息。记录了传感器识别符、源IP、目的IP、协议版本等数据包信息表。表2-4 IP数据表字段名称类型长度备
28、注SidINT20传感器识别符CidINT20事件识别符ip_srcINT10源IPip_dstINT10目的IPip_verTINYINT20协议版本ip_hlenTINYINT20头部长度 长度不超过1024ip_tosTINYINT10服务类型ip_lenSMALLINT20总长度 长度不超过1024ip_idSMALLINT20数据编号ip_flagsTINYINT10标志位ip_offSMALLINT20偏移量 长度不超过1024ip_ttlTINYINT10生存时间ip_protoTINYINT20协议类型ip_csumSMALLINT10校验码(5)告警的元数据的信息表如表所示2
29、-5告警的元数据的信息表。记录了主要有签名名称、发生时间等告警的元数据的信息。表2-5 event数据表字段名称类型长度备注SidINT20传感器识别符CidINT20事件识别符signatureVarchar10签名名称timestampVarchar10发生时间(6)规则形式的告警信息表如表2-6所示为规则形式的告警信息表。主要有编号、名称、类编号、权限等级等规则形式的告警信息。表2-6 signature数据表字段名称类型长度备注sig_idINT10编号sig_nameVARCHAR50名称sig_class_idINT10类编号sig_priorityINT10权限等级sig_rev
30、INT10终端编号sig_sidINT10告警种类的总数2.3 Snort的整体框架Snort的体系结构是由数据包获取模块、预处理模块、检测模块和报警模块4个插件构成的,体系的结构如图2.2所示:图2.2 体系结构图(1)捕获网络数据嗅探器就是指对网络数据进行获取。获取网络中的包需要两个程序,第一个程序是将主机的网卡改为混杂模式;第二个程序是根据部署主机的系统选择不同的抓包器,Windows用Winpcap,Linux用Lipacp。本课是基于Linux下的选用Lipacp。(2)预处理模块 获取完网络数据后,将数据放入到预处理模块中,通过已有的规则对其匹配,而不是直接放入到检测模块中,如果遇
31、到没有匹配成功的规则,则将其规则放入到规则库中。Snort的处理器是单独分离出来的,它需要不同的插件组合而成。用户可以根据自己的需求来开发不同的插件来完成。这样大大提高了系统的实用性,使得系统每一块都是一个独立的部分,方便去维护。(3)检测模块数据处理完后,将数据传给检测引擎,通过检测来判断数据是否存在攻击的行为,如果有就发出报警的信息,没有就将数据舍弃。所以检测引擎模块成为Snort系统的核心。它是带动整个系统的关键。检测引擎模块分为两步,第一步是先对数据的特征进行提取,第二步在规则库中匹配与其相对应的特征。(4)报警模块输出模块是根据用户的需求选择将警告信息存入到数据库MySQL或Orac
32、le中或者以日志的形式显示。日志可以以文本和TCPdump格式存放。为了方便用户去管理和观察这些日志,输出模块也做成了类似于插件的辅助工具。2. 31 工作流程 Snort的工作流程是从抓包开始到解析、输出等步骤。Snort的工作流程如图2.3。图2.3 Snort的工作流程Snort系统第一步是进行初始化操作,然后解析规则文件,从规则文件中形成一条规则链存入到规则库中,为后续进行规则匹配做准备后通过Lipacp库从网络中获取数据包,放入预处理器中,在预处理器中用解码包对数据分析。然将分析后的结果放入到探测器中,与规则库中的规则链,互相的比较。如何检查完后发现有异常的结果,那么久将其放入输出模
33、块中,以日志或者警告的形式告知用户,否则丢弃包。2. 32 运行模式 Snort的运行模式可以分为3种:嗅探运行模式、数据包记录运行模式、网络入侵检测运行模式。其中最基础的也是主要的是嗅探运行模式。它与数据包记录模式是相互关联的,实质上是相似的,但是输出的格式不同。网络入侵检测运行模式是最常规的,需要加入一定的插件功能,根据需求选择不同的插件。1嗅探器运行模式嗅探运行模式是指从网络中嗅探出数据包,然后将数据包进行分析,最后显示在主机上,如图2.4。图2.5 Snort网络入侵检测模式在Linux下以可以使用命令行启动该模式:snort v当嗅探运行模式启动成功时,会从网络中获取数据进行分析和统
34、计,统计的信息包括网络协议比如TCP、UDP、ICMP等数据流。当嗅探运行模式停止的时候,会将统计的信息在主机上显示。2数据包记录运行模式数据包记录运行模式是在嗅探模式的基础上对获取的数据不是简单的显示在屏幕上,而是将数据存储到主机的内存中。在Linux下,新建一个log目录,将Snort获取的数据信息以文本的格式保存7,可以根据用户的需求保存不同的格式。3网络入侵检测运行模式如图2.5,当Snort处于网络入侵检测运行模式下时,首先从网络中获取网络包的数据进行解析,解析后将发现的入侵的规则与规则库中有与之相对应的规则,那么就将数据包记录日志并产生警告,反之则将不匹配的数据包丢弃。在Linux
35、平台下运行Snort的网络入侵检测模式,在命令行下输入一下字符:snort -i eth0 -c /etc/snort/snort.conf -A fastsnort.conf是配置文件,其中eth0表示的是系统中对应的网口,Snort系统会对每一个数据包和规则集进行匹配,发现这样的数据包就采取相应的行动8。图2.5 Snort网络入侵检测模式2.4本章小结本章主要介绍的是系统的需求分析、数据库设计、组成结构和它工作的整体的流程。通过对系统的需求分析,来设计出所需要的相关的功能。根据对应的功能设计相应的数据库。然后是Snort系统每一步的架构,了解了其运行的模式。通过具体的规则来判断检测信息。
36、后续将通过此步骤来设计系统。3 SIDS的详细设计与实现Snort本身是一个非常优灵活的入侵检测系统,它可以根据用户的需求来对系统进行扩展,构成一个丰富和全面的入侵检测系统。但是扩充的同时,也增加了系统完成的复杂度。本文选择的是基于Linux下搭建来更好的显示Snort全面的功能。3.1 SIDS实现方案构建SIDS需要根据运行环境的不同,而选择不同的实现方式。Snort系统可以只有一个嗅探模式,只获取到以二进制显示的数据格式。也可以用文本编辑器gedit来查看。但是这样数据并没有被保存在下来,只能在启动Snort时,才能看到。Snort停止运行时,就看不到入侵数据的信息,但是这样体验是很不好
37、的。对于这样状态,可以选择带有其软件扩展的系统。例如可以选择一个数据库软件和分析台软件,将嗅探器获取的数据传送给数据库软件,然后再有数据库传给分析台。这样入侵数据不仅被保存下来,而且用户可以更加清晰的看到入侵检测的情况。这样大大减轻了数据的繁杂度,增加对数据处理的灵活性。根据用户的选择,网络入侵检测系统一般有如下几种组合方式:(1)如果仅仅是获取数据包,只要安装一个Snort单独的嗅探器来进行测试。(2)安装嗅探器和一个日志保存系统。(3)单个嗅探器和管理员系统。(4)安装一个数据库软件和分析控制台的嗅探器。为了让网络入侵检测系统的功能更加的全面,除了必要的硬件设施,软件方面就选择带有数据库和
38、分析台的第四个组合。在此系统中,有4台主机分别取名为A,B,C,D计算机。然后还一个主机为E的计算机,连接在计算机D的网络上,与D可以在网络上联通。计算机D不仅仅是一台主机,同时还是带有BASE、MySQL和Apache等软件的一个Snort嗅探器的服务器的Centos7的系统。最后一个主机为F的计算机是在外网上的。它可以对内网内的任何一台主机发动攻击。在系统拓扑图3.1中,为每一个设备都设置了别名,方便在接下来的设计和实现系统的步骤。图3.1 带有数据库和web分析台的嗅探器部署方式按照系统拓扑图,需要实现以下的功能第一SIDS需要能够检测对内网中被攻击的主机。第二是将被攻击的日志记录通过B
39、arnyard储存到数据库MySQL中,这样管理员可以清晰看到数据。可以安装phpMyAdmin,它是一款开源的的数据库管理工具,有助于对数据进行分析和研究。根据用户需要,选择不同启动模式,同时可以对数据进行编辑、删除等功能。更加的贴近用户。在本文中,运用了许多的第三方插件,这些插件让Snort系统更加的强大,用户使用起来更加的方便,让检测更加的高效。选择的插件和作用以下:(1)用Lipacp来获取网络数据包。(2)用Mysql数据库来存储告警信息,(3)用Apache作为网络页面分析台的服务器(4)用PHP作为连接Mysql和网络页面分析台的服务器之间的联通。(5)用BASE作为前端展示界面
40、。(6)用ADODB将储存数据库的方式统一。(7)Barnyard被BASE用来连接MySQL数据库。简单的说,第一步先通过Lipacp抓包器将获取的网络数据包送到MySQL数据库中,第二步通过Apache服务器作为传递数据给网络的接口,第三步入侵检测数据库分析台BASE可以用通过Apache访问MySQL数据库。第四步管理员通过BASE分析台显示详细的数据和对数据进行相关的操作。图3.2 系统工作流程3.2准备工作本课题是要设计一个全面的Snort入侵检测系统。第一步要认清目标对象。第二步根据目标对象,来选择所需要的需求功能,最后就是根据需求来选择对应的插件。3. 21 环境的准备Snort
41、可以在不同的系统中进行二次开发的入侵检测系统,比如像Linux、Windows等系统。本课题选择的是在Linux系统下,这样可以很好为系统添加必要的插件。如图3.1,在系统拓扑图中,部署一个Snort系统需要必备的软件和硬件的条件。选择主机D作为SIDS的计算机。主机D的系统是Linux 下的Centos7的计算机。同时硬件是一个网卡来连接到内网中。需要安装的软件有MySQL数据库、Apache服务器、Barnyard工具、BASE框架和其他所需要的插件。被检测的数据可以被管理员用计算机E分析。需要两台计算机作为测试机在内网中,选择B和C主机。计算机F是所在内网外的主机,用计算机F去入侵内网中
42、的主机,主要是测试Snort系统是否可以检测到外网主机对内网的主机的入侵。结果验证Snort可以检测到内网的入侵,从而证明系统可行性。2. 32 各软件的准备 为了减少系统成本,选择开源和免费的第三方插件。如图表3.3中在官方网站中可以进行下载,下载得到的源码都是开源,根据用户的需求,在此基础上进行二次的开发。因为系统的原因,要选择相对的版本,才能更好的去配置,不同的版本会导致和系统的不兼容行,容易导致适配出错。表3.3 各辅助软件的信息软件名称官方网站作用Apachehttp:/httpd.apache.org/WEB服务器PHPPHP脚本支持MySQL数据库支持Lipcaphttps:/w
43、ww.tcpdump.org/网络抓包工具Snort2.9http:/www.snort.orgLinux下的Snort安装包BASEhttp:/www.cert.org/kb/acid基于PHP的数据分析控制台ADODB为PHP提供数据库连接函数BarnyardSnort连接MySQL服务这些软件都是更新过的,本课题选择了比较稳定的版本去配置。有的版本跨度很大,所以差别也就越大,选择与Snort版本相贴近的插件更容易的实现。为了系统能够稳定的运行选择表3.4软件的版本进行SIDS的实现12。表3.4 选定的软件名称压缩包MySQLmysql-5.7.29-linux-glibc2.12-x8
44、6_64.tarLipcaplibpcap-1.0.0.tar.gzSnortsnort-2.9.7.0.tar.gzPHPphp-7.2.2.tar.gzApachehttpd-2.4.32.tar.gzBASEbase-1.4.5.tar.gzADODBadodb519.tar.gzBarnyardbarnyard2-1.9.tar.gzDapdaq-2.0.4.tar.gz3.3SIDS的实现在这个章节中,将具体的介绍SnortIDS构建的全过程,为了保证每一步的安装都是成功的,在每安装一步的基础上,对其进行功能的检测,如果成功,则继续安装,否则重新安装本次过程。这样保证了系统的可行性和
45、健壮性。第一步是建立一个Snort的嗅探器,这个嗅探器已经具备了入侵检测最基本的功能,在后面的章节中将通过构建需要的第三方插件来进一步的完善整个系统。3. 31 数据捕获功能实现本节,将建立一个具有嗅探功能的基本的Snort入侵检测系统,一开始先部署Snort、Lipacp抓包器和daq,两个安装包不像在Windows系统直接的安装,需要用命令行tar -zxvf 将其解压到/usr/local/src目录中,然后在此目录下输入命令行./configure和make & make install。其中./configure是来检测是是否有gcc,make是来对其进行编译,make install是Makefile中读取命令来安装的。当上述的操作完成后,一个简单的网络入侵检测系统就可以启动了,它具备了获取数据包和记录数据包的两个最基本的功能。但是这样并不能完全显示告警信息。需要安装规则库,先解snortrules-snapshot-2970.tar.gz到/usr/local/src/下,之后将解压好的Snort文件夹移动到 /etc/sno