http://www.pcdog.com 未知 2005-9-4 点击数:263
Snort并不难用,但是它有许多命令行选项要对付,而且哪些选项应该配合使用并不明显 ,本文目标是让新手容易使用snort。 首先,让我们从基础开始。如果你只是想把包的头打印到屏幕上,就输入: ./snort -v 这个命令将运行snort 并且把ip和tcp/udp/icmp头显示在屏幕上,其他都不干。如果你想 看解 <script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> width="336" scrolling="no" height="280" frameborder="0" name="google_ads_frame" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1572879403720716&dt=1172054758780&lmt=1132559744&alternate_ad_url=http://www.pcdog.com/js/336.htm&prev_fmts=468x60_as&format=336x280_as&output=html&url=http://www.pcdog.com/network/html/2004831/318200411721_1.htm&color_bg=F7F7F7&color_text=000000&ad_type=text_image&ref=http://www.google.com/search?hl=zh-CN&q=snort%E7%9A%84%E4%BD%BF%E7%94%A8&btnG=Google+%E6%90%9C%E7%B4%A2&lr=&cc=22&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=24&u_tz=480&u_his=1&u_java=true&u_nplug=7&u_nmime=16" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true"> 码后的应用层,输入: ./snort -vd 这个命令告诉snort显示包的头部和数据。如果你想显示更详细些,显示以太网帧头部, 输入: ./snort -vde (废话一句,这些开关可以分开,也可以任意组合,最后一个命令也可以输入如下: ./snort -d -v -e 一样!!) Ok,所有这些命令都很酷,但是他们实际上不在磁盘上记录任何包,为了记录,你需要指定一个日志目录: ./snort -dev -l ./log 当然,这假设你在当前目录下有一个名为"log"的目录 如果你只指定"-l"开关,你会注意到snort有时会记录远端计算机的的包,有时则记录本地主机的包。为了记录本地主机,你需要告诉snort哪个网络是本地网络(home network): ./snort -dev -l ./log -h 192.168.1.0/24 这个规则告诉snort你希望把以太帧头和应用层数据记录到目录./log中,并且你希望记录的包是192.168.1.0的 c类网络上的。所有的进入此网络的包都被记录在log目录的子目录下,这些子目录的名字基于远端主机(非192.168.1)的地址。注意如果两个主机都在本地网络上,那么子目录的名字基于两个端口号的大者,如果一样大,就取源地址。 如果你想使用一个规则文件(这样就不会把所有的包都记录下来了),输入: ./snort -dev -l ./log -h 192.168.1.0/24 -c snort-lib 其中snort-lib是你的规则文件的名字。该文件中的规则集将被使用来决定每个包是否被记录。 要注意的是:如果snort要 作为一个ids长期运行,命令中的-v开关要去掉,因为打印到屏幕会降低速度,在显示到屏幕上时可能会丢包。 对于大多数应用,也不必要记录以太帧头部,所以一般使用snort的开关如下: ./snort -d -h 192.168.1.0/24 -l ./log -c snort-lib 如果你想处理tcpdump(或者shadow ids)产生的文件,除了正常的选项外,再加上"-r"开关。这个开关告诉snort从指定的文件读取包,而不是从网络上取包。这样就可以利用snort 的规则检查tcpdump(或者shadow ids)产生的文件的内容。例如: ./snort -d -h 192.168.1.0/24 -l ./log -c snort-lib -r tcpdump_file 有人不喜欢snort施加规则的默认顺序,其默认顺序是:首先应用alert规则,然后是pass最后是log规则。这个顺序有些违反人的直觉,但能够避 免一些错误:例如你写了100条alert规则,然后不小心用一条pass规则把它们都废球掉了,多亏啊。对于自信的人,用-o开关改变默认的规则使用顺 序,首先是pass,然后是alert,最后是log。如下: ./snort -d -h 192.168.1.0/24 -l ./log -c snort-lib -o 最后(到目前为止),如果你想把alert消息传送到syslog中,你可以使用-s开关,如下: ./snort -d -h 192.168.1.0/24 -l ./log -c snort-lib -s 这样,当警告产生时,它们将出现在syslog中,而不是alert文件中。 性能配置 如果你希望snort跑的快一些(跟的上100M的网络),使用-b和-A或者-s(syslog)选项。这样将按照tcpdump的格式记录日志,并产生最少的警告。例如: ./snort -b -A fast -c snort-lib 这样,snort能够记录一个100 Mbps的LAN在饱和速度(大约80mbps)下多个同时的探测和攻击事件。这时日志被按照二进制格式记录在tcpduam格式的snort日志文件中。要读这个文件,用-r开关: ./snort -d -c snort-lib -l ./log -h 192.168.1.0/24 -r snort.log 这样,所有的数据都会存在日志目录中,就象正常的解码后的格式一样 。