Bif*_*ozt 3 security logging iptables ddos honeypot
背景。
我正在构建一个用于蜜罐部署的防火墙/NAT 设备。简单来说,它被配置为某种反向防火墙。当其中一个蜜罐被感染/受损时,防火墙将允许攻击者进行出站连接,但出站连接仅限于一组特定的端口,在一定的限制内,并且仅限于特定数量的连接。如果防火墙检测到超出这些限制的流量,它将在一段时间内开始丢弃数据包。任何源自蜜罐的流量都会被记录下来,因为它被认为是恶意的。
问题。
攻击者经常利用蜜罐发起 DDoS 攻击。平均而言,97% 的流量被防火墙阻止,防火墙也会记录所有这些流量。问题是它会生成 aropx。每秒 90000 个条目,这些攻击可以持续 10 分钟到几个小时。当所有这些都被记录时,它会生成一些相当大的日志文件。
当前的解决方法。
我尝试通过每 60 秒轮换一次防火墙日志来解决此问题,但这只会影响日志大小。当 logrotate 创建了最大数量的日志时,最终只会产生来自一次 DDoS 攻击的大量日志。我添加了一个专用硬盘来保存日志文件并增加了日志轮换。
问题。
恐怕这是一种“保留蛋糕/吃蛋糕”的情况。我想记录尽可能多的日志,同时告诉 iptables 在某个点之后停止记录流量。
有没有办法配置 iptables 将条目写入日志文件,但是,如果在最后一秒相同的条目已写入 N 次,则将停止记录其余条目?
日志功能是否有“速率限制”之类的东西?
还有其他方法可以解决这个问题吗?
我认为该limit模块就是您正在寻找的模块,正如iptables-extensions其手册页所示:
limit该模块使用令牌桶过滤器以有限的速率进行匹配。使用此扩展的规则将匹配,直到达到此限制。
LOG例如,它可以与目标结合使用以提供有限的日志记录。没有否定支持 -在这种情况下
xt_limit您必须使用并省略.-m hashlimit ! --hashlimit rate--hashlimit-mode
--limit rate[/second|/minute|/hour|/day]
最大平均匹配率:指定为数字,可选“/秒”、“/分钟”、“/小时”或“/天”后缀;默认为 3/小时。
--limit-burst number
最大初始匹配数据包数:每次未达到上面指定的限制时,此数字将重新加一,直到此数字;默认值为 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
Run Code Online (Sandbox Code Playgroud)
您可以通过在不同规则下使用多个限制约束来实现更细的粒度。
| 归档时间: |
|
| 查看次数: |
13367 次 |
| 最近记录: |