入侵检测系统分析及其在Linux下的实现(下)

 
   | |

导读:本文介绍入侵检测系统分析及其在Linux下的实现的下半部分。

关键词:入侵检测系统 IPS Linux

 
正在加载数据...

  2.3 数据采集模块

  数据采集是入侵检测的基础,入侵检测的效率在很大程度上依赖于所采集信息的可靠性和正确性。在基于网络的入侵检测系统中,数据采集模块需要监听所保护网络的某个网段或某几台主机的网络流量,经过预处理后得到网络、系统、用户以及应用活动的状态和行为信息。数据采集需要在网络中的若干关键点进行。

  具体来说,数据采集模块需要监听网络数据包,进行IP重组,进行TCP/UDP协议分析,同时也要进行应用层协议数据流分析。采集到的数据要经过预处理才能提交给数据分析模块。由于不同的分析方法所需要的数据源是不同的,所以预处理也会有很大的不同。但是,一般来说,分析模块所分析的数据都是基于某个网络协议层的数据信息,或是直接采用这些数据的某些部分。因此在该系统的设计中,数据采集模块除了采集数据外,还要对这些信息进行协议分析。协议分析是指将网络上采集到的基于IP的数据进行处理,以便得到基于某种协议的数据。在本系统中主要是针对TCP/IP协议族的分析。

  网络数据采集是利用以太网络的广播特性实现的,以太网数据传输通过广播实现,但是在系统正常工作时,应用程序只能接收到以本主机为目标主机的数据包,其他数据包将被丢弃。为了采集到流经本网段的所有数据,我们需要首先将网卡设置为混杂模式,使之可以接收目标MAC地址不是自己MAC地址的数据包,然后直接访问数据链路层,截获相关数据,由应用程序对数据进行过滤处理,这样就可以监听到流经网卡的所有数据。

  在进行数据捕获时,我们采用的是libpcap,libpcap是一个与实现无关的访问操作系统所提供的分组捕获机制的分组捕获函数库,用于访问数据链路层。该库提供的C函数接口可用于需要捕获经过网络接口数据包的系统开发上。这个库为不同的平台提供了一致的编程接口,在安装了libpcap的平台上,以libpcap为接口写的程序,可以自由地跨平台使用。

  Libpcap在网上捕获到的是数据帧,我们还需要对数据帧进行协议分析,协议分析的处理过程为:首先根据预先定义的过滤规则从网络上获取所监听子网上的数据包,然后进行TCP/IP栈由下至上的处理过程,主要是IP重组和TCP/UDP层协议处理,最后进行应用层协议分析。

  协议分析的工作在每个操作系统里都有,在这里,我们选择了libnids函数库。libnids是在libnet和libpcap的基础上开发的,它封装了开发网络入侵检测系统的许多通用型函数。libnids提供的接口函数除了可以监视流经本地的所有网络通信、检查数据包外,还具有重组TCP 数据段、处理IP分片包的功能。而且它同样具有很好的移植性。

  数据分析是入侵检测系统的核心。各种分析方法各有利弊,但基于规则的检测方法因为事先将各种入侵方式表示为规则存放于规则库中,因此在规则库比较完备的基础上,可以有很好的检测效率,所以我们在该系统的实现中主要考虑了基于规则的检测方法。

  基于规则的检测方法是误用检测的一种。入侵检测系统需要从以往的攻击入侵活动中,归纳识别出对应的入侵模式,并将这些入侵模式存放于规则库中,然后将系统现有的活动与规则库中的规则进行模式匹配,从而决定是否有入侵行为发生。

  每一种基于规则的入侵检测方法都需要一个确定的入侵模式库,即规则库,其中存放着描述入侵方法和行为的规则。在我们的系统中,采用了SNORT 的入侵行为描述方法。SNORT是一个开放源代码的轻量级的基于网络的入侵检测系统。这种描述方法简单、易于实现,能够描述绝大多数的入侵行为。由于其简单,因此检测速度比较快。

  规则库中的每条规则在逻辑上分为两部分:规则头部和规则选项。规则头部包含规则的操作、协议、源IP地址和目标IP地址及其网络掩码和端口。规则选项包括报警信息及需要检测的模式信息。规则的一般格式为:

  <规则操作><协议><源主机IP><源端口><方向操作符><目标主机 IP><目标端口>(<规则选项1:值1>;<规则选项2:值2>;…;<规则选项n:值 n>;)

 在圆括号前的部分是规则头部,在圆括号中的部分是规则选项。规则选项部分中冒号前面的词组称为选项关键字。规则选项不是规则的必需部分,它只是用来定义收集特定数据包的特定特征。一条规则中不同部分必须同时满足才能执行,相当于“与”操作。而同一个规则库文件中的所有规则之间相当于一个“或”操作。

  以下是一个例子:alert tcp any any -> 192.168.1.0/24 111 (content:|00 01 86 a5|; msg: mountd access;)。该条规则描述了:任何使用TCP协议连接网络192.168.1.0/24中任何主机的111端口的数据包中,如果出现了二进制数据 00 01 86 a5,便发出警告信息mountd access。

  规则操作说明当发现适合条件的数据包时应该做些什么。有两种操作:alert和log。如果是 alert,则使用选定的告警方法产生警报,并记录这个数据包;如果是log,则只记录该数据包。

  协议指明当前使用的是何种协议。对于IP地址和端口,关键字“any”可以用来定义任何IP地址。在IP地址后指定网络掩码,如/24指定一个 C类网络,/16指定一个B类网络,/32指定一个特定主机。如192.168.1.0/24指定了从192.168.1.1 到 192.168.1.255的一个范围的IP地址。

  IP地址有一个“非”操作。这个操作符号用来匹配所列IP地址以外的所有IP地址。“非”操作使用符号“!”表示。例如任何由外部网络发起的连接可以表示为:alert tcp !192.168.1.0/24 any -> 192.168.1.0/24 111。

  端口号可以用几种方法指定:用“any”、数字、范围以及用“非”操作符。“any”指定任意端口。指定端口范围用“:”它可以指定一个范围内的所有端口。如:log udp any any -> 192.168.1.0/24 1:1024。该条规则记录任何从任意主机发起的到目标网络任何主机上的1~1024端口的UDP协议数据包。

  方向操作符“->”规定了规则应用的数据流方向。其左边的IP地址为数据流的起点,右边为终点。双向操作符为“<>”,它告诉系统应该关注任何方向的数据流。

  规则选项形成了检测系统的核心,一个规则的规则选项中可能有多个选项,不同选项之间使用“;”分隔开来,他们之间为“与”的关系。选项由关键字和参数组成,每个关键字和它的参数使用冒号“:”分隔。这些关键字主要包括:

  • msg:在警报和记录的数据中打印消息。
  • logto:将数据包记录到一个用户指定的文件中。
  • ttl:检测IP数据包的TTL域。
  • id:检测IP数据包的分段ID域是否等于特定的值。
  • nocase:设定搜索中使用与大小写无关的方式。
  • dsize:检测数据包的有效荷载是否等于特定的值。
  • content:在数据流中搜索特定的模式串。
  • offset:设定content中的起点。
  • depth:设定content中的终点。
  • flags:检测TCP数据包的标志是否等于特定的值。
  • seq:检测TCP的顺序号是否等于特定的值。
  • ack:检测TCP的应答域否等于特定的值。

  三、实例分析

  下面结合入侵检测的实例来介绍该系统是如何检测入侵的,这里以WEB攻击为例来进行介绍。WEB攻击是入侵的一大类,它是指利用CGI、WEB 服务器和浏览器等存在的安全漏洞来损害系统安全或导致系统崩溃的一类入侵方式。由于WEB的广泛使用,关于它的各种安全问题不断地发布出来,这些漏洞中的一些漏洞甚至允许攻击者获得系统管理员的权限而进入站点内部。因此,WEB攻击的危害很大。

  虽然WEB攻击种类繁多,但是分析一下,还是具有如下几个特点:

  • 都是通过HTTP数据流来进行的,所以可以通过HTTP数据流来进行检测。
  • HTTP是无状态的协议,一般都是通过一次请求来实现,或者包含有一次具有典型的入侵特征的请求,所以利用一次请求信息就可以实现检测。
  • 一般都是通过构造别有用心的请求字符串来实现的,所以可以采用基于规则的方法。

  在我们的系统中可以检测出100多种WEB攻击方式。例如规则:alert http $EXTERNALNET any -> $HTTPSERVER 80 (content:/maillist.pl; nocase; msg: WEB-CGI Maillist CGI access attempt ;) 。该规则规定了检测从外网的任意端口到内网的WEB服务器的80端口的数据流。检测条件为请求中包含“/maillist.pl”字符串,匹配不分大小写,告警名称为“WEB-CGI Maillist CGI access attempt”。这里利用了两个自定义的变量$EXTERNALNET和$HTTPSERVER,分别表示外网和WEB服务器。

  四、结束语

  本文在对入侵检测系统进行分析的基础上,在Linux系统下实现了一个基于网络的入侵检测系统。实践表明,该系统对于检测一些常见的入侵方式具有很好的效率和性能。同时,该系统提供了完整的框架,可以灵活地应用于各种环境并扩充。当然,本系统还有很多不足的地方:数据源比较单一,还应该加入日志数据源;而且现在对于应用层协议只实现了HTTP协议分析,以后还可以加入其他协议分析,如TELNET、FTP等。这些都需要今后进一步完善。未来的入侵检测系统将会结合其它网络管理软件,形成入侵检测、网络管理、网络监控三位一体的工具。同时,网络安全需要纵深的、多层次的防护。即使拥有当前最强大的入侵检测系统,如果不及时修补网络中的安全漏洞的话,安全也无从谈起。只有将入侵检测系统与其他安全工具结合起来,才能构筑起一道网络安全的立体防御体系,最大程度地确保网络系统的安全。

