摘 要
随着网络技术的发展,中小型企业已建设了属于自己的信息化业务平台与系统。中小型企业只有实现信息互通,资源共享,才能够在当今的竞争中生存下去,但信息的互通会面临一些安全问题,对此需要对其采取一些措施来进行防范。
对于过去的网络而言,它相对于封闭,因此具有良好的安全性,使用简单的安全性设备就能够防范黑客的非法入侵。现如今,由于恶意病毒的散布、敏感信息泄露、垃圾邮件非法轰炸等一些网络安全威胁,当下的网络已不像昔日的那么简单,网络的安全性已成为人们更加重视的问题,只要连接到网络上,就存在安全隐患。对于中小型企业来说,每年都会遭遇一些未知的攻击,而这些攻击都会造成一定的数据丢失窃取、系统故障、网络延时甚至还会导致经济损失。通过市场调研,发现绝大多数的中小型企业都在使用轻量级入侵检测系统来作为防火墙的补充,解决公司的安全问题。因此,IDS在中小型企业中有着举足重轻的作用,它在不影响网络性能的前提下,能及时发现黑客的攻击,并以视图的界面呈现给用户,方便了网络系统管理员的管理和用户的使用,提高发现安全隐患的效率,因此中小型企业使用入侵检测系统是非常必要的。
本论文首先描述了IDS的概念,针对中小型企业网使用开源网络入侵检测工具Snort并进行规则库的设计。在Centos6.8下搭建Snort入侵检测系统包括Snort、libpcap、barnyard2、MySQL、Apache、Adodb、base。通过三种不同类型的方式对此系统进行验证,能实现正常的检测功能。此系统是一个开源的平台,其成本低,易于移植,配置简单,易于扩充,因此是中小型企业的最佳选择之一。
关键词:Snort;入侵检测;网络安全;IDS
Abstract
With the development of network technology, small and medium-sized enterprises have built their own information business platform and system. Small and medium-sized enterprises can survive today’s competition only by sharing information and sharing resources. However, the communication of information will face some security problems, and some measures need to be taken to prevent them.
For past networks, it is relatively closed and therefore has good security. Using simple security devices can prevent hackers from illegally invading. Nowadays, due to the spread of malicious viruses, the disclosure of sensitive information, the illegal bombing of spam and other cyber security threats, the current network is not as simple as it used to be, and the security of the network has become a more important issue. As long as it is connected to the network, there is a security risk.For small and medium-sized companies, there are some unknown attacks every year, and these attacks will cause certain data theft, system failure, network latency and even economic losses. Through market research, it is found that most small and medium-sized enterprises are using lightweight intrusion detection system as a supplement to the firewall to solve the security problems of the company. Therefore, IDS has a weighty role in small and medium-sized enterprises. It can find hacker attacks in time without affecting network performance, and presents them to users with a view interface, which facilitates the management of network system administrators and users. Use, Therefore, it is necessary for small and medium-sized enterprises to use intrusion detection system to improve the efficiency of security detection.
The paper first describes the concept of IDS, and uses open source network intrusion detection tool Snort for small and medium-sized enterprise networks and designs the rule library. Construction of Snort intrusion detection systems under CentOS 6.8 includes Snort, libpcap, barnyard2, MySQL, Apache, Adodb, and base. The system can be verified by three different types of methods, and the normal detection function can be realized. This system is an open source platform, its low cost, easy to transplant, simple configuration, easy to expand, so it is one of the best choices for small and medium-sized enterprises.
Key Words:Snort; Intrusion Detection; Network Security;IDS
目 录
摘 要 I
Abstract II
1绪论 1
1.1 课题研究的背景及意义 1
1.2 Snort与IDS的发展和研究现状 2
2 IDS与Snort概述 3
2.1 IDS 3
2.2 传统网络安全防护的缺陷 3
2.2.1 单一防护产品的弱点 3
2.2.2 防火墙的弱点 4
2.3 Snort 4
2.3.1 Snort的特点 4
2.3.2 Snort的整体结构 5
2.3.3 Snort在网络层次模型中的位置 7
2.3.4 Snort的工作模式 7
2.4 Snort规则集 8
2.4.1 规则的结构 9
2.4.2 规则头部 9
2.4.3 规则选项 10
2.4.4 规则编写 10
3 SIDS的详细设计与实现 12
3.1 准备工作 12
3.1.1 环境的准备 12
3.1.2 各安装包的准备 12
3.2 IDS的实现 13
3.2.1 安装IDS配套软件 13
3.2.2 构建Snort探测器 15
3.2.3 配置Snort输出模块接口 16
3.2.4 安装Base的web视图界面 19
4系统测试与检测结果分析 21
4.1 ICMP攻击 21
4.1.1 针对带宽的DOS攻击 21
4.1.2 针对连接的DOS攻击 21
4.1.3 ICMP攻击规则库的配置 21
4.1.4 ICMP攻击测试 22
4.2 端口扫描 23
4.2.1端口扫描主要方法 23
4.2.2端口扫描预处理器 24
4.2.3端口扫描测试 24
4.3 XSS攻击 26
4.3.1 正则表达式编写 26
4.3.2 针对XSS攻击的Snort规则编写 26
4.3.3 简单留言版的制作 27
4.3.4 对留言板进行XSS攻击 27
5总结与展望 30
5.1 总结 30
5.2 未来研究展望 30
参 考 文 献 31
致 谢 32
1绪论
随着因特网的飞速发展与扩张,计算机的应用范围已到各大领域,越来越多的企业都在为信息安全而担忧。提到信息安全,人们首先想到的便是防火墙。防火墙是网络系统连接外网必备的设备之一,但也有很多的弊端,它只能防范防火墙内部设置的那些威胁,对于新的威胁和内部威胁,对它来说都是无能为力。这就需要一款更安全、更有效的防御技术,IDS为此出现在人们的视野中。
1.1 课题研究的背景及意义
在当今的中小型企业中,最重要的是安全问题。现如今已经有一些安全措施,例如防火墙、VPN、安全邮件网关系统等。IDS是现如今较好的安防措施,利用入侵检测技术,对收集到的数据包进行分析,抉择是否有入侵行为。利用日志文件生成数据表,查看近期流经的数据是否正常,并做出响应。此系统是一个开源的系统,因此成本廉价,使用范围广,是中小型企业最佳的抉择之一。
入侵检测技术目前已经有好几种。常见的入侵检测技术有:免疫技术(Immunological techniques)、IP碎片重组(IP Defragmentation)、数据挖掘技术(Data mining technology)、神经网络技术(Neural Network Technology)、模式匹配技术(Pattern Matching)、数据融合技术(Data fusion technology)、协议分析(Protocol Analysis)、日志归并(Merger)[1]等等。这些技术都已运用于大型的IDS。
安全市场有很多的IDS产品,例如安氏中国的NIDS 系统、NFA公司的NIDS系统、思科的IDSM-2入侵检测模块等。这些商业的NIDS大多数都是硬件产品,配置比较复杂,价格昂贵,而基于Snort的IDS具有很大的优势,配置简单,功能强大,成本廉价,这使得SIDS使用更加广泛。
研究SIDS是非常有价值的,在网络安全基本体系架构中,入侵检测系统扮演着非凡的角色,是判断通过数据和行为模式最有效的系统。一般威胁来自于内部与外部,而来自外部的攻击一般情况由防火墙负责阻拦,但内部的攻击却无能为力。一般中小型企业内部人员是不会恶意破坏公司系统的,但是如果黑客攻击内部员工的电脑,内部员工电脑中毒后,黑客就可以把员工的电脑当作“肉鸡”来攻击公司的网络,这样的案例也有很多。内部网络的防范并不是为了防范内部员工破坏公司整体架构网络,还是为了防范黑客的恶意攻击,以免增加公司的损失。Snort的出现,对中小型企业非常的有益。其配置简单、可跨平台、易于扩充、成本廉价。
1.2 Snort与IDS的发展和研究现状
在当今这个IDS时代,使用者需要根据自己的需求选择合适的IDS,同时IDS的研发人员也需要一个很好的平台去测试系统,进而找到IDS的缺失来进一步的改进。就目前的现状来看Snort是一款很好的产品,它相对于同类产品更成熟、廉价、方便。对于中小型企业是一款首选的网络安全产品。
入侵检测系统主要有两种方式,一种是协议分析,另一种是行为分析。在目前的技术中,比较强的是协议分析。它主要是通过对抓取到的数据进行分析进而来抉择入侵的行为方式,采用这种技术相比于简单的模式匹配或者是规则库的匹配效率都要高很多。对于未来入侵检测系统的发展,可能将会朝着比较智能,简约以及更加安全的方向发展。
2 IDS与Snort概述
IDS主要是对非法数据包进行检测分析。假如我们把防火墙比喻为校园的保安大叔,那么入侵检测系统就相当于整个学校内部的监控系统。入侵检测设备通过收集要流经数据中心的数据流,对内外部攻击进行实时监视,并进行检测分析,抉择其是否有入侵行为,并保留攻击者的迹象。因此IDS作为防火墙最有效补充,一般将其放置在旁路位置,以免影响整个数据中心的正常运转,还能够对网络进行良好的实时监控。Snort可以对流经数据中心的数据进行详细的分析,并决定如何处理这些数据包,处理数据包有几种选择的方式:忽略、记录和报警。
2.1 IDS
中小型企业网中入侵检测系统是防火墙最充分,最全面的补充,它通过视图界面将入侵的行为展现出来,方便系统管理员的管理,提高防范的效率。入侵检测系统主要从流经数据中心的节点中收集数据流,对抓取到的数据与Snort规则库进行比对,抉择其是否有入侵行为。
入侵检测就像生活中的防盗窃报警系统一样,能够对进入报警系统范围的人进行识别,判断其是否是合法人员,如若不是,将会发出报警给予用户反馈。IDS主要分为两种类型:一种类型是基于主机的,另外一种是基于网络的。HIDS是基于主机的,它一般都安装在需要监控的主机上面,主要与操作系统内核有关,它负责监控系统中所有的事务。NIDS是基于网络的,它主要存在于网络中,主要以网络数据包作为数据分析源,实时监视通过网络的数据流,将其与规则模式进行匹配来判断是否有攻击行为。
2.2 传统网络安全防护的缺陷
对于网络安全大家首先想到的可能就是防火墙、防病毒软件、VPN接入等一些网络产品,而对于中小型企业网的安全建设大多数都是基于产品设计的。不同的产品都有其独特的优势,现如今复杂的网络环境都难以应对,这些产品已不能应对黑客们的入侵。尽管安全产品日趋整合,但是大多数技术尚不成熟各有弊端,并不能提供详细完善的解决方案。
2.2.1 单一防护产品的弱点
现如今的杀毒软件,大多数都整合了一套基本的安全设备以及系统,例如:防火墙、VPN、数据涉密技术等安全技术。由于杀毒软件在杀毒查毒并没有一定的标准,并且不同的杀毒软件都有一定的不足和缺陷。单一防护产品的缺点如下:
(1) 防御方法和防御策略都具有有限性。
(2) 动态多变的网络环境。
(3) 来自外部和内部的威胁。
2.2.2 防火墙的弱点
(1) 不能阻止内部人员的攻击,以及黑客通过攻击内部人员电脑进而攻击整个公司网络。防火墙禁止系统用户通过网络传输机密文件,但是如果用户使用U盘将数据拷贝带出,信息仍会丢失。如果黑客避开防火墙成功进入系统内网,防火墙将没有任何还手之力,对入侵者做任何操作。
(2) 防火墙能够对通过它的所有传输数据进行判断,如果是加密信息传输,它将会做出阻止动作。
(3) 防火墙不能防范病毒,也不能消除病毒。
(4) 防火墙不能防范未知的威胁,只能对防火墙系统中设定的威胁进行防护,灵活性不强。
(5) 防火墙自身可能会受到威胁。
2.3 Snort
Snort经过不断的扩展,变成了一个适用于不同操作系统,能进行数据包记录,并能够实现实时流量分析等功能的强大的入侵系统,遵循GPL的要求。可以在官网上下载需要安装的安装包,并对其进行安装配置操作。对于Snort检测整个系统中的网络时,就必须要求本机具有网卡,这样Snort能够对从数据中心节点抓取到的数据包进行检测分析,抉择其是否有入侵行为。
Snort可以扩展添加模块,自己需要什么模块可以自己编写将其添加在里面,从而扩充Snort的基本功能,因此它是一个容易扩充,自由灵活的模块化体系结构。其中这些模块包括:包解码器、预处理器、检测引擎、日志和告警系统、输出模块[2]等。
相比于传统的网络防护产品,Snort在中小型企业中非常受欢迎,因为其成本低,还能够给公司带来收益,因此它代替了许多收费昂贵的产品。
2.3.1 Snort的特点
Snort是一个功能强大的系统,它能够对流经数据中心的所有数据包进行实时监控并对其做出分析,通过与Snort规则库进行比对和对数据包协议进行检测分析,判断其是否有入侵行为,并对其进行实时报警与记录,并对维护人员给予提示和及时反馈。
Snort是一个性能比较高的入侵检测系统,因此它适用于不想用高价购买入侵检测设备的中小型企业。Snort主要有如下特点:
(1) 采用误用检测模型,将捕获到的数据包与规则比较,抉择其有无攻击的行为动作。
(2) Snort是一个高性能、可视化、便捷的入侵检测系统。
(3) 可跨平台,支持多种类型的操作系统。
(4) 对数据中心进行实时流量分析,完善的报警机制,能够迅速检测出所受攻击,发出预警并给予管理员及时的反馈。
(5) 能够进行协议分析,其中支持的协议有:ICMP、UDP和TCP[3]。
(6) 能够检测出各种各样的攻击方式,例如:端口扫描、跨站脚本攻击、ICMP攻击等等。
(7) 日志格式可以支持二进制和ASCLL,将其存放在数据库中。当前支持的数据库包括:MySql、Oracle等。
(8) 支持多种插件的扩充,其中包括日志输出、数据包的检测、端口扫描等各种类型的插件。
(9) Snort规则库语言简单,便于用户自己编写规则库。
(10) 符合GPL的基本要求,用户可以自由修改源代码。
2.3.2 Snort的整体结构
Snort有很多有用的功能:数据包嗅探、数据包记录、入侵检测等功能[4]。在Snort中需要配置一些内部组件,能够有效的优化数据包的误报、漏报的情况以及对于抓取数据包和记录日志的性能都会有很大的影响。因此需要更加深入的了解Snort的工作原理,并对网络完成实时监控。
Snort在安装好之后,其目录下有一些子文件夹,它们的作用如下:
(1) bin:相关运行文件在此文件夹。
(2) etc:配置文件在此文件夹。
(3) log:日志文件在此文件夹。
(4) rules:规则文件在此文件夹。
对于复杂的网络环境,Snort的日志文件以二进制的形式存放固然是非常重要的,此外Snort的配置文件能够完成许多强大的功能。下面是Snort的基本组成模块:
(1) Libpcap
Snort本身不带有抓包工具,因此需要安装一个抓包工具来完成数据包的抓取。本次实验中使用的抓包工具是libpcap。Snort通过使用libpcap工具能够独立地从物理链路层上完成对数据包的抓取。libpcap将抓取到的数据一般情况都是会发送给包解码器,并对数据包进行解码操作。但是libpcap捕获到的数据包一次只能处理一个数据包,因此这成了它的一大缺陷。
(2) 包解码器
当Snort接受到数据包后,首先需要对数据包中的包协议进行解码操作。当抓取到数据包通过各种协议解码器的时候,会将所有的包数据一个一个放置在一个数据结构之中。当所有的数据包都存入到这个数据结构中的时候,它将会把这个数据快速传递给Snort的检测引擎和预处理来进行对数据包进行检测分析。
(3) 预处理器
Snort的预处理器主要是用来对包处理器已经处理过的数据包,进行组件或者插件,目的就是为了能够让接下来的检测引擎能够检测到这些数据包。其参数一般都在snort.conf配置文件中进行设置,也可以对其进行自定义的设置,方便人们的使用。
(4) 检测引擎
该模块是入侵检测的核心模块,主要是对抓取到的数据包与相应的规则比较,对其进行检测分析,抉择其是否有入侵的行为动作。
(5) 输出插件
输出插件主要就是收集检测引擎检测完之后发送过来的数据,将其存放在barnyard里面。输出插件的主要功能就是将报警数据存放在另外一个存储资源里面。
Snort的所有部件是一个整体,它们需要共同协作,才能够完成对流经数据中心的所有数据包的检测。其部件的关系如图2.1所示。
图2.1 Snort的主要部件
2.3.3 Snort在网络层次模型中的位置
Snort在网络协议层次模型中每一层都对应着不同的组件,不同的组件在自己的协议层上都有自己独特的任务执行。TCP/IP是现如今主流的协议,因此Snort解码的主要任务都放在TCP/IP上。
Snort在TCP/IP的各个层次如图2.2所示。
图2.2 TCP/IP模型和Snort
2.3.4 Snort的工作模式
Snort有三种工作模式:嗅探器模式(Sniffer mode) 、数据包记录器模式(packet logger mode) 、网络入侵检测模式(network intrusion detection system mode) [5]。其中,嗅探器从网络中抓取数据包,并将所有的数据信息都会显示在屏幕上,当用户想要终止此操作的时候,需要按下Ctrl+C键将其终止。数据包记录器模式就是将所有的数据包记录都存储在指定的文件中。网络入侵检测模式是对流经数据中心的所有数据包进行检测分析,抉择其有无入侵的行为动作。
(1) 嗅探器模式
数据包嗅探器的工作原理就像是在一条电话线路对传输的信息进行窃听。共同点都是为了抓取流经的所有数据信息。不同点是数据包嗅探器针对的对象是网络中的数据,而电话线路的偷听的对象是语音。数据包中包含着不同类型的协议,因此数据包嗅探器还需要对抓取到的这些数据包进行相应的分析,判断是哪种类型的协议,最后将结果显示在屏幕上,如图2.3所示。其中这些协议主要有TCP、UDP、IP、ICMP等一些协议。
图2.3 Snort嗅探器模式
以下命令可以启动该模式:
Snort -v:主要是在屏幕上显示一些协议包的数据包头信息。
Snort -vd:主要是为了在屏幕上显示抓取到的数据包在TCP/IP最顶层中比较详细的传输信息。
Snort -dev:显示更详细的数据信息。同时该命令能够以二进制方式和ASCLL方式显示出来。
(2) 数据包记录器
运行此模式时,使用命令Snort -de -l /var/log/snort将其放置在指定的目录下面。只对本地网络进行分析,使用命令:Snort -de –l /var/log -h 192.168.122.1/24。此命令记录192.168.122.0/24网段的所有数据包,通过IP名进行区分,并将其存放在log文件中。
(3) 网络入侵检测模式
在IDS模式下,对其产生的日志文件存储到数据库,并将其显示出来。如果Snort长期工作,那么日志越多,需要的磁盘容量就越大,将日志显示在终端屏幕上,会消耗许多的内存资源。使用以下命令,加载snort.conf配置文件,将此网段的报警信息记录到/var/snort/log目录下:
Snort -dev -l /var/snort/log –h 192.168.122.0/24 –c snort.conf
加载配置文件后,Snort将会读取配置文件以及其所引用的所有规则库。其中-c参数是指:指定它需要配置的文件。-l参数是指:它产生的日志文件需要存放的路径位置。-h参数是指:所要检测的网段为192.168.122.0。
2.4 Snort规则集
Snort规则主要分为两部分:规则头和规则选项[6]。Snort的规则集都是由一定的规则条例组成的,就像病毒一样,它们的大多数入侵行为都是有一定的入侵特征。其中Snort是用简洁的语法结构实现的,并且大多数的规则都是占用一行,用户可以清楚的知道该命令是为哪种类型的入侵方式。
2.4.1 规则的结构
Snort的规则由两部分构成,如图2.4所示。
图2.4 Snort规则结构
规则头包括规则的动作、规则的协议以及规则的源地址、目标地址和子网掩码[7]。规则选项包括报警内容、要检测的包、报警抓取的具体内容。规则库中的规则与入侵行为是一对多的关系,有时候我们只需要一条规则就能够检测同一类型的所有入侵行为,因此规则库的建立与优化非常的重要。
2.4.2 规则头部
规则头部主要是左括号前面的部分,规则头部的基本结构,如图2.5所示。
图2.5 Snort规则头部结构
(1) 规则动作
动作是Snort规则结构中的第一部分,其中规则动作有:告警、日志记录、动态动作、通过、激活进而检验。除以上的动作之外,我们还可以自己定义动作,但需要在Snort的配置文件snort.conf中进行声明。
(2) 协议
协议是Snort规则结构中的第二部分,主要是为了判断抓取到的数据包是那种类型的协议。
(3) 地址
地址是Snort规则结构中的第三与第六部分,主要分为源地址与目标地址。刚开始进行测试的时候,一般情况将源和目的地址都设置为关键字any,其含义是接受并检测所有流经的数据包。
(4) 端口号
端口号是Snort规则结构中的第四与七部分,端口号主要是为了指定特定的某个端口号,来监听该端口号的所有数据包。端口号只对TCP和UDP有意义,对IP和ICMP没有任何的作用。
(5) 方向
方向是Snort规则结构中的第五部分,方向主要是确定源地址与目的地址。下面是方向段的基本规定:
->表示尖括号左一侧为源地址,尖括号右一侧为目的地址。
<-表示尖括号左一侧为目的地址,尖括号右一侧为源地址。
< >表示规则适用于两个方向上,可以同时监视客户端和服务器。
2.4.3 规则选项
规则选项是括号中的部分,其作用主要是对抓取到的数据包进行进一步分析。括号中可以包含有多个关键字,这些不同关键字之间的关系都是逻辑与,各个选项间使用“;”隔开。只有当所有规则选项都为真的时候,规则动作才会执行,否则将不会执行此条规则。其中主要的关键字有:classtype、rpe、logto、itype、ttl、iPoption、tos、noease、flags、content、tag、msg等44个关键字。
2.4.4 规则编写
(1) 检测ICMP攻击规则
alert icmp any any -> any any (msg:”Pingwith TTL=64”;ttl:64;sid:1000001;)
(2) 检测端口扫描规则
alert tcp E X T E R N A L N E T a n y − > EXTERNAL_NET any -> EXTERNALNETany−>HOME_NET any (msg:“SCAN myscan”; flow:stateless;ack:0;flags:S;ttl:>220;reference:arachnids,439;classtype:attempted-recon;sid:613; rev:6;)
(3) 检测nmap类扫描规则
alert tcp any any -> any any (msg:“SYN FIN Scan”; flags: S;sid:9000000;)
alert tcp any any -> any any (msg:“FIN Scan”; flags: F;sid:9000001;)
alert tcp any any -> any any (msg:“NULL Scan”; flags: 0;sid:9000002;)
alert tcp any any -> any any (msg:“XMAS Scan”; flags: FPU;sid:9000003;)
alert tcp any any -> any any (msg:“Full XMAS Scan”; flags: SRAFPU;sid:9000004;)
alert tcp any any -> any any (msg:“URG Scan”; flags: U;sid:9000005;)
alert tcp any any -> any any (msg:“URG FIN Scan”; flags: FU;sid:9000006;)
alert tcp any any -> any any (msg:“PUSH FIN Scan”; flags: FP;sid:9000007;)
alert tcp any any -> any any (msg:“URG PUSH Scan”; flags: PU;sid:9000008;)
(4) 检测SQL注入规则
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:“SQL”;flow:to_server,established;uricontent:".pl";pcre:"/(%27)|(’)|(--)|(%23)|(#)/i"; classtype:Web-application-attack; sid:9099; rev:5;)
(5) 检测XSS跨站脚本规则
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:“SQL”;flow:to_server,established;uricontent:".pl";pcre:"/(%27)|(’)|(--)|(%23)|(#)/i"; classtype:Web-application-attack; sid:9099; rev:5;)
3 SIDS的详细设计与实现
Snort的功能很强大,能够和多个软件协同工作,促使其功能更加强大,但是这也为Snort的搭建造成了一定的难度。本章从几个常用的搭建方式中选择了一种能够体现Snort强大功能的方案,并进行详细的说明。
3.1 准备工作
本课题在安装前需知道要监控的内容以及检测范围,通常情况下是对流经数据中心的所有数据包进行检测。对于从外部流经到内部的所有数据都应该处在Snort的监视范围之内。因此Snort非常适用于中小型企业之中,但是对于大型企业就是一项难以施展的艰巨任务。
为了提高Snort检测的效率以及整个网络的安全性,Snort在数据中心的布置位置也非常的重要。一般情况所有的安全设备都放在数据中心的旁路位置,即使安全设备自身出现问题,也能保障整个网络的正常运行。如果需要对某一个服务器或者加密设备进行单独的监控也是可以的,只需在保护设备的旁路加一台主机,在其中装载入侵检测系统,来单独监控机密数据,这样的防范更加的有效,其成本低,防范效率高。
3.1.1 环境的准备
本文选择在Linux上进行安装,因为在Linux上安装软件与系统更安全,此外系统的移植性更强。选择的环境是在Centos6.8下搭建Snort+Barnyard2+Base。
3.1.2 各安装包的准备
表3.1 各软件的基本信息
软件名称 官方网站 作用
Apache http://httpd.apache.org/ WEB服务器
PHP http://www.php.net/ 实现PHP脚本的支持
MySql https://www.mysql.com/ 数据库的支持
ADODB http://adodb.sourceforge.net PHP提供数据库连接函数
Snort http://www.snort.org/ Snort安装包
Libpcap http://www.tcpdump.org/ 网络抓包工具
这些软件会不断的更新,不同版本之间也有差异,选择合适的版本固然重要,最新的版本并不一定是最好的。经过查看版本信息,选择了各软件的合适版本。
表3.2 安装包版本信息
软件名 软件安装包版本
Mysql mysql-5.7.16.tar.gz
Libpcap libpcap-1.0.0.tar.gz
Snort snort-2.9.7.0.tar.gz
PHP php-5.5.tar.gz
Apache apache-2.2.11.tar.gz
Barnyard barnyard2-1.9.tar.gz
ADODB adodb519.tar.gz
Base base-1.4.5.tar.gz
DAQ daq-2.0.4.tar.gz
Libdnet libdnet-1.12.tgz
3.2 IDS的实现
在安装过程中,都是安装一个组件后,对其进行测试,这样才能保证出错的时候,知道自己错在哪里,方便修改。首先安装的是web视图界面,接下来安装snort的所有核心部件。接下来将详细的介绍安装流程以及基本配置。
3.2.1 安装IDS配套软件
(1) 安装LMAP组件
安装mysql,php等相关组件,使用命令:
yum install -y mysql-server php php-mysql php-mbstring php-mcrypt mysql-devel php-gd
(2) 安装PHP插件
使用命令:yum install -y mcrypt libmcrypt libmcrypt-devel安装php相关组件。下载好之后,在文件/var/www/html下添加一个新文件index.php进行测试,内容如下:。
(3) 安装Pear插件
#yum install -y php-pear
#pear upgrade pear
#pear channel-update pear.php.net
(4) MySQL的安装与配置
为了使Snort与MySQL联动,需要将Snort数据记录到MySQL数据库,通过导入数据表来记录Snort数据。
安装好MySQL后,接下来进行配置工作。进入数据库之后,创建名为snort的数据库,使用命令: create database snort。创建名为snort,密码为123456并赋予数据库权限:grant create,select,update,insert,delete on snort.* to snort@localhost identified by ‘123456’。创建数据库表:mysql –u snort -p –D snort 在完成对数据库的相关操作后,需要编辑配置文件,在此文件中,以下几行可以使日志信息记录到MySQL数据库中:output database: log, mysql, user=snort password=123456 dbname=snort host=localhost。如果用户没有口令,也可以用以下形式:output database:log,MySQL,user=rr dbname=snort host=localhost。其中数据库表结构如图3.1所示。
图3.1 数据库snort中数据表
(5) 安装各类库
从前面介绍的网址下载相应的安装包,然后通过filezilla软件与虚拟机连接,将所有已下载的安装包上传至虚拟机/root目录下,在root目录下解压安装所有的包。
安装libdnet
tar -zxvf libdnet-1.12.tar.gz
libdnet提供简单的、可移植的接口函数,主要就是为了完成对数据包的发送过程。进入libdnet-1.12文件夹,进行安装编译使用命令./configure && make &&make install。
安装daq
tar -zxvf daq-2.0.4.tar.gz
进入daq-2.0.4文件夹,进行安装编译使用命令./configure && make &&make install。在安装的时候要先安装libdnet才能安装daq,因为一些安装包有依赖关系,顺序错了可能会导致安装失败。
安装libpcap
tar -zxvf libpcap-1.0.0.tar.gz
libpcap是一款很好的数据包侦听工具,主要实现的是数据报的捕捉功能。进入libpcap-1.0.0文件夹,进行安装编译使用命令./configure && make &&make install。
安装adodb
tar -zxvf adodb519.tar.gz -C /var/www/html
将adodb519文件移动到/var/www/html下改名为adodb,使用命令mv /var/www/html/adodb519 /var/www/html/adodb
3.2.2 构建Snort探测器
(1) 安装snort
在root目录下解压安装包snort-2.9.7.0.tar.gz,使用命令tar zxvf snort-2.9.7.0.tar.gz;进入snort-2.9.7.0文件夹,使用命令cd snort-2.9.7.0;对其进行安装配置,检查当前的环境是否满足依赖关系,使用命令./configure。对snort进行编译安装,使用一下命令make &&make install。
(2) 配置snort
首先创建需要的文件和目录,在etc目录下建立文件snort,使用命令mkdir /etc/snort。在/var/log目录下建立文件snort,使用命令mkdir /var/log/snort。在/usr/local/lib/目录下建立文件snort_dynamicrules,使用命令mkdir /usr/local/lib/snort_dynamicrules。在/etc/snort下建立文件rules,使用命令mkdir /etc/snort/rules。在/etc/snort/rules下建立文件white_list.rules与 black_list.rule,使用命令touch /etc/snort/rules/white_list.rules与命令touch /etc/snort/rules/black_list.rules。复制root/snort下的部分文件到etc /snort目录下,使用以下命令cp /root /snort-2.9.7.0 /etc /gen-msg.mapthreshold.conf classification.config reference.config Unicode.map snort.conf /etc/snort/。
编辑配置文件vim etc/snort/snort.conf,修改snort.conf文件中的路径变量,设置目录为/etc/snort,如下所示:
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH/etc/snort/preproc_rules
var WHITE_LIST_PATH /etc/snort/rules
var BLACK_LIST_PATH /etc/snort/rules
设置日志目录config logdir: /var/log/snort
配置输出插件:output unified2:filename snort.log, limit 128
(3) 测试snort
使用命令snort -T -i eth0 -c /etc/snort/snort.conf。使用此命令之前首先要用ifconfig命令查看自己的网卡名是什么,需要依据自己的具体情况进行更改,如果是eth0就使用上面的命令。其中-T是指启动模式为测试模式,-i是指网络接口名,-c是指需要指定的配置文件的具体位置。Snort的测试结果,如图3.2所示。
图3.2 snort测试成功图
3.2.3 配置Snort输出模块接口
Barnyard运行在Linux下,嗅探器抓取到所有的数据包,将其传送给检测引擎,之后将其传送给输出插件,收集完数据之后,以二进制的方式保存在数据库中。Barnyard将输出阶段单独隔离,从而提高了Snort的性能和可靠性。它本身也是一个复杂的软件,有3种基本的操作模式:单步模式、连续模式、连续检查点模式[8]。
单步模式下,barnyard一次只检测一个日志文件,若检测出入侵行为,便会发出报警立即退出,进行下一个文件的检测。以连续模式运行时,barnyard对产生的日志文件进行不间断地检测。
连续检查点模式与连续模式相似,也是Snort产生数据对其进行处理操作。不同点,连续检查点模式主要是使用检查点文件对整个数据栈中的元素都检测完之后,还可以继续追踪这个栈中的数据元素。检查点文件又称为waldo文件,用来记录文件中近期处理的报警。如果不使用waldo文件,barnyard必须完整地载入一个日志文件,就像把已经存在的报警信息再一次传送到MySQL数据库中。
(1) 安装barnyard2
在root目录下解压安装包barnyard2-1.9.tar.gz,使用命令tar zxvf barnyard2-1.9.tar.gz。进入barnyard2-1.9目录中,使用命令cd /root/barnyard2-1.9。对即将安装的barnyard2进行配置,检查当前的环境是否满足此软件的依赖,使用以下命令:./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql/。对barnyard2进行编译安装,使用命令make && make install。
(2) 配置barnyard
barnyard安装完之后进行配置,barnyard就像Snort一样也是通过设置.conf文件来进行控制。在配置barnyard之前有必要先对原文件进行备份。首先创建需要的文件和目录,在/var/log下建立文件barnyard2文件,使用命令mkdir /var/log/barnyard2。在/var/log/snort下建立文件barnyard2.waldo,使用命令touch /var/log/snort/barnyard2.waldo。复制/root/barnyard2-1.9/etc下的barnyard2.conf文件到/etc/snort,使用命令cp /root/barnyard2-1.9/etc/barnyard2.conf /etc/snort。其中barnyard配置文件包括三部分:配置声明、数据处理器和输出插件。
配置声明:
修改配置文件vim /etc/snort/barnyard2.conf,修改barnyard2.conf中的路径,主机名,网卡名以及waldo_file文件路径,修改如下:
config logdir:/var/log/barnyard2
config hostname:localhost
config interface:eth0
config waldo_file:/var/log/snort/barnyard.waldo
数据处理器:
输出插件DP是解释工具,可以将Snort缓冲池中的数据信息转换为二进制形式存放在Barnyard中。大多数情况下,无需更改barnyard.conf文件中的默认配置。其中默
认配置包括一下三个输出插件:
dp_alert处理器
它能够读取出Snort unified输出插件产生的报警数据。当Snort发生报警的时候,dp_alert处理器会将必要的数据输出到合适的日志文件中。dp_alert处理器将与barnyard的输出插件alert_fast同时工作,输出插件用于指定报警的输入类型。该类处理器没有输入参数,工作在默认的模式之下。
dp_log处理器
此类数据处理器与dp_alert相似。它能够读取出Snort输出插件所产生的日志类型的数据。当Snort判断出此数据包被记录的时候,spo_unified插件将会把这些数据都写到指定的日志文件中,而此时的dp_log处理器将会读取这些日志中的数据。dp_log处理器与barnyard的输出插件log_dump同时工作,其中输出插件主要用于指定报警的输入类型,该处理器没有输入参数,工作在默认的模式之下。
dp_stream_stat处理器
它能够读取Stream4插件所产生的二进制数据,其他方面与前面两个处理器类似。该处理器与Stream4的相关插件同时工作。该处理器没有输入参数,工作在默认的模式之下。
输出插件:
Snort将输出数据与数据库连接的文件放置在配置文件barnyard2.conf下。对于不同的输出方式,也分别对应了不同的数据库连接。在barnyard2.conf配置文件中添加代码:
output database:log, mysql, user=snort password=123456 dbname=snort host=localhost。
输出接口中设置连接的数据库为:MySQL,用户名为:snort,数据库密码为:123456,数据库名为:snort,主机为:本地主机。该代码需要和建立数据库后,建立的数据库与用户名要保持一致,从而使得snort抓取到的数据能够存放在数据库中,保障snort与数据库的正常连接,并能存储数据。
完成以上操作已经可以实现入侵检测模式,并能将数据存储到MySQL中,如果能通过视图界面将抓取到的数据展现出来,对于客户来说也非常的有益,并能清晰的为客户展现入侵的状况以及哪些用户进行了入侵,做了哪些行为动作。
(3) 测试barnyard2
使用以下的命令:barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /var/log/snort/barnyard2.waldo。其中-c是指定barnyard2的配置文件的位置是/etc/snort/barnyard2,-d是指定日志文件的目录为/var/log/snort,-f是指定日志文件,-w是指定waldo文件。Barnyard2的测试结果,如图3.3所示。
图3.3 barnyard2测试成功图
3.2.4 安装Base的web视图界面
(1) 安装apache
使用命令yum install -y http下载安装apache,对下载安装的apache进行测试,在虚拟机中的浏览器中输入http://localhst,如果出现Apache2 Test Page说明页面,说明安装成功,如图3.4所示。
图3.4 Apache测试页面
(2) 安装PHP
使用命令yum install -y php下载安装PHP,对下载安装的PHP进行测试。首先在/var/www/html目录下创建index.php文件,其内容为。在浏览器地址栏输入http:localhost/index.php,如果出现PHP说明页面,说明安装成功,如图3.5所示。
图3.5 PHP测试页面
(3) 安装base
使用命令tar -zxvf base-1.4.5.tar.gz -C /var/www/html将base-1.4.5文件移动到/var/www/html下改名为base,使用命令mv /var/www/html/base-1.4.5 /var/www/html/base。首先启动MySQL,使用命令service mysqld start。启动apache,使用命令service httpd start。关闭防火墙,使用命令service iptables stop。
在浏览器中输入命令http://192.168.122.149/base/setup/index.php,在此界面中配置base。其中需要配置base的路径,设置使用语言,配置数据库以及数据库密码。创建成功之后,出现BASE界面说明配置成功,如图3.6所示。
图3.6 Base配置页面
4系统测试与检测结果分析
4.1 ICMP攻击
一般情况下我们都是用ping命令来检测一个网络是否畅通,但是如果无间断地对某一个主机进行ping操作,将会给整个网络系统带来负载压力,称为ICMP入侵。ICMP攻击的工作原理:黑客在某一端连续向某一台主机发出大量的数据包请求,这台计算机的CPU占用率持续上升,进而使得整台机器处于瘫痪状态。ICMP的攻击主要分为两大类,一是ICMP攻击导致拒绝服务;另一种是基于重定向的路由欺骗技术[9]。本课题中主要使用的是拒绝服务攻击,其主要分为针对带宽的DOS攻击和针对连接的DOS攻击。
4.1.1 针对带宽的DOS攻击
针对带宽的DOS攻击,主要就是利用网络中无关紧要的数据包来不断地消耗网络中的带宽,占用正常数据包的传输隧道,导致数据包传输延时或者处于等待阻塞状态。通常情况下,人们对内部主机使用ping命令来检测网络是否为通,这是由于ICMP数据包优先级等级较高。
这种攻击仅限于网络带宽的攻击,使用范围比较广,单独的攻击者就可以进行此类攻击。
4.1.2 针对连接的DOS攻击
针对连接的DOS攻击,可以将正常运行的网络环境停用。针对网络连接的DOS攻击会影响整个网络中的所有联网设备,主要原因是在发起攻击时使用的是合法的ICMP报文协议。如果黑客攻击者们检测到某个端口是开放的,只对这个端口进行ping操作,这将会使得某一个端口一直处于忙碌阻塞状态,进而使得整个网络受到破环,也会使CPU的时钟周期出现错误。
4.1.3 ICMP攻击规则库的配置
规则alert icmp any any -> H O M E N E T a n y ( m s g : " P I N G T E S T " ; s i d : 1000003 ; r e v : 1 ; ) , 其 中 规 则 的 动 作 是 a l e r t ; 规 则 协 议 是 I C M P 类 型 的 数 据 包 ; 源 地 址 和 端 口 都 将 其 设 置 为 关 键 字 “ a n y ” , 表 示 接 受 任 意 的 数 据 包 ; 目 的 地 址 设 置 为 HOME_NET any (msg:"PING TEST" ; sid:1000003; rev:1;),其中规则的动作是alert;规则协议是ICMP类型的数据包;源地址和端口都将其设置为关键字“any”,表示接受任意的数据包;目的地址设置为 HOMENETany(msg:"PINGTEST";sid:1000003;rev:1;),其中规则的动作是alert;规则协议是ICMP类型的数据包;源地址和端口都将其设置为关键字“any”,表示接受任意的数据包;目的地址设置为HOME_NET,表示接受服务器端向客户端发送来的数据包;sid表示snort规则的id编号;msg表示在控制台显示屏上显示的信息是"PING TEST",如果有这个提示则表示捕捉到ICMP数据包;rev表示规则版本号为1。
若规则为:alert icmp any any <> any any (msg:“PING TEST” ; sid:1000003; rev:1;),其表示snort可以捕获服务器端向客户端发送符合ICMP报文的所有数据包,也可以捕获客户端向服务器端发送符合ICMP报文协议的所有数据包。
如果Snort规则为:alert icmp 192.168.122.0 any <- 192.168.43.0 any (msg:“PING TEST” ; sid:1000003; rev:1;),其表示只接受由192.168.43.0网段发送到192.168.122.0网段的所以符合ICMP报文协议的数据包。
4.1.4 ICMP攻击测试
首先在Linux中利用编写好的脚本idsctl启动snort,启动完成之后执行命令snort -dev来监听所有抓取到的数据包,通过主机对虚拟机进行不断的ping操作,libpcap将会抓取数据包显示在屏幕上,并将其存储在MySQL数据库中。在另一台IP地址为192.168.122.147的虚拟机上对此虚拟机进行ping操作,使用命令ping 192.168.122.153 –t 10,对其产生10个ICMP数据包。抓取到的数据包信息,如图4.1所示。
图4.1 snort抓取数据包信息
接下来,查看入侵数据的信息。如图4.2所示,在这里查看到的信息主要包括入侵的ID、入侵特征、时间起止时间、源地址与目的地址以及第四层协议。对于上面ping过来的10个数据包,管理员在此信息栏中可以清晰地看到入侵的源地址为192.168.122.147,目的地址为192.168.122.153,具体的入侵时间以及入侵的类型。
图4.2 ICMP入侵数据
对于以上入侵数据的查看和分析中,可以看出,依据规则捕获的数据很清晰。结果表明对于ICMP攻击,Snort能够正常工作。
4.2 端口扫描
端口扫描就是查看需要扫描的网络中有哪些开放的端口。端口扫描常用的工具是portscan,portscan预处理器通过检测每个源地址在一段时间内的探测次数来发现端口扫描攻击,还可以用检测NMAP的“隐私扫描”包。任何入侵者首先会查看此网络中开通了那些服务,一旦入侵者找到了自己攻击范围内的信息,就会试图对其发起猛烈地攻击,其中所有的端口扫描都是针对TCP和UDP端口。
4.2.1端口扫描主要方法
TCP端口连接扫描。这种方式企图对某一个端口进行TCP连接,如果连接能够成功建立,则表示此端口是开放的。
SYN扫描。首先入侵者会发送一个带有SYN标记的TCP包到某一个端口,如果在此过程中能够接受到SYN和ACK标记的响应,那么说明此端口是打开的[10]。如果只收到带有RST标记的包,则只能说明此端口并没有打开。
NULL端口扫描、FIN端口扫描和XMAS端口扫描,这三种扫描方式的工作原理大致差不多。当黑客攻击者们发送一个TCP包后,若接受到了一个带有RST标记的包,则表示此端口一定是关闭的,如果发送完TCP包之后,一直未收到任何包,则说明在此网络中可能有端口开放。
4.2.2端口扫描预处理器
端口扫描预处理器的作用是用来监听正常端口和一些隐私端口的行为活动这种预处理器可以将端口扫描行为记录到指定的位置或者一些日志文件中。在本系统中,需要在snort.conf配置文件中对端口扫描的预处理器做一些配置操作,端口扫描预处理器的一般格式为:preprocessor sfportscan:proto {all} memcap {10000000} sense_level {high}。
该预处理器中有很多的参数,其中proto{tcp udp icmp ip all }:该参数表示用户希望检测到的活动行为中所使用到的协议。scan_type{portscan portsweep decoy_portscan distributed_portscan all }:该参数为扫描类型选项,表示能够检测到用户需求的类型。memcap:和前面的预处理器一样,该参数为预处理器需要配置的内存空间大小。logfile{ filename }:该参数指定记录的日志文件的路径或者文件名。watch_ip{Snort IP List }:是指需要监听的主机IP列表有哪些。ignore_scanners{Snort IP List}:是指忽略扫描主机IP列表。ignore_scanned{Snort IP List}:是指需要忽略的已经被扫描过的主机IP列表。其中参数ignore_scanner:通常用于调节对一些NAT主机活跃IP目标发出的报警,参数ignore_scanned:通常用于调节对诸多Syslog服务器等活跃IP目标所发出的报警。
4.2.3端口扫描测试
本系统使用的端口扫描攻击工具是御剑2014,首先设置需要扫描的所有端口,输入扫描的端口IP,对其进行扫描,扫描结果如图4.3所示。
图4.3 端口扫描工具
接下来刷新基本安全分析引擎主页,能够看到新增加了66条警告到警告缓存,如图4.4所示。
图4.4 Base界面提示警告
最后查看入侵数据的具体信息,查看其扫描了本虚拟机192.168.122.153的哪些端口,如图4.5所示。
图4.5 端口扫描入侵数据
对于以上数据信息所示,Snort能够正常抓取到端口扫描的数据,并能将所有详细的数据呈现出来。结果表明对于端口扫描,Snort入侵检测系统能够正常工作。
4.3 XSS攻击
XSS攻击全称为跨站脚本攻击,允许入侵者将恶意代码注入到web页面中。黑客在对某个网站进行攻击前,要检测这个网站是否能被入侵,黑客们一般情况会做一个HTML进行测试,这就会涉及一些HTML标签。同样也可以使用一些简单的脚本来实现,如,点击留言按钮,将会弹出留言成功对话框。但是仍会弹出另外一个对话框,其内容为xss,出现此种现象说明XSS攻击成功,如图4.6所示。
图4.6 XSS攻击成功
查看数据库sun中的留言信息表(comment表),就能够看到植入的那条恶意代码,如图4.7所示。
图4.7 XSS成功植入数据库
在操作这些之前要先打开Snort嗅探器,查看XSS攻击过程中所抓取的数据包信息,以及在Base的web界面查看XSS攻击的记录,如图4.8所示。
图4.8 XSS入侵数据
以上信息可以显示出192.168.122.147对192.168.122.159中的8080端口进行了攻击,并在数据库中还有XSS攻击的植入代码。结果表明对XSS攻击,Snort能够正常工作。
5总结与展望
5.1 总结
Snort是一个开源的软件,在安全领域深受人们的欢迎,并且在入侵检测系统中不断的添加模块,使得入侵检测系统更加的完善,这也使得SIDS成为了IDS领域中比较热门的系统。在安装SIDS的时候,需要Snort和其他软件共同配合完成工作,配置的时候软件的安装顺序很重要,有的软件之间有依赖关系,需要查阅资料,认真分析。要有做一步测一步的思想,这样才能保证前面安装的都是正确,并能够正常使用。 在本文的研究与测试中实现了一个完整的SIDS,并做了如下工作:
(1) 首先介绍了Snort的研究背景与意义,以及有关IDS的发展与现状。
(2) 主要对IDS与传统网络安全设备进行对比,以及Snort在IDS中不可替代的作用,并详细介绍了Snort,还对如何编写规则库进行了描述与撰写。
(3) 介绍了IDS详细设计以及实现过程。在详细设计中描述了需要用到的安装包,配置模块,还为系统添加了额外的功能,这将使得管理员更加方便管理,也使得攻击的发现更加便捷。在实现过程中,遵循做一步测一步的原则,对完成的每一步都要进行测试,确保每一步都准确无误,最后确保整个系统正常运行。
(4) 主要通过三种普遍的攻击方式来检测本系统是否能够正常运行,通过三种实验验证了本系统检测的有效性,能够实现入侵检测系统的基本功能,并对检测的数据进行分析。
5.2 未来研究展望
SIDS自身有很多的优点,但是它的功能模块还需要不断地完善,研究其发展前景,我们需要不断地改善Snort中以下几个方面:协议识别、协议异常检测、攻击结果判定以及拒绝服务检测。对于协议识别而言,它是Snort检测过程中的核心技术。协议识别主要是通过对抓取到的数据进行动态的分析报文中的协议特征,判断它的协议之后,将其发送给相对应的协议分析引擎来处理。对于那些运用了智能隧道技术的软件能够准确的捕获数据,并能对其进行分析。虽然Snort也具备了此功能,但是在某些方面仍需要完善,比如速度方面。对于协议异常检测最重要的就是检测未知的攻击,它作为成熟的技术,协议异常检测的准确率接近100%,误报率几乎为0。对于攻击结果判定而言,它将会作为新一代IDS和Snort的重要标志。对于拒绝服务检测而言,目前如何能够准确的检测出某一个系统正在受到何种攻击,并能够避免拒绝服务的威胁,变成了越来越困难,复杂多变的工作。因此,提高拒绝服务检测能够更好的防范拒绝服务攻击。
参 考 文 献
[1] 景蕊,刘利军.基于协议分析的网络入侵检测技术[M].计算机工程与应用,2003.(36):128-133.
[2] 唐正军.网络入侵检测系统的设计与实现[M].北京:电子工业出版社,2012:1-24.
[3] 刘文涛.基于TCP/IP协议分析的网络入侵检测系统研究与设计[J]. 武汉:武汉理工大学,2013,(5):35-44.
[4] 杨萃,刘振华.入侵检测系统的比较[M].计算机工程,2014,30(6):137-138.
[5] 蒋建春,冯登国等.网络入侵检测原理与技术[M].北京:国防工业出版社,2011:20-40.
[6] MILENKOSKI A,VIEIRA M,KOUNEV S, et al. Evaluating Computer Intrusion Detection Systems: A Survey of Com-mon Practices[J].ACM Computing Surveys,2015,48(1):1-41.
[7] Cannnady.Next Generation Intrusion Detection: Autonomous Reinforcement Learning of Network Attacks[M]. Proceedings 23rd National Information Systems Security Conf,2015: 91-120.
[8] 王建忠.基于snort的分布式入侵检测系统的研究与设计[D].兰州理工大学硕士学位论文,2007.5.
[9] 侯向宁.基于校园网环境的snort入侵检测系统应用研究[D].西北大学硕士学位论文,2008.5.
[10] 邱浩.带入侵检测的Limix个人防火墙的研究与实现[D].贵阳:贵州大学,2006.
[11] 李波.入侵检测系统的分析与研究[J].重庆教育学院学报,2005, (12).
[12] 王雪松,梁昔明.改进蚁群算法优化支持向量机的网络入侵检测[J].计算技术与自动化,2015(2):95-99.
[13] Duan Q,Mao M,Pan D,et al.An improved artificial fish swarm algorithm optimized by particle swarm optimization algorithm with extended memory[J].Kybernetes,2016,45(2):210-222.
[14] Zhou Q, Luo J.The Study on Evaluation Method of Urban Network Security in the Big Data Era[J].Intelligent Automation & Soft Computing,2017(5):1-6.
[15] Liyanage M,Abro A 13,Ylianttila M,et al.Opportunities and Challenges of Software-Defined Mobile Networks in Network Security[J].IEEE Security & Privacy,2016,14(4):34-44.