我正在使用iptables
recent
模块:
-A INPUT -m recent --rsource --name PORTSCAN --set -j DROP
上面的行将有问题的 IP 地址添加到/proc/net/xt_recent/PORTSCAN
.
现在我正在寻找一种方法如何定期(cron 作业)检查此列表,并删除早于n
几个小时的条目。
我正在使用 的xt_recent.ip_pkt_list_tot=1
选项recent
。这意味着,当看到数据包时,我不会多次保留。我只保留最后一次看到数据包的时间。
所以列表/proc/net/xt_recent/PORTSCAN
看起来像这样:
src=185.242.5.46 ttl: 240 last_seen: 4312349727 oldest_pkt: 1 4312349727
src=184.100.29.188 ttl: 57 last_seen: 4312673918 oldest_pkt: 1 4312673918
src=184.157.25.107 ttl: 57 last_seen: 4312086204 oldest_pkt: 1 4312086204
我如何定期“清除”此列表,以便只保留不到n
几个小时的条目?
是否iptables
提供了一些方法来做到这一点?或者这需要我用一些自定义脚本来完成吗?
答案1
看起来这正是--reap
您正在寻找的,来自iptables 扩展手册页,关于 的部分recent
:
--reap
该选项只能与 一起使用--seconds
。使用时,这将导致早于最后给定秒数的条目被清除。
至于它是如何工作的,这里是Linux内核的相关源代码部分。