iptables – 回退到无状态过滤

是否有可能使iptables回落到负载下的无状态过滤,在攻击等过程中,当连接跟踪表已满并且新的连接即将被丢弃?

我知道这会有一些严重的安全隐患,因此应该非常保守地select后备规则。 另外,禁用连接跟踪时,NAT将不可避免地中断,但这不是问题(所讨论的主机是实际的防火墙)。

任何解决scheme可能有两个部分:

  • 在iptables中响应一个完整的状态表(也就是说,不通过cron作业或守护进程parsing日志并修改规则)
  • 禁用全部或部分有状态规则,或添加一些新的,优先级较高的规则,在应用状态跟踪之前接受数据包

可以这样做吗? 如果没有,有没有比通过某种日志分析检测表溢出,通过插入或删除规则来反应,还是卸载连接跟踪模块更好的方法?

如果你正在运行一个完整的连接跟踪表,那么简单地放大它。

/etc/sysctl.conf或其中包含的文件中设置以下内容:

 net.ipv4.netfilter.ip_conntrack_max = 131072 

(提高数字,直到有足够的空间。)

在更旧的Linux服务器上,您必须使用与旧的不推荐使用的sysctl:

 net.ipv4.ip_conntrack_max = 131072 

要应用更改,请重新引导或运行:

 sysctl -p 

在高负荷下,特别是有很多的连接,是的,它会开始放缓。 所以去无国界是个好主意。

可悲的是,没有办法回到无状态的过滤。 但是,您可以简单地跳过重交通的状态:udp,端口80,…使用NOTRACK目标。

在非常高的负载下,如果可能的话,我build议尽可能无状态。