就 snort 中的流量整形而言,iptables 如何与 NFQ 协同工作?

就 snort 中的流量整形而言,iptables 如何与 NFQ 协同工作?

我正在尝试了解iptablesNFQ 如何与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 用户,我会尝试分步向您提供更多有关此内容的信息:

  1. 使用 nfq 作为 daq 启动 snort 实例;
  2. 然后你创建一个规则具有 NFQUEUE 目标的 iptables/ip6tables,该规则将包发送到用户空间,以便 snort 可以对其进行分析;

您必须知道一些重要的事情(我已在 seclist 邮件列表中读到过):

  1. iptables中的规则必须在启动snort实例后创建;
  2. 规则发送到用户空间后,snort 会发出任何链中后续的 iptables 规则将被忽略
  3. 使用 nfq 的 Snort 因为 daq 不能同时分析 ipv4 和 ipv6 流量,所以您必须使用 iptables 和 ip6tables 创建规则,并且每个规则都应该发送到一个 snort 实例(我不确定他们是否可以将包发送到同一个队列);

相关内容