Windows下构建基于Snort的入侵检测系统
2009-04-23谭宁
谭 宁
[摘要]设计一种Windows下的入侵检测系统,将入侵检测系统的工作流程和工作模式进行描述,并将Snort与其他工具进行比较。
[关键词]Snort 入侵检测 系统
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0320022-01
目前,我国的局域网建设发展迅速,它已经成为信息交流、信息共享和通信联络不可缺少的有力工具,但随之而来的是局域网的安全问题越来越突出,如果无法解决好这一问题,局域网的积极作用将会受到极大的影响。而Snort作为目前较为成熟的轻量级网络入侵检测系统,能够较好的满足网络安全的需要。
一、系统工作流程
系统在Windows 2000 Server平台下,以Snort为核心和基础,在MySQL、Apache、ACID等相关组件的共同支持下组建起来。基于Snort的入侵检测系统可以分为三部分:网络入侵检测模块主要实现对网络数据包的实时捕获、监控和对数据进行分析以找出可能存在的入侵;数据存储模块主要是从入侵检测系统中收集报警数据并把它存入关系数据库中,便于用户日后查询;分析员控制台是IDS分析员的专用工作站,用来对报警日志信息进行管理和查询,它提供了很好的人机交互界面。
Snort首先利用winpcap组件捕获并分析数据,然后用output插件将数据储存在MySQL数据库中,Apache服务器在ACID等组件的帮助下使连接到服务器的用户能够通过浏览器查看数据,用户还可以在网页上应用不同的查询来分析、备份、删除数据或者显示图表。
二、Snort三种工作模式的应用
Snort共有三种工作模式:嗅探器模式、数据包记录器模式、网络入侵检测模式,而这三种模式均是通过不同的命
令来实现的。结合网中基于Snort的系统,对以上三种模式分别进行应用与描述。
(一)利用Snort作为数据包嗅探器
利用Snort作为数据包嗅探器就是从网络上读出数据包然后显示在你的控制台上。从最基本的用法入手,如果只要把TCP/IP包头信息打印在屏幕上,只需要在命令提示符的c:snortin路径下输入以下命令:snort-v
使用这个命令将使Snort只输出IP和TCP/UDP/ICMP的包头信息。如果要看到应用层的数据,可以使用命令:snort -vd
这条命令使Snort在输出包头信息的同时显示包的数据信息。如果还要显示数据链路层的信息,就使用命令:snort -vde
(二)利用Snort作为数据包记录器
如果要把所有的数据包记录到硬盘上,使用以下命令指定一个日志目录,Snort就会自动记录数据包:snort -dev -l c:snortlog
当然,c:snortlog目录必须存在,否则Snort就会报告错误信息并退出。当Snort在这种模式下运行时,它会记录所有捕获到的包并将其放到一个目录中,这个目录以数据包目的主机的IP地址命名。
如果只指定了命令选项,而没有设置目录名,Snort也可使用远程主机的IP地址作为目录,或者会使用本地主机 IP地址作为目录名。为了对子网进行日志,需要给出本地网络:snort -dev -l c:snortlog -h 10.3.2.0/24
这条命令告诉Snort把进入其重要子网10.3.2.0/24的所有数据包的数据链路层、TCP/IP以及应用层的数据记录到目录c:snortlog中。
如果网络速度很快,或者想使日志更加紧凑,方便以后的分析,那么应该使用二进制的日志文件格式,即Tcpdump程序使用的格式。使用下面的命令可以把所有的数据包信息记录到一个单一的二进制文件中:snort -l c:snortlog-b
注意此处的命令行和上面的命令有很大不同。不需要指定本地网络,也不必使用-dev等功能选项,因为数据包中的所有内容都会被记录到单一的二进制日志文件中。可以使用支持Tcpdump二进制格式的嗅探器程序从该文件中读出数据包相关信息,例如Tcpdump或者Etherea1。
(三)利用Snort作为网络入侵检测系统
Snort最重要也是最常用的用途是作为网络入侵检测系统(NIDS),可以使用以下命令行启动这种工作模式:
snort -dev -l c:snortlog -h 10.3.2.0/24 -c c:snortetcsnort.conf
snort.conf是Snort的规则集文件,Snort会将每一个数据包与规则集文件进行匹配,匹配成功便根据规则采取相应的行动,同时将日志文件输出到指定的目录中。
由于准备长期使用Snort作为重要子网入侵检测系统,为了提高Snort的处理速度,以免在向显示器输出的过程中丢弃某些数据包,可以不必使用功能选项-ve,因此可在c:snortin目录下新增runsnort.bat文件并运行。
三、Snort与其他工具的比较
Snort的主要用途就是网络监视、数据包的记录和检测入侵行为,经过实际应用,将Snort分别与具有上述两种功能的典型工具进行比较。
(一)Snort与Tcpdump的比较
Tcpdump是一种经典的网络嗅探工具,主要用于记录网络数据、网络故障的探测诊断工具。Snort与它的最大的共同之处在于都是基于libpcap并且支持BPF过滤机制,所以本质上都是调用数据包捕获库函数,但是Snort的目的不仅仅在于记录某个数据包,而是从安全的角度出发去解析它,同时Tcpdump主要通过分析第二层或者第三层的报文来进行网络故障诊断,而Snort则主要针对应用层的数据进行分析从而实现入侵检测行为。除此之外,由于Tcpdump旨在快速完整地记录流量,所以它制定了特殊的输出格式,速度快但是不易读懂,而Snort提供了更为友好的输出格式,有利于系统管理员的直接分析。
(二)Snort与NFR的比较
NFR作为一种商用网络入侵检测工具,其综合性能指数高于ISS公司的RealSecure和CA公司的SessionWall,代表了目前国际上IDS的最高水准,是一个比较成熟的商业产品。Snort的许多设计思想类似于NFR,当然作为轻量级入侵检测系统,必然在某些方面会有不足之处,但是Snort的最大优势在于它是源代码公开的软件,全世界的爱好者都可以参与它的开发与升级工作,其发展前景是不可估量的。
参考文献:
[1]金卫,入侵检测技术的研究[J].山东师范大学学报(自然科学版),2005.4.
[2]迟向阳、张华忠、杨玉鹏,税务网络安全系统的设计[J].计算机工程与设计,2007.2.
[3]娄志刚、张同光,Snort及其在网络入侵检测中的应用[J].软件导刊,2007.13.
作者简介:
谭宁,男,汉族,淄博职业学院信息工程系,副教授,研究方向:计算机网络。