网站首页站长博客下载中心域名交易站长论坛域名主机免费电邮免费域名中文排行排名查询站长书库书籍教程下载
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
学院首页 网络编程 网页设计 图形图象 数 据 库 服 务 器 网络媒体 网络安全 个人专栏 站长CLUB 业界新闻 信息公告
 当前位置:首页 >> 服 务 器 >> 其他相关 >> 正文
公告通知
返回上级列表
资料搜索
相关文章
提高页面显示速度的秘技
Win2K中的信息网络安全技术
Hosts文件在系统中的作用
实现Windows 98与2000系统的数据
让操作系统长命百岁的几个小要点
轻松破解Syskey双重加密
SyGate相关
Win2000/XP系统三大典型红外通讯
用好Win XP程序运行兼容模式
强大的轻量级网络入侵检测系统SNORT
[ 来源:CSDN | 作者:无从考证 | 时间:2005-11-10 14:02:38 | 浏览:人次 ]
收藏到新浪ViVi 收藏到365KEY 收藏到我摘  字号选择〖    〗/ 双击滚屏 单击停止  
4.1.作为嗅探器 
所谓的嗅探器模式就是snort从网络上读出数据包然后显示在你的控制台上。首先,我们从最基本的用法入手。如果你只要把TCP/IP包头信息打印在屏幕上,只需要输入下面的命令: 

./snort -v 

使用这个命令将使snort只输出IP和TCP/UDP/ICMP的包头信息。如果你要看到应用层的数据,可以使用: 

./snort -vd 

这条命令使snort在输出包头信息的同时显示包的数据信息。如果你还要显示数据链路层的信息,就使用下面的命令: 

./snort -vde 

注意这些选项开关还可以分开写或者任意结合在一块。例如:下面的命令就和上面最后的一条命令等价: 

./snort -d -v -e 

4.2.记录数据包 
如果要把所有的包记录到硬盘上,你需要指定一个日志目录,snort就会自动对数据包进行日志: 

./snort -dev -l ./log 

当然,./log目录必须存在,否则snort就会报告错误信息并退出。当snort在这种模式下运行,它会日志所有看到的包将其放到一个目录中,这个目录以数据包目的主机的IP地址命名,例如1192.168.10.1 

如果你只指定了-l命令开关,而没有设置目录名,snort有时会使用远程主机的IP地址作为目录,有时会使用本地主机IP地址作为目录名。为了只对本地网络进行日志,你需要给出home net: 

./snort -dev -l ./log -h 192.168.1.0/24 

这个命令告诉snort把进入C类网络192.168.1的所有包的数据链路、TCP/IP以及应用层的数据记录到目录./log中。 

如果你的网络速度很快,或者你想使日志更加紧凑以便以后的分析,那么应该使用二进制的日志文件格式。所谓的二进制日志文件格式就是tcpdump程序使用的格式。使用下面的命令可以把所有的包日志到一个单一的二进制文件中: 

./snort -l ./log -b 

注意此处的命令行和上面的有很大的不同。我们勿需指定home network,因为所有的东西都被记录到一个单一的文件。你也不必冗余模式或者使用-d、-e功能选项,因为数据包中的所有内容都会被记录到日志文件中。 

你可以使用任何支持tcpdump二进制格式的嗅探器程序从这个文件中读出数据包,例如:tcpdump或者Ethereal。使用-r功能开关,也能使snort读出包的数据。snort在所有运行模式下都能够处理tcpdump格式的文件。例如:如果你想在嗅探器模式下把一个tcpdump格式的二进制文件中的包打印到屏幕上,可以输入下面的命令: 

./snort -dv -r packet.log 

在日志包和入侵检测模式下,通过BPF(BSD Packet Filter)接口,你可以使用许多方式维护日志文件中的数据。例如,你只想从日志文件中提取ICMP包,只需要输入下面的命令行: 

./snort -dvr packet.log icmp 

4.3.作为入侵检测系统 

snort最重要的用途还是作为网络入侵检测系统(NIDS),使用下面命令行可以启动这种模式: 

./snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf 

snort.conf是规则集文件。snort会对每个包和规则集进行匹配,发现这样的包就采取相应的行动。如果你不指定输出目录,snort就输出到/var/log/snort目录。 

注意:如果你想长期使用snort作为自己的入侵检测系统,最好不要使用-v选项。因为使用这个选项,使snort向屏幕上输出一些信息,会大大降低snort的处理速度,从而在向显示器输出的过程中丢弃一些包。 

此外,在绝大多数情况下,也没有必要记录数据链路层的包头,所以-e选项也可以不用: 

./snort -d -h 192.168.1.0/24 -l ./log -c snort.conf 

这是使用snort作为网络入侵检测系统最基本的形式,日志符合规则的包,以ASCII形式保存在有层次的目录结构中。 

网络入侵检测模式下的输出选项 

在NIDS模式下,有很多的方式来配置snort的输出。在默认情况下,snort以ASCII格式记录日志,使用full报警机制。如果使用full报警机制,snort会在包头之后打印报警消息。如果你不需要日志包,可以使用-N选项。 

snort有6种报警机制:full、fast、socket、syslog、smb(winpopup)和none。其中有4个可以在命令行状态下使用-A选项设置。这4个是: 

-A fast:报警信息包括:一个时间戳(timestamp)、报警消息、源/目的IP地址和端口。 

-A full:是默认的报警模式 

-A unsock:把报警发送到一个UNIX套接字,需要有一个程序进行监听,这样可以实现适时的报警 

-A none:关闭报警机制 

使用-s选项可以使snort把报警消息发送到syslog,默认的设备是LOG_AUTHPRIV和LOG_ALERT。可以修改snort.conf文件修改其配置。 

snort还可以使用SMB报警机制,通过SAMBA把报警消息发送到Windows主机。为了使用这个报警机制,在运行./configure脚本时,必须使用--enable-smbalerts选项。 

下面是一些输出配置的例子: 

1).使用默认的日志方式(以解码的ASCII格式)并且把报警发给syslog: 
./snort -c snort.conf -l ./log -s -h 192.168.1.0/24 

2).使用二进制日志格式和SMB报警机制: 
./snort -c snort.conf -b -M WORKSTATIONS 


snort规则简介 

snort最重要的用途是作为网络入侵检测系统,它有自己的规则语言。从语法上看,这种规则语言非常简单,但是对于入侵检测来说它足够强大。对于匹配特定规则的数据包,snort有三种处理动作:pass、log、alert。 

1).pass:放行数据包 
2).log:把数据包记录到日志文件 
3).alert:产生报警消息并日志数据包 

snort的每条规则都可以分成逻辑上的两个部分:规则头和规则选项。规则头包括:规则行动(rules action)、协议(protocol)、源/目的IP地址、子网掩码以及源/目的端口。规则选项包含报警消息和异常包的信息(特征码),使用这些特征码来决定是否采取规则规定的行动。最基本的规则只是包含四个个域:处理动作、协议、方向、注意的端口。例如: 



log tcp any any -> 10.1.1.0/24 79 


这条规则表示:让snort记录从外部网络到C类网址10.l.1所有数据包。 

snort规则中还可以有规则选项(rule option),使用规则选项可以定义更为复杂的行为,实现更加强大的功能。下面是一条含有规则选项的规则(注意整个规则应该在一行,是出于版面的原因才分成两行): 


alert tcp any any -> 10.1.1.0/24 80 (content: 


"/cgi-bin/phf";msg "PHF probe!") 


这条规则用来检测对本地网络web服务器的PHF服务的探测,一旦检测到这种探测数据包,snort就发出报警消息,并把整个探测包记录到日志。 

