我从源代码安装了snort-2.9.7,并以IDS身份启动:
% snort -devQ -A console -c /etc/snort/snort.conf -i eth0:eth1 Enabling inline operation Running in IDS mode ...
configuration文件是非常微不足道的:
# var RULE_PATH rules # Set up the external network addresses. Leave as "any" in most situations ipvar EXTERNAL_NET any # Setup the network addresses you are protecting ipvar HOME_NET [10.10.10.0/24] config daq: afpacket config daq_mode: inline config policy_mode:inline include $RULE_PATH/icmp.rules
icmp.rules中的规则也很简单,用于testing目的:
block icmp 10.10.10.2 any <> 10.10.10.1 any (msg:"Blocking ICMP Packet from 10.10.10.2"; sid:1000001; rev:1;)
在运行Snort的主机上,eth0接口的地址为10.10.10.1,但是当我从另一台主机发送ping 10.10.10.1时,icmp数据包不会被Snort丢弃,icmp会生成:
WARNING: No preprocessors configured for policy 0. 02/27-15:04:40.623763 [Drop] [**] [1:1000001:1] Blocking ICMP Packet from 10.10.10.2 [**] [Priority: 0] {ICMP} 10.10.10.2 -> 10.10.10.1
警告是什么意思? 难道我做错了什么?
用下面的代替你的icmp规则:
reject icmp 10.10.10.2 any <> 10.10.10.1 any (msg:"Blocking ICMP Packet from 10.10.10.2"; sid:1000001; rev:1;)
请注意,没有snort规则操作称为块 。 使用拒绝或放弃 。 有关更多信息,请参阅此手册页 。
更新:
我不确定你可以在你的snort
命令中join多个接口。 尝试运行两个snort
实例,一个用于每个networking接口,或者使用在此解释的其他方法。