Предотвратить переполнение сервера запросами
Я размещаю 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>
Есть ли лучший способ предотвратить спам?
2 ответа
Если большинство ваших спам-соединений поступают с небольшого количества 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 минут.