首页 理论教育常用入侵检测系统介绍-《计算机网络与信息安全》

常用入侵检测系统介绍-《计算机网络与信息安全》

【摘要】:(一)Snort入侵检测系统Snort系统是一个以开放源代码形式发行的网络入侵检测系统,由Martin Roesch编写,并由遍布世界各地的众多程序员共同维护和升级。Snort不仅是一个网络入侵检测系统,还可以作为网络数据包分析器和记录器来使用。网络入侵检测系统网络入侵检测系统模式是Snort的最主要功能。(二)OSSEC HIDSOSSEC HIDS是一个基于主机的开源入侵检测系统,它可以执行日志分析、完整性检查,Windows注册表监视、Rootkit检测、实时警告及动态的适时响应。

(一)Snort入侵检测系统

Snort系统是一个以开放源代码(Open Source)形式发行的网络入侵检测系统,由Martin Roesch编写,并由遍布世界各地的众多程序员共同维护和升级。Snort运行在Libpcap库函数基础之上,并支持多种系统软硬件平台,如RedHat Linux、Debian Linux、HP-UX、Solaris(X86和Sparc)、X86 Free/Net/OpenBSD、NetBSD及MacOS X等。系统代码遵循GNU/GPL协议。

与许多昂贵且庞大的商用系统相比,Snort系统具有系统规模小、易于安装、便于配置、功能强大、使用灵活等优点。Snort不仅是一个网络入侵检测系统,还可以作为网络数据包分析器(Sniffe)和记录器(Logger)来使用。它采用基于规则的工作方式,对数据包内容进行规则匹配来检测多种不同的入侵行为和探测活动,如缓冲区溢出、隐蔽端口扫描、CGI攻击、SMB探测等。Snort具备实时报警的功能,可以发送警报消息到系统日志文件、SMB消息或指定的警报文件中。系统采用命令行开关选项和可选BPF命令的形式进行配置。系统检测引擎采用了一种简单的规则语言进行编程,用于描述对每一个数据包所对应进行的测试和对应可能的相应动作。

1.Snort的工作模式

Snort作为一个功能强大的网络安全工具,它可以被设置成3种工作模式。

(l)网络嗅探分析仪(Sniffer)

进行网络协议的实时分析。当被设置成这种模式时,Snort从网络中读取所有的数据包并进行解码(Decode),然后根据参数将相应的信息显示给用户。

(2)IP包日志记录器(Packet Logger)

将网络中的数据包记录到日志文件中。在这种模式下,Snort将数据包解码后以ASCII码的形式存储在磁盘的指定目录中。在自动形成的层次目录结构中,一般用被记录的IP地址作为log日志的子目录名,并在各自的子目录下自动形成以通信端口为名称的日志文件。日志模式可以和嗅探模式混合使用。

(3)网络入侵检测系统(NIDS)

网络入侵检测系统模式是Snort的最主要功能。Snort首先通过一种简单、轻量级的规则描述语言来制定出一系列的规则,然后将侦听到的数据包与现有规则集进行匹配,根据匹配的结果来采取相应的动作(Actions)。所谓动作(Actions),就是当Snort发现从网络中获取的数据包与事先定义好的规则相匹配时,下一步所要进行的处理方式。通常可采取的动作有alert、log、pass、activate、dynamic 5个。

①alert:用事先定义好的方式产生报警,并将数据包记入日志。

②log:将数据包记入日志。

③pass:忽略数据包。

④activate:产生报警,并转向(激活)相应的dynamic规则。

⑤dynamic:等待被activate规则激活,激活后等同于log动作。

activate和dynamic一般是成对出现的,activate/dynamic规则使Snort的规则定义功能更加充实。

2.Snort的模块结构(www.chuimin.cn)

Snort在逻辑上可以分成多个模块,这些模块共同工作,来检测特定的攻击,并产生符合特定要求的输出格式。一个基于Snort的IDS包含下面的主要部件:数据包解码器(传感器)、预处理器、检测引擎、日志和报警系统、输出模块。

