由于我们希望保护网络免受恶意流量的侵害,因此我们考虑在路由器上设置 snort。出于测试原因,我构建了一个系统来复制由我的主机和两台虚拟机组成的网络架构。主机在网络中192.168.57.0/24
。虚拟机 1(带有 snort)在网络中192.168.57.0/24
,eth1
而 虚拟机 2 在网络169.254.161.0/24
中。eth2
169.254.161.0/24
eth1
所有机器上的路由设置都正确,以便从主机到 VM 2 可以双向 ping 操作。
VM1网络配置:
auto eth1
iface eth1 inet manual
up ifconfig $IFACE 192.168.57.101 up
up ip link set $IFACE promisc on
post-up ethtool -K $IFACE gro off
post-up ethtool -K $IFACE lro off
down ip link set $IFACE promisc off
down ifconfig $IFACE down
auto eth2
iface eth2 inet manual
up ifconfig $IFACE 169.254.161.237 up
up ifconfig $IFACE 0.0.0.0 up
up ip link set $IFACE promisc on
post-up ethtool -K $IFACE gro off
post-up ethtool -K $IFACE lro off
down ip link set $IFACE promisc off
down ifconfig $IFACE down
/etc/snort/snort.conf:
var RULE_PATH /etc/snort/rules
config daq: afpacket
config daq_mode: inline
config daq_var: buffer_size_mb=1024
config policy_mode: inline
preprocessor normalize_ip4
preprocessor normalize_tcp: ips ecn stream
preprocessor normalize_icmp4
preprocessor normalize_ip6
preprocessor normalize_icmp6
include $RULE_PATH/local.rules
/etc/snort/rules/local.rules:
drop udp any any -> any any (msg:"UDP Traffic"; rev:1;sid:1;)
/proc/sys/net/ipv4/ip_forward
设置为 1。
当我运行 snortsnort -i eth1:eth2 -c /etc/snort/snort.conf -Q -A console
并从我的主机发送 UDP 数据包到 VM 2 时,snort 显示以下输出:
12/04-10:18:59.694958 [Drop] [**] [1:1:1] UDP Traffic [**] [Priority: 0] {UDP} 192.168.57.1:44625 -> 169.254.161.236:5050
12/04-10:18:59.694910 [Drop] [**] [1:1:1] UDP Traffic [**] [Priority: 0] {UDP} 192.168.57.1:44625 -> 169.254.161.236:5050
但数据包到达 VM 2 并且没有被丢弃。
根据我找到的所有资料,配置应该没问题,而且可以正常工作。因此我不知道为什么数据包仍在转发。
有什么建议么?