赛迪网 > IT技术 网络安全 > IDS/IPS
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

EnGarde 创建 Snort 规则让黑客无处遁形

发布时间:2007.12.27 06:45     来源:赛迪网    作者:Bill Keys/freedom 译

【原创翻译,版权所有,合作网站如欲转载,请注明原创翻译作者“reedom”,及文章出处(赛迪网)。谢绝非合作网站转载,违者,赛迪网将保留追究其法律责任的权利!】

Snort是一个开源的网络入侵检测系统,它是一个可以实时监视网络通信的数据包嗅探器。通过协议分析和内容搜索与匹配,Snort能够检测攻击方法,包括拒绝服务器攻击、缓冲区溢出、CGI攻击、秘密的端口扫描等。Snort的生命力在于其功能强大的规则。

可以认为编写Snort规则就像编写程序一样。Snort规则包括变量、关键字和函数。为什么我们需要编写规则?其原因是没有这些规则,Snort将不可能检测黑客的攻击行为。本文将讨论编写规则的问题。

先决条件:

你需要:

1.一台可以进行开发规则的机器。这些规则不应当运行在一台产生性服务器上,因为这些规则只能作为你参考的例子。

2.你还需要一台客户端计算机,并使其与运行Snort的机器相连接。

3.安装有Snort的EnGarde Secure Community 3.0.18(或以上版本)。

语法问题

其语法初看起来可能有点儿奇怪,不过本节将解释这个问题,这样您就可以开始编写自己的规则。Snort规则分为两个部分:规则的头部和规则选项。首先,规则头部包含着规则、动作、协议、源地址和目标地址、源端口、目标端口。第二部分是规则选项,它包含着一个警告消息和某数据包有关部分的信息(如果要采取某个动作的话,就应当看一些这种信息)。

例如:alert tcp any any -> 192.168.1.0/24 111 (content:"|00 01 86 a5|"; msg: "mountd access";)

上例中,圆括号之前的部分属于规则的头部,圆括号内部的属于规则选项部分。

规则动作:

规则动作描述一个数据包的“谁,在何处,什么”的问题,并指明规则被激发后,在事件中应当做什么。在编写规则时,你可以从下面的关键字中选择:

·alert –用选择的警告方法生成一个警告,然后记录这个数据包。

·log -记录这个数据包。

·pass – 忽略此数据包。

协议:

规则的下一部分是协议。一些比较流行的协议包括TCP、UDP、ICMP等,不过Snort支持许多其它的协议,并继续增加新的协议。

源IP地址

紧跟着协议的部分是IP地址。它定义了数据包来自何处。你可以用“any”这个关键字来定义所有的IP地址。你甚至可以编写一个能够匹配除你指定的IP地址之外任何地址的规则。这是通过使用“!”这个否定操作符实现的。

源端口

它说的是数据包来自哪个端口。端口号也可以使用“any”关键字。你还可以通过使用“:”定义一个范围内的端口。例如,1:1000定义了从1到1000范围内的所有端口。

方向操作符:

方向操作符“->”用于定义规则所适用的通信方向。换句话说,即指明通信进入或出自你计算机的什么地方。

目标地址

下一部分是目标地址。它定义了数据包要到何方。与源地址类似,你也可以使用“any”关键字或定义一个不会引起规则被激发的地址。

目标端口

紧随目标IP地址的部分是目标端口号,即数据包设法连接的端口号。这儿的选项与源端口相同。

规则选项

圆括号内的所有内容称为规则选项。一个比较常用的关键字是“content”,不过你还可以用其它许多关键字。关键字“content”允许用户设定规则,搜索数据包有效负荷内的特定内容,并激发一个响应。

例如:

alert tcp any any -> 192.168.1.0/24 143 (content: "|90C8 C0FF FFFF|/bin/sh";
 msg: "IMAP buffer overflow!";)

通过上例可以看出,我们检查了数据包是否包含了某种二进制字节(Binary Byte)码和文本。

基本格式

动作 协议 源IP地址 源端口 方向 目标地址 目标端口 ( 规则选项)

增加一个新规则

既然我们对要Snort规则的语法有了一个基本的了解,现在我们就可以向系统中增加一条新的规则:

首先以根用户身份登录,并转换到sysadm_r:

[test_server]# newrole -r sysadm_r
Authenticating root.
Password:
[test_server]# setenforce 0

下一步,编辑Snort.conf文件,需要使用自己喜欢的编辑器来修改/var/chroot/snort/etc/snort.conf。我们需要包括下面的行:

include local.rules

这会告诉Snort,要求它使用存储在local.rules中的新规则。

现在我们可以创建local.rules文件:

[test_server]# cd /var/chroot/snort/etc
[test_server]# touch local.rules

下一部分比较有趣,因为我们需要编写规则了。在一个编辑器中打开local.rules,并增加下面的行。注意,这个规则仅是示例,你需要保证不能在一个真实的环境中使用哦:

alert tcp any any -> any 80 (msg: "Sample alert";classtype:misc-attack;
 sid: 2002973; rev:1;)

最后,重新启动Snort,以使新的规则生效。

[test_server]# /etc/init.d/snortd restart

一个简单的例子

既然现在我们增加了一条新规则,现在解释一下这条规则的作用,看一下其具体运用。

我们刚增加的规则是:

alert tcp any any -> any 80 (msg: "示例警告"; classtype:misc-attack;
 sid: 2002973; rev:1;)

规则如何工作:

在用户试图访问一个Web站点是,就会激发上面的规则。规则被激发后,会打开警告,显示一个消息。在这里动作的关键字“alert”用所定义的方法生成一个消息,然后记录这个数据包。我们正检测的数据包的协议是TCP协议,而且所有的IP地址和端口号已经定义。目标地址在连接到端口80的任何IP地址上定义。最后,规则选项的关键字“msg”告诉记录器和警告引擎来显示消息“示例警告”。

测试

现在你一定对自己的规则是怎样运行的感兴趣。为了看到规则的具体作用,你需要跟踪Snort的警告日志。

[test_server]# cd /var/chroot/snort/var/log/snort
[test_server]# tail -f alert

打开一个Web浏览器,输入你的测试服务器的IP地址。

现在可以查看一下Snort的警告记录。你会看到来自Snort的一个消息,这是由我们刚才增加的规则所引起的。

[**] [1:2002973:1] Sample alert [**]
[Classification: Misc Attack] [Priority: 2]
12/12-15:35:22.130162 test_client:35524 -> test_server:80
TCP TTL:64 TOS:0x0 ID:35734 IpLen:20 DgmLen:52 DF
***A**** Seq: 0x5F3B46F0 Ack: 0x85067266 Win: 0xB7 TcpLen: 32
TCP Options (3) => NOP NOP TS: 49925498 1529581

检测有效负荷样例

将下面的行添加到/var/chroot/snort/etc/local.rules中:

alert tcp any any -> any 80
 (content:"index.pl";sid:12345678;rev:1;classtype:misc-attack;)

你可以看出,我们编写了一个规则,用以根据内容“index.pl”检测任何连接到端口80的通信。

注意在Snort的警告日志中,你应当能够看到一个与下面类似的消息:

[**] [1:2002973:1] Sample alert [**]
[Classification: Misc Attack] [Priority: 2]
12/13-08:13:20.545431 test_client:32950 -> test_server:80
TCP TTL:64 TOS:0x0 ID:11275 IpLen:20 DgmLen:52 DF
***A**** Seq: 0x188A67A3 Ack: 0xF74B200C Win: 0xD8 TcpLen: 32
TCP Options (3) => NOP NOP TS: 64899598 45624

这仅仅是个开始

通过你所拥有的知识,现在你就可以开始更深入地研究如何编写自己的规则。官方的Snort文档包含着语法的每一个细节。随着你更深入编写你的Snort规则,你就会注意到以前没有注意到网络攻击者。

(责任编辑:李磊)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 连载:黑客全解析 走进黑客的神秘世界(3) (12-25) · 连载:黑客全解析 全面认识神秘的黑客(2) (12-25)
· Google文本广告遭遇恶意木马 黑客可控制 (12-25) · 安全技巧:怎样找到电脑中隐藏的入侵的黑手 (12-25)
· 连载:黑客全解析 揭开黑客神秘的面纱(2) (12-24) · 连载:黑客全解析 全面认识神秘的黑客(1) (12-21)
· Linux 抵御攻击 (12-21) · 谷歌页面被装木马 黑客用恶意网站替代广告 (12-20)
· Google工具栏曝漏洞 黑客可发动钓鱼攻击 (12-20) · 一黑客盗去18万元高额话费 被判刑13年 (12-19)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 信息化市场百家争鸣 SaaS深陷争议“泥潭”
· 提高管理水平 "两栖"CIO应具备的六大能力
· 国产ITIL运维先行者 四大厂商角力BI市场
· 金融行业GSN专题解决方案 企业网解决方案
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统