在规则中,IP地址的定义也有很大的灵活性。使用any关键词表示任何IP地址或者端口。一般地,IP地址可以使用xx.xx.xx.xx/子网掩码的形式定义,其中xx.xx.xx.xx是由.分割的四个字节的数字。注意不能使用域名方式,snort不对域名进行解析,当然是出于效率的考虑^_^。还可以使用非操作符!对IP地址和端口进行操作,这个操作符就是逻辑非的意思。对于端口,还可以使用操作符:限制端口的范围。例如: 


alert tcp !10.1.1.0/24 any -> 10.1.1.0/24 6000:6010 ( 


msg: "X traffic";) 


这条规则使snort对于从外部网络到内部网络X-window服务端口的数据包发出报警。 

在snort当前版本(1.7)中有23个规则选项关键词,随着snort不断地加入对更多协议的支持以及功能的扩展,会有更多的功能选项加入其中。这些功能选项可以以任意的方式进行组合,对数据包进行分类和检测。现在,snort支持的选项包括:msg、logto、ttl、tos、id、ipoption、fragbits、dsize、flags、seq、ack、itype、icode、icmp_id、content、content-list、offset、depth、nocase、session、rpc、resp、react。每条规则中,各规则选项之间是逻辑与的关系。只有规则中的所有测试选项(例如:ttl、tos、id、ipoption等)都为真,snort才会采取规则动作。 


如何编写规则 

由于snort的规则语言语法非常简单,所以可以对新发现的攻击作出快速的反应,迅速开发新的snort规则。编写新的规则,最重要的是知道新攻击的特征码。要得到一个新的攻击的特征码,一般的方法就是进行实际的测试。对一个测试网络进行攻击,使用snort记录在攻击主机和测试网络之间的数据流。然后,对记录的数据进行分析得到其唯一的特征码,最后把得到的特征码加入到规则中。我们以IMAP缓冲区溢出为例进行说明,图8是一个假想的IMAP缓冲区溢出攻击被记录下的数据包: 

-------------------------------------------------------------------------- 
052499-22:27:58.403313 192.168.1.4:1034 -> 192.168.1.3:143 
TCP TTL:64 TOS:0x0 DF 
***PA* Seq: 0x5295B44E Ack: 0x1B4F8970 Win: 0x7D78 
90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 3B ...............; 
5E 89 76 08 31 ED 31 C9 31 C0 88 6E 07 89 6E 0C ^.v.1.1.1..n..n. 
B0 0B 89 F3 8D 6E 08 89 E9 8D 6E 0C 89 EA CD 80 .....n....n..... 
31 DB 89 D8 40 CD 80 90 90 90 90 90 90 90 90 90 1...@........... 
90 90 90 90 90 90 90 90 90 90 90 E8 C0 FF FF FF ................ 
2F 62 69 6E 2F 73 68 90 90 90 90 90 90 90 90 90 /bin/sh......... 
--------------------------------------------------------------------------- 

这个攻击的特征码就是/bin/sh字符串及其前面的机器代码。这实际上是一个shellcode。四用这些信息可以很快开发出一条新的规则: 


alert tcp any any -> 192.168.1.0/24 143 (content:"|E8C0 FFF FF|/bin/sh"; 


msg:"New IMAP Buffer Overflow detected!";) 


其中的特征码含有文本和16进制两种形式,它们以|分割,snort运行时都被转换为二进制形式。 


总结 

本文介绍了一个轻量级的入侵检测系统snort。主要讨论了其特点、如何安装,最基本的用法,以及如何开发新的规则。snort是一个高性能的入侵检测系统,适用于大中小型网络,尤其适合一些无力承受大型商业入侵检测系统高昂费用中小型公司。 

本新闻共2页,当前在第2页  1  2  


[发送给好友]  [打印本页]  [关闭窗口]  [返回顶部]   转载请注明来源:http://edu.chinaz.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
栏目编辑: 设计风 责任编辑: 简若宁
原始作者: 无从考证 录入时间: 2005-11-10 14:02:38
信息来源: CSDN 投稿信箱: Edu#chinaz.com
设为首页 - 加入收藏 - 关于我们 - 广告服务 - 版权申明 - 友情链接 - 联系方式 - 总编信箱 - 会员投稿