有关suricata的IPS更详尽的解释见://www.greatytc.com/p/c96fec8b58fe
一、查看suricata是否支持NFQ
suricata --build-info
我的suricata显示如下:
Suricata Configuration:
AF_PACKET support: yes
eBPF support: no
XDP support: no
PF_RING support: no
NFQueue support: yes
NFLOG support: no
IPFW support: no
Netmap support: yes > v13
DAG enabled: no
Napatech enabled: no
WinDivert enabled: no
...
...
可以看到我们开启了NFQueue support的功能。
二、suricata的运行场景
网关模式
如果suricata是运行在网关,那么就旨在保护网关下的计算机。
在网关场景向suricata发送流量的最简单规则是:
sudo iptables -I FORWARD -j NFQUEUE
这样,所有转发的流量都会转到suricata。
有关iptables详解的文章://www.greatytc.com/p/a1e92d3aaffc
主机模式
如果suricata是运行在当前的主机,那么就旨在保护当前正在运行的主机。
在主机模式下,有两个最简单的iptables规则:
sudo iptables -I INPUT -j NFQUEUE
sudo iptables -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的条件的话,就变成:
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