Security iptables:限制每秒记录的数据包数

Security iptables:限制每秒记录的数据包数,security,logging,iptables,ddos,honeypot,Security,Logging,Iptables,Ddos,Honeypot,背景。 我正在构建一个用于蜜罐部署的防火墙/NAT设备。简单来说,它被配置成某种反向防火墙。当其中一个蜜罐受到感染/破坏时,防火墙将允许攻击者进行出站连接,但出站连接仅限于特定数量的特定端口集,在特定限制内。如果防火墙检测到流量超过这些限制,它将开始在一段时间内丢弃数据包。任何来自蜜罐的流量都会被记录,因为它被认为是恶意的 问题。 攻击者经常使用蜜罐发起DDoS攻击。平均而言,97%的流量被防火墙阻止,防火墙也记录了所有这些。问题是它会生成aropx。每秒90000个条目,这些攻击可以持续10分

背景。

我正在构建一个用于蜜罐部署的防火墙/NAT设备。简单来说,它被配置成某种反向防火墙。当其中一个蜜罐受到感染/破坏时,防火墙将允许攻击者进行出站连接,但出站连接仅限于特定数量的特定端口集,在特定限制内。如果防火墙检测到流量超过这些限制,它将开始在一段时间内丢弃数据包。任何来自蜜罐的流量都会被记录,因为它被认为是恶意的

问题。

攻击者经常使用蜜罐发起DDoS攻击。平均而言,97%的流量被防火墙阻止,防火墙也记录了所有这些。问题是它会生成aropx。每秒90000个条目,这些攻击可以持续10分钟到几个小时。当所有这些都被记录下来时,它会生成一些相当大的日志文件

当前解决方案。

我试图通过每60秒旋转一次防火墙日志来解决这个问题,但这只会影响日志大小。当logrotate创建的日志数量达到最大值时,一次DDoS攻击就会产生大量日志。我添加了一个专用硬盘来保存日志文件,并增加了日志的旋转

问题。

恐怕这是一种“保留蛋糕/吃蛋糕”的情况。我希望尽可能多地记录流量,同时告诉iptables在某个时间点之后停止记录流量

是否有办法将iptables配置为将条目写入日志文件,但如果同一条目在最后一秒被写入N次,Is将停止记录其余条目

日志功能是否有“速率限制”之类的内容


是否有其他方法解决此问题?

我认为
限制
模块正是您想要的,正如建议的那样:

限制

此模块使用令牌桶过滤器以有限的速率进行匹配。使用此扩展名的规则将匹配,直到达到此限制。例如,它可以与
LOG
目标结合使用,以提供有限的日志记录。
xt\u limit
不支持否定-您必须使用
-m hashlimit--在这种情况下,hashlimit rate
,而忽略了
--hashlimit mode

--限制速率[/second |/minute |/hour |/day]

最大平均匹配率:指定为一个数字,带有可选的“/second”、“/minute”、“/hour”或“/day”后缀;默认值为3/小时

--限制突发数

要匹配的最大初始数据包数:每次未达到上述限制时,该数据包数将被充值一次,直至该数字;默认值为5

因此,在此基础上,我认为这类东西可以起到作用:

iptables -N LOGANDDROP
iptables -A INPUT -s 192.168.1.0/24 -j LOGANDDROP
iptables -A LOGANDDROP -m limit --limit 5/min -j LOG --log-prefix "iptables dropped packets " --log-level 7
iptables -A LOGANDDROP -j DROP

您可以通过在不同的规则中使用多个限制约束来实现更精细的粒度。

我的规则的构建示例:-设置速率和突发限制,记录所有流量-捕获并丢弃任何超过这些限制的内容,记录所有流量-捕获并丢弃任何超过连接限制的内容,记录所有流量这不是使用限制模块限制流量的问题,我正在寻找一种方法来限制通过这些规则写入防火墙日志的行数。你提供的规则,他们将如何实现这一点?也许我误解了你的意思,如果是这样的话,我对此表示歉意。
LOGANDDROP
链中带有
limit
模块的规则限制记录的数据包的数量,这些数据包已经被以前的规则过滤了。在您的示例中,您应该将规则放在
LOGNDROP
链中,以便将要丢弃的所有数据包中的日志记录限制为每分钟5个数据包(使用我提供的特定规则)。事实上,也许你应该定义两条链,并在每一条链中放置一条相似的规则。根据我提供的规则,并使用您建议的方法,您能告诉我如何修改此规则,使其每秒仅写入100个条目吗,
LOGNDROP
链中的第一条规则应该类似于
-LOGNDROP-m limit--limit 100/sec-j LOG
,第二条规则应该是
-LOGNDROP-j DROP
。在这个链条中不应该有任何其他的规则。谢谢你的提示,很抱歉没有及时回复。我使用您的建议解决了这个问题,修改了LOGALLOW/LOGNDROP链:-A LOGALLOW-j LOG--LOG前缀“IPTABLES-ALLOW”-m limit--limit 300/s