免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: phiazat
打印 上一主题 下一主题

基于Snort的入侵检测系统 [复制链接]

论坛徽章:
1
丑牛
日期:2015-01-07 15:25:00
31 [报告]
发表于 2006-10-09 23:09 |只看该作者
将数据记录到XML文件中。\r\n将信息记录到数据库中,Snort可以将数据记录到MySQL, Postgress SQL, Oracle 和 Microsoft SQL server中。\r\n这些新的动作类型在配置文件snort.conf中定义。一个新动作用下面的通用结构来定义:\r\nruletype action_name\r\n{\r\naction definition\r\n}\r\n        关键字ruletype后面跟随动作的名称,两个大括号中是实际的动作定义,类似于C语言中的函数。例如,我们定义一个叫做smb_db_alert的动作,用来向workstation.list中的主机发送SMB告警,同时在MySQL中的“Snort”数据库记录,如下所示:\r\nruletype smb_db_alert\r\n{\r\ntype alert\r\noutput alert_smb: workstation.list\r\noutput database: log, mysql, user=rr password=rr \\\r\ndbname=snort host=localhost\r\n}\r\n\r\n这些规则的类型我们会在下一章详细讨论,通常它们与配置和输出插件有关。

论坛徽章:
1
丑牛
日期:2015-01-07 15:25:00
32 [报告]
发表于 2006-10-09 23:09 |只看该作者
3.5.2 协议\r\n协议是Snort规则中的第二部分,这一部分将显示那种类型的包将与该规则比对。到目前为止,Snort可以支持以下协议:\r\nIP\r\nICMP\r\nTCP\r\nUDP\r\n如果协议是IP,Snort检测包中的数据链路层头部来确定包的类型,如果协议类型是其他任何一种,Snort检测IP头部来确定协议类型。不同的包头部将在附录C中讨论。\r\n协议部分仅仅在规则头部的条件中起作用。规则中的选项部分可以附加与协议无关的条件。如下面协议为ICMP的规则:\r\nalert icmp any any -> any any (msg: \"ing with TTL=100\"; \\\r\nttl: 100\r\n选项部分检测TTL值,它并不是ICMP头部的内容,而是IP头部内容。这就是说选项部分可以检测属于其它协议的一些参数。常用协议的头部和相关分析见附录C。\r\n3.5.3 地址\r\n在Snort规则中,有两个地址部分,用来检测包的来源和目的地。地址可以是一个主机地址或者网络地址。你可以用关键字any来指定所有的地址。地址后面用斜线来附加一个数字,表示掩码的位数。比如192.168.2.0/24代表一个C类网络192.168.2.0,其子网掩码是255.255.255.0。记住下面的一些子网掩码:\r\n如果子网掩码是24位,它是一个C类网络。\r\n如果子网掩码是16位,它是一个B类网络。\r\n如果子网掩码是24位,它是一个A类网络。\r\n表示一个主机用32位掩码。\r\n根据CIDR的支持,你可以用任何位数的掩码。参考RFC 791取得关于IP地址和子网掩码的信息。CIDR的更多信息参考RFC 1519。\r\n前面我们提到,Snort规则中有两个地址段,其中一个是源地址,另外一个是目的地址。方向段指明那个是源地址,哪个是目的地址。参考方向段部分的叙述来了解更多信息。\r\n下面是一个在Snort规则中地址部分的例子:\r\n192.168.1.3/32定义一个地址为192.168.1.3的主机。\r\n192.168.1.0/24定义从192.168.1.0到192.168.1.255的C类网络地址,子网掩码是24位,相当于255.255.255.0。\r\n152.168.0.0/24定义从152.168.0.0到192.168.255.255的B类网络地址,子网掩码是16位,相当于255.255.0.0。\r\n10.0.0.0/8定义从10.0.0.0到10.255.255.255的A类网络地址,子网掩码是8位,相当于255.0.0.0。\r\n192.168.1.16/28定义从192.168.1.16到192.168.1.31的网络地址,子网掩码是28位,相当于255.255.255.240。在这16个地址中有14个可以用作主机地址,因为还有一个网络地址和一个广播地址,注意,在任何网络中的一个地址总是网络地址,最后一个是广播地址。在这个例子中192.168.1.16是网络地址,192.168.1.31是广播地址。\r\n\r\n例,你可以用下面的规则,使到web服务器192.168.1.10/32的80端口的TTL为100的数据包触发告警:\r\nalert tcp any any -> 192.168.1.10/32 80 (msg: \"TTL=100\"; \\\r\nttl: 100\r\n这个规则仅仅用来示例IP地址是如何在Snort规则中应用的。

论坛徽章:
1
丑牛
日期:2015-01-07 15:25:00
33 [报告]
发表于 2006-10-09 23:09 |只看该作者
3.5.3.1 排除某些地址\r\nSnort提供一种机制,可以是你用否定符号“!”,也就是感叹号,来排除某些地址,这个符号用来限制Snort 不对某些源或目的地址的包做检测。例如,西面的规则将检测除了来自C类网络192.168.2.0之外所有的包:\r\nalert icmp ![192.168.2.0/24] any -> any any \\\r\n(msg: \"ing with TTL=100\"; ttl: 100\r\n当你想测试不包括你自己的网络的其它的包的时候,这个规则非常有用,这也意味着你信任自己所在网络的所有人!\r\n3.5.3.2 地址列表\r\n你也可以在Snort规则中指定一个地址的列表,比如,你的网络中包含两个C类网络:192.168.2.0和192.168.8.0,你想对除了这两个网络之外的其它地址应用规则,你可以用下面的规则,其中两个地址用逗号分隔:\r\n alert icmp ![192.168.2.0/24,192.168.8.0/24] any -> any \\\r\nany (msg: \"ing with TTL=100\"; ttl: 100\r\n注意,方括号是与否定符号以器用的,如果没有否定符号,你可以不用方括号。\r\n3.5.1 端口号\r\n端口号用来在进出特定的某个或一系列端口的包上运用规则,例如,你可以用源端口23来对来自Telnet服务器的包应用规则。你可以用关键字any来对包应用规则,而不管它的端口号。段口号仅仅对TCP和UDP协议有意义,如果你选择的协议是IP或者ICMP,端口号就不起作用。下面的规则用来检测来自C类网络192.168.2.0/24中的Telnet服务器,并包含“confidential”(机密)的包:\r\nalert tcp 192.168.2.0/24 23 -> any any \\\r\n(content: \"confidential\"; msg: \"Detected confidential\"\r\n同类的规则也可以用在这个网络中来自或者去向任何Telnet服务器的包,我们改以下方向段为任何方向,如下所示:\r\nalert tcp 192.168.2.0/24 23 <> any any \\\r\n(content: \"confidential\"; msg: \"Detected confidential\"\r\n当你想仅对某种类型的包应用规则的时候,端口号是非常有用的。例如,一种攻击仅与HTTP web服务器相关,你可以在规则中设置端口号80来检测试图进行这种攻击的人,这样Snort规则仅仅监视web服务,不对其它的TCP包应用规则。制订良好的规则一定能提高IDS的性能。\r\n3.5.4.1 端口范围\r\n你也可以在规则中的端口段设置一系列的端口,而不只是一个。用冒号分隔起始和结束。例如下面的规则将对来自1024-2048的所有UDP包告警:\r\nalert udp any 1024:2048 -> any any (msg: “UDP ports”\r\n3.5.4.2 上限与下限\r\n你可以仅用一个起始端口号或结束端口号来表示端口列表,例如:1024表示比1024小,包含1024的所有端口,1000:表示比1000大,包括1000的所有端口。\r\n3.5.4.3 否定符\r\n与地址段相同,你也可以在Snort规则中的端口段用否定符号来排除一个或多个端口。下面的规则将记录除了53段口外的其它所有UDP通信。\r\nlog udp any !53 -> any any log udp\r\n但是你不能用逗号来分隔多个端口,如53,54这样的表示是不允许的,但是你可以用53:54来表示一个端口范围。\r\n3.5.4.4 共用端口号。\r\n共用端口号是提供给一些公用应用的,表3-1列举了其中一些及应用。\r\n \r\n端口号        描述           \r\n20        FTP数据           \r\n21        FTP           \r\n22        SSH或安全Shell           \r\n23        Telnet           \r\n25        SMTP或类似于Sendmail的e-mail服务器           \r\n37        NTP(网络时钟协议,用来同步网络主机时间)           \r\n53        DNS 服务器           \r\n67        BootP/DHCP客户端           \r\n68        BootP/DHCP服务器           \r\n69        TFTP           \r\n80        HTTP,web服务器           \r\n110        POP3,供类似于OE的邮件客户端使用           \r\n161        SNMP           \r\n162        SNMP trap           \r\n443        HTTPS或安全HTTP           \r\n514        Syslog         \r\n\r\n在UNIX平台上,你可以查看/etc/services文件,可以看到更多的端口的定义。RFC 1700中包含详细列表。目前ICANN负责管理这些端口号,你可以在http://www.icann.org获得更多信息。\r\n3.5.5 方向段\r\n在Snort规则中,方向段确定源和目的。下面是方向段的相关规定:\r\n->表示左边的地址和端口是源而右边的是目的。\r\n<-表示右边的地址和端口是源而左边的是目的。\r\n<>表示规则将被应用在两个方向上,在你想同时监视服务器和客户端的时候,可以用到这个标示。例如,你可以监视往来POP或者Telnet服务器的数据流。

论坛徽章:
1
丑牛
日期:2015-01-07 15:25:00
34 [报告]
发表于 2006-10-09 23:09 |只看该作者
3.6 规则选项\r\n        Snort规则的选项在头部的后面,在一对圆括号里面,其中可能包含一个选项,也可能包含用分号分隔的多个选项,这些选项的关系是逻辑与的关系,只有当选项中的条件都满足的时候,规则动作才会被执行。在前面的例子中,你已经来规则中应用了msg和ttl的选项。所有的选项都是由关键字来定义的,一些选项中还会包含变量值。一个选项包含两个主要部分:一个关键字和变量值。关键字和变量值由冒号分隔。如你前面看到的:\r\nmsg: \"Detected confidential\";\r\n        在这个选项中,关键字是msg, 而\"Detected confidential\"是变量值。\r\n        本部分的后面将叙述在Snort规则的选项部分的各种关键字:

论坛徽章:
1
丑牛
日期:2015-01-07 15:25:00
35 [报告]
发表于 2006-10-09 23:10 |只看该作者
3.6.1 关键字ack\r\n        Tcp头部中包含一个32位的Acknowldege Number字段,这个字段表示希望对端发送的下一个Tcp包的序列号。仅当TCP头部的ACK标志位被设为1的时候,这个字段才起作用。关于TCP头部的详细资料,参考附录C或者RFC 793。\r\n        类似于nmap的工具用TCP头部的这个特征来扫描计算机,例如,在这些工具所用的技术中,它们向目标主机发送至80端口,ACK标志为1,序列号为0的TCP包,这样目标主机就不会接受这个包,并发回一个RST标志为1的包,当nmap受到这个包的时候,就知道那台主机是存在的。当目标主机不对ICMP做出回应的时候,这个方法可以起到作用。\r\n        为了探测到这种TCP ping,你可以用类似于下面的规则来产生告警信息:\r\n                alert tcp any any -> 192.168.1.0/24 any (flags: A; \\\r\nack: 0; msg: \"TCP ping detected\"\r\n   这条规则的作用是在当你收到标志位A为1而acknowledgement段的值为0的TCP包的时候,发送一个告警信息。表3-2列举了其他的TCP标志位。在本规则中,定义包的目的是192.168.1.0/24,你可以用其它的值。关键字ack基本上用来探测这种类型的攻击,一般情况下,如果A位为1,Ack的值是不等于0的。

论坛徽章:
1
丑牛
日期:2015-01-07 15:25:00
36 [报告]
发表于 2006-10-09 23:10 |只看该作者
3.6.2 关键字classtype \r\nSnort规则可以分配类别和优先级以便区分,为全面了解关键字classtype,首先我们来看被snort.conf用include关键字所引用的classifacation.config文件,该文件的每一行都遵循下面的语法:\r\nconfig classification: name,description,priority\r\n其中name用来表示类别名称,在Snort规则中用classtype关键字来指定,description是对类别的简单描述。Priority是这个类别的默认优先级,用数字表示,并可以在Snort选项中用关键字priority改变。你也可以把这些语句放在snort.conf中。下面是一个例子:\r\nconfig classification: DoS,Denial of Service Attack,2\r\n        上面的一行中,定义了一个类别DoS,其优先级为2。在第6章中,你将看到在基于web的Snort分析工具ACID中用到这个类别。现在让我们在规则中应用这个类别,如下例,优先级为默认值:\r\nalert udp any any -> 192.168.1.0/24 6838 (msg:\"DoS\"; \\\r\ncontent: \"server\"; classtypeoS\r\n我们改变这个规则,可以覆盖默认优先级:\r\nalert udp any any -> 192.168.1.0/24 6838 (msg:\"DoS\"; \\\r\ncontent: \"server\"; classtypeoS; priority:1)\r\n        分类和优先级的意义在于,我们可以了解告警是否紧急,这在我们要对威胁性高的告警提高警惕的时候非常有用。

论坛徽章:
1
丑牛
日期:2015-01-07 15:25:00
37 [报告]
发表于 2006-10-09 23:10 |只看该作者
如果你看到在第6章中讨论的ACID浏览器窗口,就可以看到图3-3中所示的classifacation栏,在窗口中间的第二列是所捕获数据包的分类。其他的一些分析工具也用关键字classification来区分入侵行为的类别。典型的classification.conf文件如下所示,这个文件与Snort1.9.0共同发行,你可以在这个文件中增加自己的分类并在自己的规则中应用。\r\n# $Id: classification.config,v 1.10 2002/08/11 23:37:18 cazz Exp $\r\n# The following includes information for prioritizing rules\r\n#\r\n# Each classification includes a shortname, a description, and a\r\ndefault\r\n# priority for that classification.\r\n#\r\n# This allows alerts to be classified and prioritized. You can specify\r\n# what priority each classification has. Any rule can override the\r\ndefault\r\n# priority for that rule.\r\n#\r\n# Here are a few example rules:

论坛徽章:
1
丑牛
日期:2015-01-07 15:25:00
38 [报告]
发表于 2006-10-09 23:10 |只看该作者
#\r\n# alert TCP any any -> any 80 (msg: \"EXPLOIT ntpdx overflow\";\r\n# dsize: > 128; classtype:attempted-admin; priority:10;\r\n#\r\n# alert TCP any any -> any 25 (msg:\"SMTP expn root\"; flags:A+; \\\r\n# content:\"expn root\"; nocase; classtype:attempted-recon\r\n#\r\n# The first rule will set its type to \"attempted-admin\" and override\r\n# the default priority for that type to 10.\r\n#\r\n# The second rule set its type to \"attempted-recon\" and set its\r\n# priority to the default for that type.\r\n#\r\n#\r\n# config classification:shortname,short description,priority\r\n#\r\nconfig classification: not-suspicious,Not Suspicious Traffic,3\r\nconfig classification: unknown,Unknown Traffic,3\r\nconfig classification: bad-unknown,Potentially Bad Traffic, 2\r\nconfig classification: attempted-recon,Attempted Information Leak,2\r\nconfig classification: successful-recon-limited,Information Leak,2\r\nconfig classification: successful-recon-largescale,Large Scale\r\nInformation Leak,2\r\nconfig classification: attempted-dos,Attempted Denial of Service,2\r\nconfig classification: successful-dos,Denial of Service,2\r\nconfig classification: attempted-user,Attempted User Privilege Gain,1\r\nconfig classification: unsuccessful-user,Unsuccessful User Privilege\r\nGain,1\r\nconfig classification: successful-user,Successful User Privilege Gain,1\r\nconfig classification: attempted-admin,Attempted Administrator\r\nPrivilege Gain,1\r\nconfig classification: successful-admin,Successful Administrator\r\nPrivilege Gain,1\r\n# NEW CLASSIFICATIONS\r\nconfig classification: rpc-portmap-decode,Decode of an RPC Query,2\r\nconfig classification: shellcode-detect,Executable code was detected,1\r\nconfig classification: string-detect,A suspicious string was detected,3\r\nconfig classification: suspicious-filename-detect,A suspicious filename\r\nwas detected,2\r\nconfig classification: suspicious-login,An attempted login using a\r\nsuspicious username was detected,2\r\nconfig classification: system-call-detect,A system call was detected,2\r\nconfig classification: tcp-connection,A TCP connection was detected,4\r\nconfig classification: trojan-activity,A Network Trojan was detected, 1\r\nconfig classification: unusual-client-port-connection,A client was\r\nusing an unusual port,2\r\nconfig classification: network-scan,Detection of a Network Scan,3\r\nconfig classification: denial-of-service,Detection of a Denial of\r\nService Attack,2\r\nconfig classification: non-standard-protocol,Detection of a nonstandard\r\nprotocol or event,2\r\nconfig classification: protocol-command-decode,Generic Protocol Command\r\nDecode,3\r\nconfig classification: web-application-activity,access to a potentially\r\nvulnerable web application,2\r\nconfig classification: web-application-attack,Web Application Attack,1\r\nconfig classification: misc-activity,Misc activity,3\r\nconfig classification: misc-attack,Misc Attack,2\r\nconfig classification: icmp-event,Generic ICMP event,3\r\nconfig classification: kickass-porn,SCORE! Get the lotion!,1\r\nconfig classification: policy-violation,Potential Corporate Privacy\r\nViolation,1\r\nconfig classification: default-login-attempt,Attempt to login by a\r\ndefault username and password,2

论坛徽章:
1
丑牛
日期:2015-01-07 15:25:00
39 [报告]
发表于 2006-10-09 23:10 |只看该作者
3.6.3关键字content\r\nSnort的一个重要特征就是它可以在包的里面发现数据特征,这些特征可能以ASCII字符的形式出现,也可能是16进制字符所表示的二进制数据。如同病毒,入侵者的行为也通常会在数据包中表现某种特征,关键字content就使用来发现这些特征的。Snort1.x版本不支持应用层协议,但是用content与offset关键字联合使用,也可以找到应用层的数据。\r\n下面的规则可以检测离开网络192.168.1.0并在数据段含有“GET”的TCP包。在HTTP相关的攻击中,GET是经常被用到的一个关键字。然而,这个规则仅仅能够使你了解如何用关键字content来工作。\r\nalert tcp 192.168.1.0/24 any -> ![192.168.1.0/24] any \\\r\n(content: \"GET\"; msg: \"GET matched\"\r\n以下的规则作用与上面一条相同,但是特征以16进制表示。\r\nalert tcp 192.168.1.0/24 any -> ![192.168.1.0/24] any \\\r\n(content: \"|47 45 54|\"; msg: \"GET matched\"\r\n16进值的数字47与ASCII字符G的值相等,45与E相等,54与T相等。你可以在同一条规则中同时用ASCII和16进制来进行特征比对。用16进值表示时,应当用双竖线||将字符包括进去。\r\n在用content关键字的时候,要记住以下的原则:\r\n内容比对是

论坛徽章:
1
丑牛
日期:2015-01-07 15:25:00
40 [报告]
发表于 2006-10-09 23:50 |只看该作者
3.6.34 \r\n3.7Snort配置文件\r\nSnort通过配置文件来完成启动配置,例如下面的启动命令:\r\n/opt/snort/snort -c /opt/snort/snort.conf\r\n配置文件包括6个基本的部分:\r\n\r\n变量定义,变量用于Snort规则和其他的目的,比如规则文件的路径。\r\n配置参数,指定Snort配置的选项,其中有些参数也可以用在命令行中。\r\n预处理器配置。用来在探测引擎执行特定的动作前对包进行处理。\r\n输出模块配置。控制如何记录数据。\r\n定义新的动作类型。如果预定义的动作类型不能够满足你的要求你可以在配置文件中自定义动作。\r\n规则配置和引用文件。尽管你可以在snort.conf中定义规则,将规则放在不同的文件中还是更加方便管理。你可以用关键字include来指定你所引用的规则文件。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP