基于校园网的网络入侵检测系统的研究与实现
2010-09-17李亮超
李亮超
0 引言
为了迅速、有效地发现各类入侵行为,保证系统和网络资源的安全,很多组织和研究机构正致力于提出各种安全防护策略和方案,包括VPN、防火墙、防病毒、访问控制等[1]。这些传统的网络安全技术,对保护网络的安全起到非常重要的作用,然而他们也存在不少缺陷。例如,防火墙技术虽然为网络服务提供了较好的身份认证和访问控制,但是它不能防止来自防火墙内部的攻击、不能防备最新出现的威胁、不能防止绕过防火墙的攻击;入侵者可以利用脆弱性程序或者系统漏洞绕过防火墙的访问控制来进行非法攻击。传统的身份认证技术,很难抵抗脆弱性口令、字典攻击、特洛伊木马、网络窥探器以及电磁辐射等攻击手段。虚拟专用网技术只能保证传输过程中的安全,并不能防御诸如拒绝服务攻击、缓冲区溢出等常见的攻击。另外,这些技术都属于静态安全技术的范畴,静态安全技术的缺点是只能静态和消极地防御入侵,而不能主动检测和跟踪入侵。
为了能更好的保护网络系统的安全,James P.Anderson提出了入侵检测系统(Intrusion Detection System,IDS)的概念。入侵检测技术是一种动态安全技术,它主动的收集包括系统审计数据、网络数据包以及用户活动状态等多方面的信息;然后进行安全性分析,从而及时发现各种入侵并产生响应[2]。
因此,在目前的计算机安全状态下,基于防火墙、加密技术等的安全防护固然重要;但是要根本改善系统的安全现状,必须要发展入侵检测技术。它已经成为计算机安全策略中的核心技术之一[3]。IDS作为一种主动的安全防护技术,提供了对内部攻击、外部攻击和误操作的实时保护。从网络安全立体纵深的多层次防御角度出发,入侵检测理应受到高度重视。
1 相关研究
1980年,James P.Anderson[4]第一次系统阐述了入侵检测的概念,他将入侵行为分为外部渗透、内部渗透和不法行为三种,还提出利用审计数据监视入侵活动的思想,从此揭开了入侵检测的研究序幕。1987年,Dorothy Denning[5]首次提出了实时异常检测模型。1988年,Teresa Lunt等改进了Denning的入侵检测模型,开发出实时入侵检测专家系统IDES[6](Intrusion Detection Expert System),并提出了与平台无关的检测思路,后来,他们又在此基础上开发出了下一代入侵检测专家系统 NIDES[7](Next-Generation Intrusion Detection Expert System),在异常检测特征分析方面迈出了重要一步。
1990年加州大学戴维斯分校的L.T.Heberlein等开发出了网络安全监视器NSM[8](Network Security Monitor),该系统第一次直接将网络流作为数据来源,以前的 IDS都将主机记录文件作为审计来源,因而可以在不将审计数据转换成统一格式的情况下监控异种主机,从此以后,IDS形成两大阵营:基于网络的IDS和基于主机的IDS。
自90年代以来,IDS在智能化和分布式两个方向取得了很大的进展。1994年,普渡大学的Eugene H.Spafford等推出了适用于大规模网络的分布式入侵检测系统AAFIDE[9](Autonomous Agents for Intrusion Detection)。1996年,加州大学戴维斯分校开发出 GrIDS[10](Graph-based Intrusion Detection System),将入侵检测扩展到大型网络中;同年,Gregory B.White等又提出了CSM,解决了分布式环境下检测代理之间的协同合作,从而均衡各实体的工作负荷;1997年,SRI/CSL继推出IDES和NIDES之后,又着手研发第三代入侵检测系统EMERALD[11](Event Monitoring Enabling Response to Anomalous Live Disturbances),在此期间,数据挖掘、人工免疫、信息检索、容错等技术也渗透或融合到了IDS中,从而将IDS的发展推向了一个新的高度。
2 入侵检测系统研究
2.1 IDS的定义及作用
入侵检测是指在特定的网络环境中发现和识别未经授权的或者恶意的攻击和入侵,并对此作出反应的过程。而入侵检测系统 IDS是一套运用入侵检测技术对计算机或者网络资源进行实时检测的系统工具。IDS一方面检测未经授权的对象对系统的入侵,另一方面还监视授权对象对系统资源的非法操作[12]。
IDS的作用有以下几种:
(1)监视、分析用户和系统的运行状况,查找非法用户和合法用户的越权操作;
(2)检测系统配置的正确性和安全漏洞,并提示管理员修补漏洞;
(3)对用户非正常活动的统计分析,发现攻击行为的规律;
(4)检查系统程序和数据的一致性和正确性;
(5)能够实时地对检测到的攻击行为进行响应;
(6)对操作系统的审计跟踪管理,并识别用户违反安全策略的行为;
2.2 IDS的分类及特点
入侵检测系统根据检测的对象可分为基于主机的入侵检测系统HIDS(Host Intrusion Detection System)和基于网络的入侵检测系统 NIDS(Network Intrusion Detection System)。
2.2.1 主机入侵检测系统
基于主机的入侵检测是根据主机系统的系统日志和审计记录来进行检测分析,通常在要受保护的主机上有专门的检测代理,通过对系统日志和审计记录不间断的监视和分析来发现攻击。
它的主要目的是在事件发生后提供足够的分析来阻止进一步的攻击。
其优点是:
(1)能够监视特定的系统行为,基于主机的IDS能够监视所有的用户登录和退出甚至用户所做的所有操作,审计系统在日志里记录的策略改变,监视关键系统文件和可执行文件的改变等。
(2)HIDS能够确定攻击是否成功,由于使用含有已发生事件信息,它们可以比NIDS更加准确地判断攻击是否成功。
(3)有些攻击在网络的数据流中很难发现,或者根本没有通过网络在本地进行。这时NIDS将无能为力,只能借助于HIDS。
其缺点是:
(1)HIDS安装在我们需要保护的设备上,这会降低应用系统的效率。它依赖于服务器固有的日志与监视能力,如果服务器没有配置日志功能,则必须重新配置,这将会给运行中的业务系统带来不可预见的性能影响。
(2)全面部署HIDS代价较大。
(3)HIDS除了监测自身的主机以外,根本不监测网络上的情况。
2.2.2 网络入侵检测系统
基于网络的入侵检测系统是使用原始网络数据包作为数据源。
其优点有:
(1)有较低的成本;
(2)能够检测到 HIDS无法检测的入侵,例如 NIDS能够检查数据包的头部而发现非法的攻击,NIDS能够检测那些来自网络的攻击,它能够检测到超过授权的非法访问;
(3)入侵对象不容易销毁证据,被截取的数据不仅包括入侵的方法,还包括可以定位入侵对象的信息;
(4)能够做到实时检测和响应,一旦发现入侵行为就立即中止攻击;
(5)NIDS不依赖于被保护主机的操作系统。
其缺点是:
(1)只检查它直接连接网段的通信,不能检测在不同网段的网络包。在使用交换以太网的环境中就会出现监测范围的局限,而安装多台网络入侵检测系统的传感器会使部署整个系统的成本大大增加;
(2)网络入侵检测系统为了性能目标通常采用特征检测的方法,它可以检测出普通的一些攻击,而很难发现一些复杂的需要大量计算与分析时间的攻击检测;
(3)网络入侵检测系统可能会将大量的数据传回分析系统中。在一些系统中监听特定的数 据包会产生大量的分析数据流量。一些系统在实现时采用一定方法来减少回传的数据量,对入侵判断的决策由传感器实现。而中央控制台成为状态显示与通信中心,不再作为入侵行为分析器。这样的系统中的传感器协同工作能力较弱;
(4)网络入侵检测系统处理加密的会话过程较困难,目前通过加密通道的攻击尚不多,但随着IPv6的普及,这个问题会越来越突出;
2.3 基于校园网的NIDS体系结构
我们基于Linux环境实现了网络入侵检测系统,该系统主要有以下几个模块[13],包括网络数据包捕获模块、网络协议分析模块、存储模块、规则解析模块、入侵事件检测模块、响应模块和界面管理模块。
2.3.1 系统的体系结构
系统的体系结构如下图所示,它从逻辑上分为数据采集、数据分析和结果显示三个部分。此系统由七个模块组成。
图1 网络入侵检测系统的体系结构图
1.网络数据包捕获模块
此模块的主要功能就是从以太网中捕获数据包。在Linux操作系统中,我们可以使用系统的底层调用来实现,也可以使用相应的高层调用来实现。由于此模块的性能要求很高,因为网络中的数据包很多,如果捕获不及时,就会有漏包的情况出现,这是我们要避免的。为了提高数据包的捕获性能,我们使用一个在Linux下非常流行的捕获机制,即BPF机制。此数据包捕获机制的性能非常优越,我们就不需要再用底层的调用来编写代码,BPF封装了底层的调用,并且作了优化处理。
2.网络协议分析模块
在网络协议分析模块中,必须对捕获到的数据包进行详细的分析。由于网络协议非常多,所以就必须分析很多的协议。在本系统中,我们分析了以下几种协议,包括:以太网协议、ARP/RARP、IP、ICMP、TCP、UDP等。网络协议分析模块对捕获到的数据包进行协议分析,检测出每个数据包的类型和特征。这是此系统的核心部分。
3.存储模块
此模块主要是存储网络信息。由于网络数据包很多,而且是稍纵即逝的,所以必须及时把它们存储起来。存储起来有很多用处,最大的好处可以供事后分析,在此基础上可以分析出网络的流量情况。在此模块中,我们使用了MySQL数据库进行存储。
4.规则解析模块
此模块的功能就是把定义好的入侵规则库从文件中读取出来,然后进行解析,读入内存,也就是读入相应的变量之中。入侵规则库中有很多种入侵事件,为了描述入侵事件就需要一个入侵事件描述语言。入侵事件描述语言是入侵检测系统重要的一个部分,很多大型的入侵检测系统都有自己的入侵事件描述语言。在本系统中,我们设计了入侵事件描述语言,用此语言上可以描述一般的入侵行为。
5.入侵事件检测模块
此模块的主要思路就是根据入侵规则库进行协议分析,看是否有入侵行为发生。在这里就可以转化为规则库的匹配问题。如果协议分析的结果和入侵规则库匹配成功,就说明有入侵行为发生。它是一个入侵检测系统的知识库,它的丰富与否,就决定了入侵检测系统的功能。只有入侵规则库越丰富,那么系统检测到的入侵行为就会越多。
6.响应模块
响应有主动响应和被动响应之分。主动响应是指系统自动地或者以用户设置的方式来阻断攻击过程或者以其它方式影响攻击过程。被动响应是指为用户提供信息,由用户决定接下来应该采取什么措施。在本系统中,采用被动响应的方式,通过不同的响应技术来实现响应模块。
7.界面管理模块
界面是为了控制操作的方便而设计的。在界面的设计中,我们使用了多线程技术,这样用一个线程来捕获数据包,用一个线程来分析数据包,再用一个线程来显示分析后的数据包信息。不仅在界面设计的时候用到多线程,在本系统中到处都用到了多线程技术,例如,数据包捕获和数据包分析就分别是一个线程,另外入侵检测的功能的实现也是多线程的。多线程技术的使用大大增加了系统的性能。
2.3.2 系统的数据流图及功能流图
系统的项层数据流图下图所示,网络数据包捕获模块按一定的规则从网络上获取与安全事件相关的数据包,然后传递给网络协议分析模块对数据包进行协议分析,提取网络数据包重要信息。规则解析模块将入侵规则(攻击特征)读入内存。入侵事件检测模块将根据网络数据包重要信息和规则进行分析,把检测结果传递给响应模块。响应模块将分析结果传递给用户。
图2 网络入侵检测系统的顶层数据流图
系统的功能流图如下图所示:
图3 网络入侵检测系统的功能流图
功能流图有以下6种功能:
(1)通过网卡捕获网络数据包。
(2)通过网络数据包分析网络协议,得到网络数据包重要信息。
(3)通过入侵规则库解析规则,得到内存中特定形式存储的规则。
(4)通过规则和网络数据包重要信息的匹配,检测入侵事件,得到检测结果。
(5)通过检测入侵事件功能的输出结果,产生响应,发声或者闪烁或者日志。
(6)网络数据包稍纵即逝,通过数据库存储网络数据包。
3 系统实现与测试
3.1 实验环境
本实验在茂名学院校园网上对分布式入侵检测进行了大量的实验,该校园网共有约1.5万用户,实验所在的网络环境共有4个链路出口,分别为中国电信400M,中国网通200Mbps,中国联通100Mbps,教育网100Mbps,核心交换设备为AVAYA P882和Cisco Catalyst 6509。本文的测试环境由十一台主机组成,四台作为攻击端主机,安装攻击工具软件,另外七台主机作为检测主机,OS为Redhat Enterprise Linux Advanced Server 4。
3.2 测试方案
我们把网络入侵事件划分为以下 4大类:拒绝服务攻击,预攻击探测,可疑活动,非授权访问尝试,每一大类又分为若干子类,具体如表1,然后分别进行测试。
表1 测试入侵事件类型
测试时我们对以下指标进行了记录,主要包括:
1.漏报率:系统在检测时出现漏报的概率。漏报:系统未能识别出入侵行为,将其作为正常行为放过。
2.误报率:系统在检测时出现误报的概率。误报包括将正常行为判断为攻击而产生报警;将一种攻击错误的判断为另一种攻击而报警。
3.事件库:也叫特征库。系统能够匹配检测的攻击种类数量的大小,能够横向体现系统检测能力。
4.延迟时间:从攻击发生到系统检测到攻击的时间。延迟时间的长短直接关系到攻击破坏的程度。
5.资源占用:系统工作时对资源的消耗情况。
6.自身安全性:又称健壮性。系统对直接以自身为攻击目标的攻击的抵抗能力。
3.3 实验结果与分析
其他测试条件不变的情况下,负载低于 50%时,漏报率都低于4%,平均延时少于400ms;当系统负载增大到70%时,漏报率增至21%,延时陡增至900ms以上;当系统负载陡增至 90%时,漏报率就已经大于 70%,延时超过1000ms。
图4 系统负载与平均漏报率比较图
图5 系统负载与平均延时比较图
实验结果显示,负载加大,包长不变的情况下,嗅探网卡抓包数也在加大,同时系统需要处理的包数也在增大;从实验中可以看到,系统在负载达到 70%后性能降低厉害,可能是系统资源被占用过多引起;查看系统的CPU占用情况和内存使用情况,发现负载达到 60%后,内存占用率急剧升高,在负载超过90%时,系统处于缓慢响应状态。
4 结论及下一步工作
本文主要研究了网络入侵检测系统的体系结构及其功能流程,并基于校园网开发实现了一套网络入侵检测系统,通过实验应用证明,该系统有较好的性能和安全性。
下一步研究工作主要是:
更有效的集成各种入侵检测数据源,包括从不同的系统和不同的检测引擎上采集的数据,提高报警准确率;采用一定的方法和策略来增强异种系统的互操作性和数据一致性;研制可靠的测试和评估标准;提供对更高级的攻击行为如分布式攻击、拒绝服务攻击等的检测手段。
[1]Suehring S. Linux 防火墙[M].何泾沙,译.3 版.北京:机械工业出版社,2006:39- 62.
[2]董晓梅,于戈.分布式入侵检测与响应协作模型研究[J].计算机工程,2006,32(6):151-153.
[3]王军,熊伟,肖德宝.基于 SNMP的入侵检测系统的设计与实现[J].计算机工程与应用,2003,39(17):177-180.
[4]J P Anderson.Computer Security Threat Monitoring and Surveillance[R].J.P.Anderson Co.1980.112-128.
[5]Dorothy E,Denning. An Intrusion Detection Model.IEEE Symposium on Security and Privacy.1986.118-131.
[6]Tener W,TDisvery.An Expert System In The Commercial Data Security En vironment[R].North-Holland:Proc Fourth JFIP TC11 International Conference On Computer Security.1986.321-328.
[7]Next-Generation Intrusion Detection Expert System(NIDES)[DB/OL].http://www.sdl.sri.com/projects/aides/index.html.
[8]Heberlein L T.A Network Security Monitor[C]//Proceeding of the IEEE Symposium on Research in Security and Privacy.Oakland,CA:IEEE,1990.346-351.
[9]Autonomous Agents for Intrusion Detection[DB/OL].http://www.cerias.purdue.edu/about/porjects/aafid/.
[10]Graph-based Intrusion Detection System. http://seclab.cs.ucdavis.edu/arpa/grids/welcome.html.
[11]Porrsa P A,Neumann P G.EMERALD:Event Monitoring Enabling Response to Anomalous Live Disturbances.[C]//Proc,of the 20th National Information System Security Conf.1997.353- 365.
[12]李昀,李伟华.分布式入侵检测系统的研究与实现[J].计算机工程与应用,2003,39(4):1-3,8.
[13]连一峰,戴英侠,胡艳,等.分布式入侵检测模型研究[J].计算机研究与发展,2003,40(8):23-24.