Я веду Wordpress-блог на сервере Apache (виртуальный хостинг). По некоторым причинам я получал около 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-адресов, вы можете заблокировать только эти IP-адреса из вашего .htaccess, как описано в эта ссылка.
Если бы это произошло недавно, и это убивало сервер, и теперь мы используем 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-адрес поражает xmlrpc 30+ раз за 5 минут.