Snort模块的组成及相互关系如图8-3所示,任何来自Internet的数据包到了包解码器,然后被送到输出模块,在这里或者被丢弃,或者产生日志或报警。

数据包解码采用Libpcap库函数捕获数据链路层的分组并进行协议栈分析(TCP/IP协议),以便交给检测引擎进行规则匹配。解码器运行在各种协议栈之上,从数据链路层到传输层,最后到应用层。Snort的包解码支持以太网令牌环、SLIP(串行线路接口协议)及PPP媒体介质。数据包解码所做的工作就是为检测引擎准备数据。

图8-3 Snort模块的组成及其相互关系

预处理器是Snort在检测引擎做出一些操作来发现数据包是否用来入侵之前排列,或者修改数据包的组件或插件。一些预处理器也可以通过发现数据包头部异常来执行一些探测工作,并产生报警。预处理器的工作对于任何IDS的检测引擎依据规则分析数据都是非常重要的。黑客有很多欺骗IDS的技术。例如,建立这样一条规则,用来在HTTP包中发现包含“scripts/iisadmin”的入侵特征,如果字符匹配过于严格,那么黑客只需要做一些细小的变通,就能很轻易地欺骗IDS。

为了使问题复杂化,攻击者也会在字符中嵌入16位URI字符或Unicode字符,这对Web服务器来说是同样合法的,因为Web服务器能够理解所有这些字符,并将它们处理成为类似于“scripts/iisadmin”这样的字符。如果IDS严格匹配某一字符串,就可能不会探测到这种类型的攻击。预处理器可以将字符重新排列,以使IDS能够探测到类似的情形。

检测引擎是Snort的核心模块。当数据包从预处理器送过来后,检测引擎依据预先设置的规则检查数据包,一旦发现数据包中的内容和某条规则相匹配,就会有相应的动作(记录日志或报警等)产生,否则数据包就会被丢弃。

依据在数据包中所找到的数据特征,一个包可以用来记录行为或产生报警。日志可以存为简单的文本文件、Tcpdump格式文件或其他的形式。

(二)OSSEC HIDS

OSSEC HIDS是一个基于主机的开源入侵检测系统,它可以执行日志分析、完整性检查,Windows注册表监视、Rootkit检测、实时警告及动态的适时响应。除了IDS的功能之外,它通常还可以被用作一个SEM/SIM解决方案。因为其强大的日志分析引擎,互联网供应商大学数据中心都乐意运行OSSEC HIDS,以监视和分析其防火墙、IDS、Web服务器和身份验证日志。

(三)Fragroute/Fragrouter

Fragroute/Fragrouter是一个能够逃避网络入侵检测的工具箱,也是一个自分段的路由程序,它能够截获、修改并重写发往一台特定主机的通信,可以实施多种攻击,如插入、逃避、拒绝服务攻击等。它拥有一套简单的规则集,可以对发往某一台特定主机的数据包延迟发送,或者复制、丢弃、分段、重叠、打印、记录、源路由跟踪等。严格来讲,这个工具是用于协助测试网络入侵检测系统的,也可以协助测试防火墙、基本的TCP/IP堆栈行为。

(四)BASE

BASE又称为基本的分析和安全引擎。BASE是一个基于PHP的分析引擎,它可以搜索、处理由各种各样的IDS、防火墙、网络监视工具所生成的安全事件数据。其特性包括一个查询生成器并查找接口,这种接口能够发现不同匹配模式的警告,还包括一个数据包查看器/解码器,基于时间、签名、协议、IP地址的TCP/IP堆栈行为。

(五)Sguil

Sguil是一款被称为网络安全专家、监视网络活动的控制台工具,它可以用于网络安全分析。其主要部件是一个直观的GUI界面,可以从Snort/barnyard提供实时的事件中进行分析。还可借助于其他的部件,实现网络安全监视活动和IDS警告的事件驱动分析。