Apache-2.2
防止伺服器被請求淹沒
我在 Apache 伺服器(共享主機)上託管了一個 Wordpress 部落格。由於某些原因,幾天來我每秒收到 100 個對 xmlrpc.php 的請求。
access.log 如下所示:
... 188.138.33.149 - - [16/Oct/2013:17:46:03 +0200] "POST /xmlrpc.php HTTP/1.1" 403 212 "-" "GoogleBot/1.0" 188.138.33.149 - - [16/Oct/2013:17:46:03 +0200] "POST /xmlrpc.php HTTP/1.1" 403 212 "-" "GoogleBot/1.0" 188.138.33.149 - - [16/Oct/2013:17:46:03 +0200] "POST /xmlrpc.php HTTP/1.1" 403 212 "-"" ...
在 .htaccess 我應用了以下規則:
<Files xmlrpc.php> Order Deny,Allow Deny from all </Files>
有沒有更好的方法來防止垃圾郵件?
如果您的大部分垃圾郵件連接來自少數 IP,您可以僅阻止來自您的 .htaccess 的這些 IP,如此連結中所述。
最近發生了這種情況,它正在殺死伺服器,我們現在正在使用fail2ban來緩解這個問題。
將此配置添加到jail.local:
[apache-xmlrpc] enabled = true port = http,https filter = xmlrpc logpath = /var/log/apache2/*access.log maxretry = 30 findtime = 300 bantime = -1
並在filter.d/apache-xmlrpc.conf中創建過濾器:
[Definition] failregex = ^<HOST> -.*"(GET|POST) .*xmlrpc.php ignoreregex =
在我的情況下,攻擊並不總是來自 googlebot,因此使正則表達式更加廣泛,但就我的目的而言,幾乎沒有任何充分的理由讓任何 IP 在 5 分鐘內達到 xmlrpc 30 次以上。