如何处理来自IP地址的大量连接?

Modified on: Sun, 18 Aug 2019 07:40:02 +0800

每隔几周我们就会遇到一个问题,即单个IP地址会同时打开大量的Apache进程。

它似乎每次都连接到类似的页面,但是我们的Apache进程从正常的~20-25个忙槽到最大值(256)。

然后,这个IP地址会无情地刷新所有请求,从而加强我们服务器上的负载,并大大减慢网站速度。

每种情况下的解决方案都很简单;我从Apache“服务器状态”中找到IP并使用IP表规则阻止IP。

不幸的是,IP地址每次都会改变(它总是相似的,当我查找主机时说“bt openworld”),而且我无法全天候登录并添加IP表规则。

要明确的是,我们处理谷歌和其他搜索引擎的抓取没有问题,我不确定我们所经历的是否是恶意的。

如何限制它的效果?

我们的设置是处理MySQL和Apache的单个服务器。

我被告知,负载均衡器是对单个(但每次攻击的更改)IP地址进行速率限制的唯一方法。

作者:Jon M

最佳答案

也许这样的事情会有所帮助。它将阻止任何在2分钟(180秒)内打开150多个连接的主机:

iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 180 --hitcount 150 -j REJECT

您必须调整脚本,以便普通用户永远不会被阻止

作者:JMW

相关问答

添加新评论