Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

如何编写snort的检测规则

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]
  • 4:抑制包源
  • 5:重定向(改变路径)
  • 8:回送请求
  • 11:IP分组超时
  • 12:IP分组参数有问题
  • 13:时间戳请求
  • 14:时间戳应答
  • 15:信息请求
  • 16:信息应答
  • 17:地址掩码请求
  • 18:地址掩码应答
  • 注意:拒绝服务和淹没攻击的数据包有时使用无效的ICMP类型,可以使用这个规则选项对无效的ICMP类型进行检测,也就是说,这个规则选项中的值可以不是上面所列的数值。

    格式:

    itype:;

    3.17 icode

    icode规则选项和itype非常相似,也是使用数字进行设置,具体数值见snort源代码的decode.h文件。同样,也可以使用其它的数值来检测可疑的数据包。

    格式:

    icode:;

    3.18 session

    sesion关键词是从snort-1.3.1.1版加入的,用来从TCP会话中剥离用户的数据。如果想观察用户在telnet、rlogin、ftp,甚至WEB会话过程中输入了什么,就可以使用这个规则选项。session规则选项有两个参数关键词:printable、all。使用printable,snort就会只输出可打印数据;使用all,snort就会输出所有的数据,不可打印的数据以16进制表示。不过,这个功能会大大降低snort的速度,所以不太适合大负载的情况,而且最好使用二进制日志文件格式。表15是一条记录telnet会话的规则:

    log tcp any any <> 192.168.1.0/24 23 (session: printable;)

    表15.记录可打印的telnet会话数据

    格式:

    session:[printable|all];

    3.19 icmp_id

    icmp_id规则选项用来检测ICMP回送(echo)数据包的ICMP ID号是否为一个特定的值。之所以会用到这个规则选项,是因为一些隐秘通道(covert channel)程序在通讯时使用静态的ICMP域。为了执行stacheldreht检测规则,开发了这个特别的插件,这些规则是由Max Vision(一位著名的白帽黑客,译者注)编写的。不过,它有助于检测其它一些潜在的攻击。

    格式:

    icmp_id:;

    3.20 icmp_seq

    icmp_seq规则选项用来检测一个ICMP回送包的ICMP序列号是否是一个特定的值。之所以会用到这个规则选项,是因为一些隐秘通道(covert channel)程序在通讯时使用静态的ICMP域。为了执行stacheldreht检测规则,开发了这个特别的插件,这些规则是由Max Vision编写的。不过,它有助于检测其它一些潜在的攻击。

    格式:

    icmp_seq:

    3.21 rpc

    规则选项rpc可以使snort观察RPC请求,并且自动对应用程序、过程(procedure)和程序版本进行解码。只有这三个变量都匹配时,才算成功。统配符*可以用来代替过程(procedure)和版本号。

    格式:

    rpc: ;

    例子:

    alert tcp any any -> 192.168.1.0/24 111 (rpc: 100000,*,3;msg:"RPC getport (TCP)";)
    alert udp any any -> 192.168.1.0/24 111 (rpc: 100000,*,3;msg:"RPC getport (UDP)";)
    alert udp any any -> 192.168.1.0/24 111 (rpc: 100083,*,*;msg:"RPC ttdb";)
    alert udp any any -> 192.168.1.0/24 111 (rpc: 100232,10,*;msg:"RPCsadmin";)

    表16.几条RPC报警规则

    3.22 resp

    对于匹配某个规则的数据包,可以通过resp关键词使snort的灵活反应(flexible reponse,FlexResp)机制生效。使用FlexResp插件,snort能够主动断开恶意连接。下面是这个模块的参数:

    • rst_snd:向发送方套接字发送TCP-RST数据包
    • rst_rcv:向接受方套接字发送TCP-RST数据包
    • rst_all:在两个方向上发送TCP-TST数据包
    • icmp_net:向发送方发送ICMP_NET_UNREACH数据包
    • icmp_host:向发送方发送ICMP_HOST_UNREACH数据包
    • icmp_port:向发送方发送ICMP_PORT_UNREACH数据包
    • icmp_all:向发送方发送以上各种类型的ICMP数据包

    多个参数可以结合使用,各个参数之间使用逗号隔开。

    格式:

    resp:;

    例子:

    alert tcp any any -> 192.168.1.0/24 1524 (flags:S;resp:rst_all;msg:"Root shell backdoor attempt";)
    alert udp any any -> 192.1.168.1.0/ 31 (resp:icmp_port,icmp_host;msg:"Hacker's Paradise access attempt";)

    表17.FlexResp规则

    3.23 content-list

    使用content-list关键词可以指定更多的正文字符串,突破了content规则选项只能指定单一字符串的限制。表18是一个conternt-list文件。每个要搜索的字符串占一行。这个规则选项是使用react关键词的基础。

    #adult sites
    porn
    adults
    hard core
    www.pornsite.com
    # ...

    表18.content-list文件

    格式:

    content-list:"";

    3.24 react

    react关键词是基于FlexResp(flexible response)的,它使snort对匹配某个规则的数据包作出反应。基本的反应就是阻塞用户要访问的站点,例如色情站点。snort的FlexResp插件能够主动关闭恶意连接,如果连接使用的是http或者代理服务器端口,FlexResp插件就会向浏览器发出一条HTML/JavaScript警告信息。这个规则选项可以使用下面几个参数:

    • block:关闭连接并发出注意信息
    • warn:发出警告信息
    • 这两个参数是基本参数,它们可以和下面的可选参数组合使用:
    • msg:定义要包含在警告信息中的文本
    • proxy::使用代理服务器端口发送警告信息

    可选参数使用逗号分开,react关键词应该放在选项的最后。例如:

    alert tcp any any <> 192.168.1.0/24 80 (content-list:"adults";msg:"Not for children!";react:block,msg;)

     如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



    上一篇:Linux和Solaris建立Apache的虚拟根环境   下一篇:强大的轻量级网络入侵检测系统SNORT

    文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
    更多相关文章
    Power by linux-cn.com 粤ICP备05006655号