本文解释如何在第3层内联模式下使用Suricata以及如何为此目的设置iptables。
首先开始编译具有NFQ支持的Suricata。
要检查Suricata中是否启用了NFQ,请输入以下命令:
suricata --build-info
并检查功能之间是否有NFQ。
要使用NFQ模式运行suricata,您必须使用-q选项。此选项告诉Suricata它应该使用哪个队列号。
sudo suricata -c /etc/suricata/suricata.yaml -q 0
1.iptables配置
首先,要了解您希望向Suricata发送哪些流量非常重要。是通过计算机的流量或计算机生成的流量。
如果Suricata运行在网关模式,并且旨在保护该网关后面的计算机,那么正在处理第一种情况(图1):forward_ing。
如果Suricata必须保护正在运行的计算机,那么您正在处理第二种情况;host (图2).这两种使用Suricata的方法也可以组合使用。
(1)在网关场景向Suricata发送流量的最简单规则是:
sudo iptables -I FORWARD -j NFQUEUE
在这种情况下,所有转发的流量都会转到Suricata。
(2)在主机情况下,这是两个最简单的iptable规则:
sudo iptables -I INPUT -j NFQUEUE
sudo iptable s-I OUTPUT -j NFQUEUE
可以设置队列号。如果不这样做,默认情况下队列号将为0。
想象一下,你希望Suricata只检查TCP流量;你可以这样做:
sudo iptables -I INPUT -p tcp -j NFQUEUE
sudo iptables -I OUTPUT -p tcp -j NFQUEUE
或端口80上的所有传入流量或目标端口80上的所有流量,在这种情况下,Suricata只检查TCP流量。
sudo iptables -I INPUT -p tcp --sport 80 -j NFQUEUE
sudo iptables -I OUTPUT -p tcp --dport 80 -j NFQUEUE
在此示例中,Suricata检查端口80上的所有输入和输出。
要查看您是否已正确设置iptables规则,请确保Suricata正在运行并输入
sudo iptables -vnL
在该示例中,您可以查看是否正在记录数据包。
这种是将iptables与IPv4一起使用的方法。要将它与IPv6一起使用,之前提到的所有命令都必须以'ip6tables'开头。也可以让Suricata检查两种流量。
还有一种方法可以将iptables用于多个网络(网卡)。例:
sudo iptables -I FORWARD -i eth0 -o eth1 -j NFQUEUE
sudo iptables -I FORWARD -i eth1 -o eth0 -j NFQUEUE
选项-i(输入)-o(输出)可以与之前提到的所有选项组合使用
如果您停止使用Suricata并使用互联网,则流量将无法通过。要使Internet正常工作,您必须清除所有iptable规则。
要清除所有iptable规则,请输入:
sudo iptables -F