编辑规则
-------------------------------------------------------------------------------- CuteSniffer 允许用户设定用于分析网络信息的规则. 一旦发现与某一规则相符合的信息包, CuteSniffer 可发出警告信息来通知网络管理人员. CuteSniffer 的规则利用了目前较为流行的 Snort规则描述语言(rules description language). 这一语言的特点是简单, 实用. 很容易为管理人员掌握. 而且有很多公共的数据库提供现成的规则. 因此管理人员很容易根据自己的需要找到解决方案 (如对抗新出现的病毒). 利用这种语言使我们不但可对信息的来源地址, 端口进行分析; 同时也可对信息的内容进行分析 (如是否含有某些关键词). 关于规则的解释请访问 www.snort.org. CuteSniffer 的规则由两部分组成, 规则的端部和规则的设定部. 而规则的设定部又由若干个设定单元所组成. 以下是规则的一般表达式. H (O1; O2; ...) 其中 H 表示规则的端部, 括号内是规则的设定部, 其中 O1, O2 等表示设定单元, 单元之间以分号隔开. 以下是二个 CuteSniffer 规则的例子: tcp any any -> any 21 (msg:"FTP DELE overflow attempt";content:"DELE "; nocase; content:!"|0a|"; within:100;) tcp any any -> any 21 (msg:"FTP CWD ~root attempt"; content:"CWD "; content:" ~root"; nocase;) 用户可利用规则管理器进行规则的编辑. 首先点击工具拦中的 规则管理器 按键, 或选择 设定 -> 规则管理... 菜单, 来起动规则管理器. CuteSniffer 将所有规则接功能分为 27 个组, 每个组中含有若干预设的规则. 用户可根据自已的需要激活某些规则 (点击规则名称前的方格). 用户可以新增或修改任一组中的规则. 方法是先在左边的列表中选择一组规则, 然后按下 新增 或 修改 按钮. 接着在对话窗中设定规则的名称, 规则的端部和设定部. 规则的端部 规则的端部定义信息包应有的协议, 来源地址, 来源端口, 方向, 终点地址和终点端口. 1. 协议: 可取的值包括: tcp, udp, icmp, and ip. 2. IP 地址: 你可在来源地址和终点地址 的项目中输入特定的 IP 地址. 也可输入 "any" 表示信息包含任何地址都符合本规则对地址的要求. 如果你想定义一个地址 范围则可在地址后加一掩码(Mask), 可取的掩码有 /24, 指 Class C 网络; /16, 指 Class B 网络. 例如, 216.104.129.100/24 包括了从 216.104.129.1 到 216.104.129.255 的所有地址. 如果你想定义数个不相连的地址, 则可在 一方括号内将所有地址列出, 地址之间用逗号分开, 如下面的例子所示. tcp [216.104.129.0/24,10.1.1.0/24] any -> any 111 (content: "|00 01 86 a5|"; msg: "external mounted access";) 如果你想设定信息包不应含有某些地址, 则可在这地址前加一 '!' 符号. 如下例所示, tcp !216.104.129.0/24 any -> any any (flags:S+; msg:"SYN packet";symbol:"SYN";) 最后你可为常用的地址设立一地址变量, 然后直接输入地址变量. 注意地址变量的第一个字母必须是 '$'. 3. 端口: 你可在来源端口 和终点端口拦目中输入信包应具有的端口编号或者 "any" 表示任何端口皆可. 如果你想定义一个端口的范围, 则可在两端口编号间加一冒号, 例如: 1:200 表示端口从 1 到 200, :60 意味着所有小于或等于 60 的端口, 500: 则表示所有大于或等于 500 的端口. 4. 方向: 可取的值是 '->' 和 '<>'. 选择 '->' 意味着信息包的地址与端口必须与规则的相应地址与端口符合, 即信息包的来源地址 与规则的来源地址符合, 信息包的来源端口也须要与规则的来源端口符口, 对终点地址和终点端口也有相同的要求. 如果方向的取值是 '<>' 时则信息包的地址和端口要符合以上要求或者反向地符含以义上要求, 即信息包的 来源地址与规则的终点地址符合, 来源端口和规则的终点端口符合, 信息包的终点地址与规则的来源地址相符含, 而终点端口与规则的来源端口一致. 规则设定 规则设定部由一个或多个设定单源所组成, 而每一设定单元又由关键词和参数两部分组成, 关键词与参数之间用冒号分开. 每个设定单元必须以分号做为终结. 以下是各个可取的关键词及其参数: 1. msg - 对规则的一个简单描述其参数为一字符串 例如, msg: "SYN packet". 2. ttl - 检测 IP 端部中 的 TTL. 其参数是一数字. 在参数之前可加入以下运算符, ! (不等), > (大于), < (小于), >= (大于或等于), <= (小于或等于). 如无运算符则意味着相等. 3. tos - 检测 IP 端部中 的 TOS. 其参数是一数字. 在参数之前可加入以下运算符, ! (不等), > (大于), < (小于), >= (大于或等于), <= (小于或等于). 如无运算符则意味着相等. 4. id - 检测 IP 端部中 的 fragment ID field. 其参数是一数字. 在参数之前可加入以下运算符, ! (不等), > (大于), < (小于), >= (大于或等于), <= (小于或等于). 如无运算符则意味着相等. 5. ipoption - 检测 IP 端部中 的 IP option fields. 以下是其参数可取的值: rr - Record route eol - End of list nop - No op ts - Time Stamp sec - IP security option lsrr - Loose source routing ssrr - Strict source routing satid - Stream identifier 6. fragbits - test the fragmentation bits of the IP header. There are three bits that can be checked, the Reserved Bit (R), More Fragments (M) bit, and the Don't Fragment (D) bit. You can use '+' or '-' to indicate a bit is set or no. You can also test one or more bits. For example, R+M- means to match Reserved Bit on and More Fragments bit off; D- matches Don't Fragment bit is no set. 7. dsize - 检测信息包的信息容量 (packet's payload size). 其参数是一数字. 在参数之前可加入以下运算符, ! (不等), > (大于), < (小于), >= (大于或等于), <= (小于或等于). 如无运算符则意味着相等. 8. flags - 检测 TCP 端部中的TCP flags for certain values. There are six bits that can be checked, F - FIN S - SYN R - RST P - PSH A - ACK U - URG You can use '+' or '-' to indicate a bit is set or no. You can also test one or more bits. For example, F+A- means to match FIN Bit on and ACK bit off; P- matches PSH bit is no set. 9. seq - 检测信息包的 TCP 序列号 (TCP sequence number). 其参数是一数字. 在参数之前可加入以下运算符, ! (不等), > (大于), < (小于), >= (大于或等于), <= (小于或等于). 如无运算符则意味着相等. 10. ack - 检测信息包的 TCP 确认号 (TCP acknowledgement). 其参数是一数字. 在参数之前可加入以下运算符, ! (不等), > (大于), < (小于), >= (大于或等于), <= (小于或等于). 如无运算符则意味着相等. 11. itype - 检测 ICMP type field. 其参数是一数字. 在参数之前可加入以下运算符, ! (不等), > (大于), < (小于), >= (大于或等于), <= (小于或等于). 如无运算符则意味着相等. 12. icode - 检测 ICMP code field. 其参数是一数字. 在参数之前可加入以下运算符, ! (不等), > (大于), < (小于), >= (大于或等于), <= (小于或等于). 如无运算符则意味着相等. 13. icmp_id - 检测 ICMP ECHO ID. 其参数是一数字. 在参数之前可加入以下运算符, ! (不等), > (大于), < (小于), >= (大于或等于), <= (小于或等于). 如无运算符则意味着相等. 14. icmp_seq - 检测 ICMP ECHO 序列号 (sequence number). 其参数是一数字. 在参数之前可加入以下运算符, ! (不等), > (大于), < (小于), >= (大于或等于), <= (小于或等于). 如无运算符则意味着相等. 15. content - 查找信息包中是 否含有某一特定内容. 其参数为一字符串, 内容中如含有二进制数码则应将其转换成六进制并用 (|) 分隔, 例如, content:"|90C8 C0FF FFFF|/bin/sh". 16. offset - 用于 content 之后, 其参数为一数字, 指示查找的起始位置. 17. depth - 用于 content 之后, 其参数为一数字, 指示查找的深度. 18. nocase - 用于 content 之后, 无参数. 指示查找时不区分字母大小写. 19. ip_proto - IP header 的协议号码, 其参数为一数字. 20. sameip - 检测信息包的来源地址是否等于其终点地址无参数. 21. distance - 用于两 content 之间, 指示两字符串之间的矩离. 其参数为一数字. 22. within - 用于两 content 之间, 指示两字符串必须在一定矩离之内. 其参数为一数字. 23. tcpres - 检测 TCP reserved field. 其参数是一数字. 在参数之前可加入以下运算符, ! (不等), > (大于), < (小于), >= (大于或等于), <= (小于或等于). 如无运算符则意味着相等. 告警设定 用户可以设置告警, 当与某一规则相符合的信息包被俘获时, CuteSniffer 可发出告警声音, 显示告警信息和发出电子邮件. 告警的设定可按如下步聚进行. 1. 首先点击工具拦中的 规则管理器 按键, 或选择 设定 -> 规则管理... 菜单, 来起动规则管理器. 2. 选择你想设置告警的规则 3. 按下 告警设置 按键 4. 在告警对话窗口中输入以下信息: 引发告警所须事件发生次数 - 设定在告警发生前, 需要俘获多少与规则符合的信息包. 最大告警次数 - 在关闭软件前, 最多能为这一规则发多少次告警 显示告警信息 - 将告警信息显示在告警视窗中. 声音 - 发出告警声音 发电子邮件 - 发送电子邮件, 你需要输入以下数据: 电子邮件服务器, 发件和收件地址. |
|