当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 第一章 snort简介 snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。
 

 

    摘要:   对一个经验不是很丰富的攻击者而言,千辛万苦拿到系统管理权或者telnet权限以后,往往不得不面对这样尴尬的场面:那倒权限有什么用处?前一阵出现unicode漏洞以后,各种网站出现很多利用unicode漏洞查看服务器目录、文件内容等文章,这些文章往往详细介绍检测unicode漏洞、利用该漏洞查看系统信息、文件目录结构等内容,很多学习者可以根据这些文章达到查看目录的目的,至于其他,就不了了之......
 ·如何清洗cpu风扇    »显示摘要«
    摘要:   忽然有那么一天,我打开电脑,就听见机箱里传出“轰隆隆”的巨响,没错!就是“轰隆隆”的声音,就和一架鼓风机的声音效果差不多……   虽然说这个cpu风扇是当初配机时赠送的,因为当时贪便宜,所以也没有另外再给我的赛扬买一个新的风扇,现在看来这笔钱是省不下了。所以,既然要再买新的风扇,到不如先把旧的拆下来摆弄摆弄,就算坏了也不心疼,如果摆弄好的话还可以省下那点“小钱”,呵呵。   首先,要......


多功能防御工具Snort用户完全手册

  第一章 snort简介 【程序编程相关:TopTenTrapsinC#forC+

【推荐阅读:TopTenTrapsinC#forC+

  snort有三种工作模式:嗅探器.数据包记录器.网络入侵检测系统.嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上.数据包记录器模式把数据包记录到硬盘上.网路入侵检测模式是最复杂的,而且是可配置的.我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作. 【扩展信息:TopTenTrapsinC#forC+

  

  嗅探器

  所谓的嗅探器模式就是snort从网络上读出数据包然后显示在你的控制台上.首先,我们从最基本的用法入手.如果你只要把tcp/ip包头信息打印在屏幕上,只需要输入下面的命令:

  

    ./snort -v

  

  使用这个命令将使snort只输出ip与tcp/udp/icmp的包头信息.如果你要看到应用层的数据,可以使用:

  

    ./snort -vd

  

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

  

    ./snort -vde

  

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

  

    ./snort -d -v –e

  

  数据包记录器

  

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

  

    ./snort -dev -l ./log

  

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

  

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

  

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

  

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

  

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

  

    ./snort -l ./log -b

  

  注意此处的命令行与上面的有很大的不同.我们勿需指定本地网络,因为所有的东西都被记录到一个单一的文件.你也不必冗余模式或者使用-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

  

  网络入侵检测系统

  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选项.

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

  

  使用默认的日志方式(以解码的ascii格式)并且把报警发给syslog:

  

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

  

  使用二进制日志格式与smb报警机制:  

  

  ./snort -c snort.conf -b -m workstations

  

  第二章 编写snort 规则

  基础

  snort使用一种简单的,轻量级的规则描述语言,这种语言灵活而强大.在开发snort规则时要记住几个简单的原则.

  

  第一, 大多数snort规则都写在一个单行上,或者在多行之间的行尾用/分隔.snort规则被分成两个逻辑部分:规则头与规则选项.规则头包含规则的动作,协议,源与目标ip地址与网络掩码,以及源与目标端口信息;规则选项部分包含报警消息内容与要检查的包的具体部分.

  下面是一个规则范例:

  

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

  

  第一个括号前的部分是规则头(rule header),包含的括号内的部分是规则选项(rule options).规则选项部分中冒号前的单词称为选项关键字(option keywords).注意,不是所有规则都必须包含规则选项部分,选项部分只是为了使对要收集或报警,或丢弃的包的定义更加严格.组成一个规则的所有元素对于指定的要采取的行动都必须是真的.当多个元素放在一起时,可以认为它们组成了一个逻辑与(and)语句.同时,snort规则库文件中的不同规则可以认为组成了一个大的逻辑或(or)语句.

  

  规则高级概念

  includes:

  

  include允许由命令行指定的规则文件包含其他的规则文件.

  

  格式:

  

  include:

  

  注意在该行结尾处没有分号.被包含的文件会把任何预先定义的变量值替换为自己的变量引用.参见变量(variables)一节以获取关于在snort规则文件中定义与使用变量的更多信息.

  

  variables :

  

  变量可能在snort中定义.

  

  格式:

  

  var:

  

  例子:

  

  var my_net 192.168.1.0/24

  alert tcp any any -> $my_net any (flags: s; msg: "syn packet"

  

  规则变量名可以用多种方法修改.可以在"$"操作符之后定义变量."?" 与 "-"可用于变量修改操作符.

  

  $var - 定义变量.

  $(var) - 用变量"var"的值替换.

  $(var:-default) - 用变量"var"的值替换,如果"var"没有定义用"default"替换.

  $(var:?message) - 用变量"var"的值替换或打印出错误消息"message"然后退出.

  

  例子:

  

  var my_net $(my_net:-192.168.1.0/24)

  log tcp any any -> $(my_net:?my_net is undefined!) 23

  

  config

  

  snort的很多配置与命令行选项都可以在配置文件中设置.


...   下一页
 ·如何自己计算cpu的温度?    »显示摘要«
    摘要:   可能你会说电脑主板上有测温的装置,会帮你测试,如果你觉得你的主板测的很准,这篇文章你也就不用看了,不过,我相信大家都觉得那个温度偏离的也太多了,最大差别可有20度呀,呵呵。现在,我就教大家一种测试cpu的温度的方法,很准的哦。   第一步:你的cpu的输出功率多大?   这儿我给出了部分amd的athlon的输出功率:   第二步:你的风扇的功率多大?   你先看看你的处理器......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE