我需要限制每个 IP 对某些端口的访问。假设每分钟 5 个连接 - 不会更多。
我见过的iptables最近,connlimit和限制,但它们都没有装修正是我需要的。
假设您有一个客户端每秒钟都在尝试连接。在我的场景中,我需要每分钟允许 5 个数据包。
最近:如果某个 IP 每 1 秒尝试连接一次,--hitcount 5 将记住该 IP 并将其保留在列表中,直到在 --second 60 时间内没有数据包进入。因此,它会在我的场景中永久限制客户端。
limit:我希望使用 --limit 5/min限制此限制,但对于所有 IP - 无法为每个 IP 指定此限制。
connlimit:限制同时连接的数量,而不是每隔一段时间。
事实上,我需要限制+最近的混合。谁知道怎么做?
终于成功地用最近的方法做到了:
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW \
-m recent --rcheck --seconds 60 --hitcount 5 --name ssh --rsource \
-j REJECT --reject-with icmp-port-unreachable
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW \
-m recent --set --name ssh --rsource
Run Code Online (Sandbox Code Playgroud)
--update 将在每个接收数据包上再次重新启动计时器,但 --rcheck 只会检查它。60 秒后,该结构将被删除,并再次启动新的计时器。
这就是我得到它的方式(我没有研究来源 - 太懒了)
| 归档时间: |
|
| 查看次数: |
15513 次 |
| 最近记录: |