每隔几个星期我们都有一个问题,即一个IP地址可以同时打开大量的Apache进程。
似乎每次都连接到类似的页面,但是我们的Apache进程从正常的〜20-25个忙时隙到最大(256)。
这个IP地址然后无情地刷新了所有的请求,从而使我们的服务器负担加重,并大大减缓了网站的速度。
每种解决scheme都很简单, 我从Apache“服务器状态”中findIP,并使用IP表规则阻止IP。
不幸的是,IP地址每次都会改变(当我查找主机说“bt openworld”时,它总是相似的),我不能24/7提供login并添加IP表规则。
要清楚的是,我们处理来自谷歌和其他searchehgines没有问题的抓取,我不知道我们正在经历的是否是恶意的。
我怎样才能限制这种影响?
我们的设置是一个处理MySQL和Apache的单一服务器。
我被告知,负载平衡器是唯一的方法来限制从单个(但每个攻击更改)IP地址的连接数量。
也许这样的事情会有所帮助。 它将阻止任何在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
您必须调整脚本,以便普通用户永远不会被阻止
那么你可以使用一些iptables规则来限制并发连接的数量。
另一种解决scheme是优化您的应用程序,以便使用更less的资源更快地处理它们。