原文出处:http://tech.ccidnet.com/art/3067/20061030/935885_1.html
 
来源:赛迪网    
 
 
 
 
 

入侵防御系统

 
蜜罐技术能提供针对企业环境攻击行为的大量细节信息,但一定要小心,蜜罐技术也会带来很大的风险。企业在采用这项技术之前,有很多重要的问题需要认真考虑……
 
基于异常入侵的保护设备通过检测网络非正常和非预期的活动来工作,例如零日黑客攻击。安装和配置一个可以意识到非预期活动的系统要求其熟悉正常预期活动。
 
针对Web应用的攻击SQL注入为人所熟知,防御SQL注入攻击的主要方法是使用参数化的存储程序。作为网络管理员应当采取哪些具体措施来防范SQL注入攻击的发生呢?
 
二个防御网络安全攻击的方法分别是基于签名和基于异常网络行为分析。本文介绍这些入侵防御系统技术是如何阻止黑客攻击并保护我们的网络。
 
每家安全厂商已经推销他们最新的网络入侵检测和防御工具或产品。可惜的是,大多数这种商业系统都要让你花上一笔钱。在这种情况下,需要考虑预算的安全经理应该怎么办呢?

热门技术手册排行

 

虚拟专用网络 VPN(Virtual Private Network )能通过公用网络Internet建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。VPN是对企业内部网的扩展,它可以帮助远程用户、公司分支机构、商业伙伴及供应商同公司的内部网建立可信的安全连接,并保证数据的安全传输。许多公司使用VPN向公司外部的员工提供企业网络接入。本手册将围绕VPN进行全方位的讲解。

 

