linux下入侵检测系统的分析与实现
入侵检测系统分析1.1什么是入侵检测系统
入侵指的是试图破坏计算机资源的完整性、机密性或可用性的任何企图,而入侵检测顾名思义就是入侵的发现,它从许多计算机网络或系统中通过。
关键点收集信息,并分析这些信息,以发现是否有违反安全策略的行为和在网络或系统的攻击的迹象,软件和硬件相结合的入侵检测是入侵检测系统(IDS)。与其他安全产品,入侵检测系统需要更多的智能。一个合格的入侵检测系统可以大大简化管理员的工作,保证网络的安全运行。
1.2入侵检测系统的分类
根据检测所使用的数据源的不同,IDS可以分为基于主机的IDS和基于网络的入侵检测系统。
IDS使用各种审计日志信息的主机(如主机日志,路由器日志、防火墙日志、等)作为检测的数据源。一般来说,基于主机的入侵检测系统可以监控系统下的操作系统事件和安全记录,以及系统的记录。当文件中有一个变化,入侵检测系统的比较新的记录条目攻击标签是否匹配,如果匹配是匹配的,系统将报警管理员采取措施。
基于网络的入侵检测系统采用网络原始数据包数据包作为数据源,基于网络的入侵检测系统通常使用一个网络适配器在监测和分析所有的通信服务,通过网络实时混合模式运行。一旦检测到攻击时,入侵检测系统的响应模块响应的攻击,如通知管理员,断开连接,终端用户,等等。
入侵检测的1.3种检测方法
入侵检测技术通过研究入侵行为的过程和特征,对入侵事件和入侵过程进行实时响应。从检测方法上看,入侵检测可以分为两类:误用入侵检测和异常入侵检测。
在入侵检测的误用,我们假定所有入侵行为和手段可以表现为一种模式或特征,那么所有已知的入侵方法可以通过匹配的方法发现。误用入侵检测的关键是如何表达入侵模式和区分正常行为的入侵。优点是误报少,限制是它只能发现已知的攻击,并不能帮助未知攻击。
在异常入侵检测中,假设所有入侵行为都不同于正常行为。如果我们建立系统正常行为的轨迹,我们可以把所有的系统,不同于正常的轨迹为一个可疑的尝试的状态。例如,异常时间的网络异常流量是通过流量统计分析可疑。异常入侵检测的局限性,并不是所有的入侵异常,和系统的轨迹是很难计算和更新。
比较两种检测方法,发现异常检测是很难被量化,这种检测方法具有固有的不确定性。与此不同,误用检测将遵循一个明确的模式,它可以通过匹配审计记录检测到的信息,但它可以检测已知的入侵。所以这两种检测机制不完善,对于具体的检测方法,有许多入侵检测的方法,但是任何方法都有其局限性,它不能解决所有的问题。因此,入侵检测方法的研究仍然是当前入侵检测研究的一个关键点。
两个linux的实现
在研究入侵检测技术的基础上,设计并实现了一个基于Linux系统的网络入侵检测系统。
2.1系结构
系统的结构如图1所示,数据采集模块负责收集来自网络的原始网络数据流。一定的预处理后的数据发送给数据分析模块,并通过数据分析模块进行分析,以确定是否有违反安全策略的行为。分析结果及时送往报警模块、报警信息的报警模块,用户可以生成的控制台。用控制台通过用户界面进行交互,通过控制台,另一方面,我们可以配置每个模块,另一方面,我们可以接收报警信息。
图1系统结构
2.2系统的功能描述
该系统实现了入侵检测的主要功能,包括数据采集、数据预处理、入侵分析和报警,具体完成以下功能:
捕获符合指定条件的网络数据包。
提供IP分组数据的ip重组。
重组TCP流以提供TCP流数据。
重组应用层数据流并提供HTTP数据流。
基于规则的入侵检测方法的实现。
分析结果已提交控制台。
接受控制台的配置和管理。
由于系统功能的实现主要体现在数据采集模块和数据分析模块中,下面将对两个模块进行详细说明。
2.3数据采集模块
数据采集是入侵检测的基础上,和入侵检测的效率依赖于收集的信息很大程度上的可靠性和正确性。在基于网络的入侵检测系统,数据采集模块需要监测的一个受保护的网络段或多台主机的网络流量,并获得网络的状态和行为信息预处理后的系统,用户和应用程序的活动。采集的数据需要在网络中的一些关键点进行。
具体而言,数据采集模块需要监视网络数据包进行分析,IP,TCP / UDP协议,并分析了应用层协议的数据流,将采集到的数据进行预处理,才可以提交数据分析模块。由于不同的数据源的不同的分析方法,预处理也很不同然而,在一般情况下,通过分析模块分析的数据是基于网络协议层的数据信息,或直接采用这些数据的一些部分。因此,在系统设计中,数据采集模块,除了收集数据,对这些信息进行协议分析,协议分析指IP BAS的处理在网络上收集的ED数据是基于一定的协议来获取数据的,在本系统中,主要是对TCP/IP协议族的分析。
利用以太网广播特性实现网络数据采集。以太网数据传输是通过广播实现的。然而,当系统正常运行时,应用程序只能接受是基于主机的主机的数据包,和其他的数据包将被丢弃。所有通过网络收集到的数据,我们需要将网卡设置为混杂模式,接收目标MAC地址不是你的MAC地址的数据包,并直接访问数据链路层,截获相关数据,该数据是由应用程序过滤,所以你可以听不到所有流经网卡的数据。
在数据采集,利用libpcap。libpcap是一个数据包捕获函数库的实现独立的访问操作系统提供的,这是用来访问数据链路层。C标准库提供的功能接口,可用于通过网络接口的数据包捕获系统的开发。该库提供不同平台的一致的编程接口。在平台上安装libpcap,写在Libpcap接口程序可自由使用跨平台。
libpcap是互联网上捕获数据帧,我们还需要对数据帧的协议分析、协议分析的过程如下:首先,根据过滤规则的预定义的从网络获取在线监测数据包,TCP / IP然后从物理过程的底层堆栈,主要IP重组和TCP / UDP协议处理,最后应用层协议分析。
的协议分析工作中的每一个操作系统是可用的,在这里我们选择libnids函数库。Libnids在libnet和libpcap的基础上开发的,它将发展的网络入侵检测系统的通用功能,提供的接口函数的检测不仅可以监控所有局域网通信和检查数据包,但也有重组段和处理IP数据包的TCP数据的功能,它还具有良好的可移植性。
2.4数据分析模块
数据分析是入侵检测系统的核心,各种方法各有优缺点,但检测方法基于事先的规则因为入侵规则表示为存储在规则库中的各种方式,因此基于规则库比较齐全,可以很好的检测效率,所以我们在系统实现基于规则的检测方法主要考虑的因素。
基于规则的检测是一种误用检测,入侵检测系统需要从以前的攻击活动,确定相应的感应入侵模式和存储在规则库中的入侵模式,然后将模式匹配系统现有的活动和规则来决定是否发生入侵。
每一个基于规则的入侵检测方法需要一个确定性的入侵模式库,即规则库,在规则描述的入侵方法和行为是储存在我们的系统中,Snort入侵行为描述方法adopted.snort是一个轻量级的网络入侵检测系统的开放源代码。这种描述方法是简单和容易实现的,和可以描述入侵行为的绝大部分。由于其简单、检测速度快。
在一个以规则为基础的每一条规则在逻辑上分为两个部分:规则头和规则选项。规则头包含常规操作、协议、源IP地址和目标的IP地址,和他们的网络掩码和港口。规则包括报警信息和图形信息,检测的需要。规则的基本格式:
(;;;;;; hellip;;;
在它的前面部分是固定头,括号中的部分是一个普通的选择。组词在规则中选择部分的结肠被称为选项。选项是不规则的规则的一个重要组成部分;它是用来定义一个特定的包收集的具体特点。一个规则的不同部分必须满足的同时被执行,相当于和的操作。和所有的规则之间在同一个规则库文件,相当于一个和操作。
下面是一个例子:警报TCP任何-> 192.168.1.0 / 24 111(内容:00 0186 | A5 | ;味精:装好访问;)。规则描述任何数据包,使用TCP协议连接111端口网络192.168.1.0 / 24主机,如果有二进制数据000186 A5,它会发出一个警告信息mountd访问。
规则操作显示了在找到合适的数据包时应该做什么。有两种操作:警报和日志。如果是警报,则使用选择的警报方法生成警报并记录数据包;如果是日志,则只记录数据包。
该协议表明什么协议是目前使用的IP地址和端口,关键字any可以用来定义任何IP地址,网络掩码的IP地址后指定,如 / 24指定一个C类网络,和 / 16指定一个B类网络,和32指定一个特定的主机。为192.168.1.0 / 24指定一个范围来192.168.1.255 192.168.1.1