我正在尝试了解iptables
NFQ 如何与snort
。
我之所以问这个问题是因为据我所知snort
可以通过 NFQ 设置为 IPS,但如果你iptables
那里有防火墙规则,那么我的问题是我想要做的是丢弃与以下规则匹配的数据包(为了便于阅读而拆分):
drop tcp any any -> $HOME_NET 80
(flags:S; msg:"Possible TCP Dos Be Careful !!"; flow:stateless;
detection_filter: track by_dst, count 70, seconds 10;
sid:10001;rev:1;)
对此的警告是,它iptables
似乎还能够根据规则丢弃数据包,所以如果这是真的,那么我想问的是,在运行 snort 时,它如何根据我的配置协同工作(见下文)?
vim /usr/local/snort/etc/snort.conf
config daq: nfq
config daq_mode: inline
config daq_var: queue=0
iptables --append FORWARD --jump NFQUEUE --queue-num 0
/usr/local/snort/bin/snort -m 027 -d -l /var/log/snort \
-u snort -g snort -c /usr/local/snort/etc/snort.conf \
-Q -S HOME_NET=[192.168.1.0/24]
答案1
好吧,我是一个普通的 Snort 用户,我会尝试分步向您提供更多有关此内容的信息:
- 使用 nfq 作为 daq 启动 snort 实例;
- 然后你创建一个规则具有 NFQUEUE 目标的 iptables/ip6tables,该规则将包发送到用户空间,以便 snort 可以对其进行分析;
您必须知道一些重要的事情(我已在 seclist 邮件列表中读到过):
- iptables中的规则必须在启动snort实例后创建;
- 规则发送到用户空间后,snort 会发出任何链中后续的 iptables 规则将被忽略;
- 使用 nfq 的 Snort 因为 daq 不能同时分析 ipv4 和 ipv6 流量,所以您必须使用 iptables 和 ip6tables 创建规则,并且每个规则都应该发送到一个 snort 实例(我不确定他们是否可以将包发送到同一个队列);