“最佳实践”来自英文Best Practice。维基百科对最佳实践的定义是一个管理学概念,认为存在某种技术、方法、过程、活动或机制可以使生产或者管理实践的结果达到最优,并减少出错的可能性。学习应用IT企业安全的最佳实践,其实就是借鉴别人成功的经验,让自己在保护企业安全方面少走弯路。在本手册中,将集合IT业内关于企业安全的最佳实践,并不断更新,以期在企业安全防护方面提供帮助。

 

虚拟化是数据中心的流行技术,它起源于20世纪60年代。它是把昂贵的计算机资源的利用最大化的方式。典型的服务器的利用率不足40%,虚拟化可以更有效地利用技术资源,并节约固定费用。虚拟化的最大优势是,它允许管理员从中央区域为个人电脑和客户设备提供软件。虚拟化不需要管理员对一般任务进行分别考虑。服务器的关机可以带动多用户的关机。

 

黑客策略和技术一直都在进步。黑客还在继续开发新的攻击工具和黑客方法,来恶意访问系统并攻击你的网络,这样企业在开发和采取恰当的方法防御黑客的攻击就变得非常困难。《黑客攻击技术和策略》的技术指南将介绍黑客的内心想法,并帮助你理解恶意攻击者的动机,也提供了一些黑客攻击具体信息的方式,采用的方法以及企业应该采用的保护敏感数据的方法。这里将会提供大量黑客技术和策路的信息,例如允许黑客获取网络系统或者文件访问的系统特征探测。

 

假如你正在寻找一个漏洞扫描器,你可能已经遇到了大量的非常昂贵的商业解决方案,这些方案都有一长串的性能和优点。不幸的是,如果你和我们之中大部分人的情况一样的话,你一般根本没有运行这些奇特的系统的预算。你可能已经退而求其次,转向考虑使用像SATAN或Saint的免费工具。然而,你可能觉得使用这些工具是一种折衷的办法,因为它们的性能设置不能与商业解决方案相比。这时候你就应该学会使用Nessus! 2005年12月Nessus背后的公司Tenable Network Security Inc.发布了Nessus 3,引进了对该产品的全面检查。在写这篇文章时候的最近版本,Nessus 3.2是在2008年3月发布的。Nessus现在可以在多种平台上使用,包括Windows、各种版本的Linux、FreeBSD、Solaris和Mac OS X。以下是这次Nessus3中的重大变化: 下面将介绍如何使用Nessus工具以及Nessus工具的更新。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
登录Email
请输入您的登录Email
密码
下次自动登录