小樱 发表于 2018/1/10 03:04

iptables Linux下每ip连接数限制方法介绍 connlimit模块详解

iptables -A INPUT -p tcp --dport 22 --syn -m connlimit --connlimit-above 10 --connlimit-mask 0 -j DROP
上面限制端口连接数主要用到的模块是connlimit。
说明输入的目标端口是22,也就是访问sftp本机22端口的流量,如果连接数大于10,则DROP流量,connlimit-above这个是连接数的统计,
如果大于10就满足条件,connlimit-mask这个是定义那组主机,此处跟的一个数值是网络位,即子网掩码,也就是connlimit-mask 0 这个ip组的连接数大于connlimit-above 10则DROP掉!

总体描述为流量过滤端口和连接数以及网络位,如果满足第一条,则拒绝,流量不再匹配下边的规则,如果不匹配,则第二条规则会允许流量通过。
--connlimit-mask 0 即子网掩码为0,表示所有的ip,也就是说不管什么ip,只要连接此服务器的22端口超过10个,则DROP。

如果将--connlimit-mask 0去掉,则子网掩码默认是32,也就是说某个ip连接此服务器的22端口超过10个,则DROP掉!
如果有11台机器,每台机器连接一个,则不会被DROP掉!

也就是说connlimit-above 10这个的数量所限制的区域是由--connlimit-mask 0而定!

限制与80端口连接的每IP最大连接数为50,可自定义修改。
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP

使用recent模块限制同时间内IP的新请求连接数。
下面策略表示:60秒最多通过10个新连接,超过丢弃数据包
iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j DROP

仁二 发表于 2019/11/28 01:09

connlimit-above 限制每个IP并发数量
recent 限制每个IP一定时间内的请求数量 (要先给流量打上--set标记 才会生效哦)
页: [1]
查看完整版本: iptables Linux下每ip连接数限制方法介绍 connlimit模块详解