如何使用iptables检测并限制来自同一IP的频繁查询?

如何使用iptables检测并限制来自同一IP的频繁查询?

场景如下:

我打算保护我的服务器免受高频查询来自同一IP,比如,上限是每分钟60次。

我不知道如何通过 来做到这一点iptables,是否有任何工具或 bash 可以解决这个问题?我对 Linux 的安全性还很陌生,我需要保护我的服务器免受机器人程序的攻击。非常感谢!

答案1

要使用 iptables 限制特定 IP 的命中率,您可以执行以下操作:

-A INPUT -p tcp --dport 80 -i eth0 -s 1.2.3.4 -m state --state NEW -m recent --set
-A INPUT -p tcp --dport 80 -i eth0 -s 1.2.3.4 -m state --state NEW -m recent --update --seconds 60 --hitcount 60 -j REJECT

如果每 60 秒内IP 数据包1.2.3.4到达 eth0 上的 80 端口超过 60 次,则会拒绝该数据包。

答案2

iptables 将解决您的问题。如果它是一个公开开放的服务,例如 apache,您可以进行速率限制。

如果受到攻击的是私人服务,比如常见的 sshd(tcp/22),由于大多数发行版默认将其全局打开,因此只需限制仅从您的 ip 对其进行访问即可。这适用于所有私人服务,例如 ftp,而不仅仅是 sshd

相关内容