我有简单的 ipset 地图来跟踪可疑的 ip。
这些我的命令:
ipset flush
ipset -q destroy banlists
ipset create banlists hash:ip comment family inet hashsize 2048 maxelem 1048576 timeout 300
如果在 ipset 中匹配,我会告诉 iptables 丢弃:
iptables -I INPUT 1 -m set -j DROP --match-set banlists src
iptables -I FORWARD 1 -m set -j DROP --match-set banlists src
这是有效的,但我想
- 所有端口都必须丢弃
- 排除端口 80 和 443
- 速率限制匹配 ipset 以防止 ddos 但可接受
如果要允许端口 80 和 443,可以为
INPUT
链添加一条规则:还有一条
FORWARD
链规则:之前的规则将允许所有 IP 访问端口 80 和 443。要对禁止列表 ipset 应用速率限制,您可以使用:
一种更简单的方法(IMO)是使用
-A
switch 而不是-I
. 当然,您需要查看完整的规则集以确保它是按要求设置的(按顺序检查规则)。这样,规则在编写时以正常顺序出现:相同的规则需要应用于
FORWARD
链。您可以根据recent
需要自定义模块参数,即hitcount
和seconds
。