这是一个关于 DoS 和 DDoS 缓解的规范问题。
我在今天托管的网站上发现了大量流量高峰;我每秒获得数千个连接,我发现我正在使用所有 100Mbps 的可用带宽。没有人可以访问我的网站,因为所有请求都超时了,我什至无法登录服务器,因为 SSH 也超时了!这种情况以前发生过几次,每次都持续几个小时,然后自行消失。
有时,我的网站有另一个明显但相关的问题:我的服务器的平均负载(通常约为 0.25)飙升至 20 或更多,并且没有人可以像其他情况一样访问我的网站。它也会在几个小时后消失。
重新启动我的服务器没有帮助;我该怎么做才能让我的网站再次访问,发生了什么?
相关地,我发现在一两天内,每次我启动我的服务时,它都会从特定的 IP 地址获得连接,然后崩溃。当我再次启动它时,这种情况再次发生并且再次崩溃。这有什么相似之处,我该怎么办?
我想知道是否可以使用简单的 IP 表规则来防止小型 (D)DoS 攻击?
小我的意思是他们用来自一两个 IP 地址的大约 400 多个请求淹没了我的 Web 服务器。在我注意到 IP 地址开始攻击我的 Web 服务器后,我可以删除它们,但 IP 表通常需要几分钟才能针对该 IP 启动,然后开始完全删除它,以免影响该 Web 服务器.
我使用以下命令删除 IP:
iptables -I INPUT -s "IP HERE" -j DROP
然后显然保存它:
/etc/init.d/iptables save
我通常使用以下命令找出攻击 IP 地址:
netstat -plan|grep :80|awk '{print $5}'|cut -d: -f 1|sort|uniq -c|sort -n
这样做的问题是我必须在那里,并且需要我事后采取行动。是否有 IP 表规则可用于在达到 150 个连接后立即删除 IP 地址?这样我就不必担心它会压倒 Web 服务器,而且我也不必在那里阻止它。
顺便说一句,如果重要的话,我在 CentOS 上使用 Apache。
感谢您的时间。