我有一台 ubuntu 系统,我想在这个系统中实现 iptables 作为防火墙、modsecurity 作为 WAF 以及 snort 作为 IDS,并且我在该系统后面有一个服务器,我想用这个系统保护服务器。我希望当数据包接收到时,首先 iptables 对其进行处理,然后如果可以则传递给 snort,snort 对其进行处理,然后将这个数据包传递给 modsecurity,modsecurity 对其进行处理。我该如何指定这个顺序?第一个 iptables,第二个 snort,最后是 modsecurity。我应该怎么做?
答案1
Snort 和 IPTables 都在接口上监控数据包,因此它们或多或少是并列的。Modsecurity WAF 位于 Web 服务器级别,在操作系统处理完成后,因此无论如何它都会排在“最后”。
这里他们解释了如何让 IPTables 将数据包放入 Snort 队列,以便您得到所需的顺序:
http://seclists.org/snort/2014/q4/363
这个例子中,IPTables DROP 了除端口 80 之外的所有内容,然后 Snort 在该端口上执行其操作:
此时,“黑名单”类型的防火墙设置可能更合适。如果我们假设 NFQUEUE 规则实际上是 ACCEPT,请考虑以下内容:
sudo /sbin/iptables -A INPUT -d IP.ADDRESS -p tcp --dport 0-79 -j DROP sudo /sbin/iptables -A INPUT -d IP.ADDRESS -p tcp --dport 80 -j NFQUEUE --queue-num 1 sudo /sbin/iptables -A INPUT -d IP.ADDRESS -p tcp --dport 81-65535 -j DROP