分类: LINUX
2008-04-23 08:08:49
snort是一款最重要的开源网络入侵检测系统,基本上意味着它留意坏的通讯并给你提供警告,它始终保存你读取原始tcpdump内容的输出,Debian用户可以通过apt-get install snort来获取它,默认情况下,它将网络接口设置为混杂模式,也就是说,所有在线路上的数据包都被检查。
如果你正在尝试保护一个网络,通常你的snort传感器应该放在主路由器的SPAN端口上,这样它就能查看到所有经过那个路由器的网络通讯内容。(SPAN端口提供了所有经过路由器的通讯的一个总和)如果你正在尝试保护一个单独的主机,只需要在主机上简单地按照它即可。
Snort依靠一个规则数据库来检查数据包,/etc/snort/rules/bad-traffic.rules中有一个例子标记出了一个tcp端口号为0的无效通讯:
alert tcp $EXTERNAL_NET any <> $HOME_NET 0 (msg:"BAD-TRAFFIC tcp port 0 traffic"; flow:stateless; classtype:misc-activity; sid:524; rev:8;) |
snort将它的警告信息记录到一个文件中,典型地是/var/log/snort/alert,看起来象是这样,表明一个策略规则已经生效,因为来自Google Desktop用户代理的web通讯被观察到了:
[**] [1:2002801:3] BLEEDING-EDGE WEB Google Desktop User-Agent Detected [**] [Classification: Potential Corporate Privacy Violation] [Priority: 1] 11/02-11:27:58.855143 10.0.0.82:3449 -> 66.35.250.209:80 TCP TTL:128 TOS:0x0 ID:35935 IpLen:20 DgmLen:399 DF ***AP*** Seq: 0x847921EE Ack: 0x1A7D5C20 Win: 0xFFFF TcpLen: 20 [Xref => ] Snort也能被配置为记录匹配tcpdump格式的数据包,如下: # log_tcpdump: log packets in binary tcpdump format # ------------------------------------------------- # The only argument is the output file name. # output log_tcpdump: tcpdump.log |
当上面的选项生效后,snort将记录与tcpdump文件匹配的数据包并将其保存到警告文件中,这样就允许你更容易地判断哪个警告是需要担心的哪个警告是错误的警告,你可以象下面这样来阅读它们:
# tcpdump -r /var/log/snort/tcpdump.log.1161106015 reading from file /var/log/snort/ ↪tcpdump.log.1161106015, link-type EN10MB (Ethernet) 06:37:50.839942 IP 10.0.0.82.1410 > 10.10.218.95.www: P 2352360050:2352360119(69) ack 1723804156 win 65535 06:53:07.792492 IP 10.0.0.82.1421 > 10.10.218.95.www: P 2124589760:2124589829(69) ack 2684875377 win 65535 ... |
如果你象查看数据包的内容,使用-X参数,tcpdump –X –r /var/log/snort/tcpdump.log.1161106015,snort也有一些功能来中断基于规则匹配(灵活的响应)的连接,也有许多第三方的规则,可以在找到。