Предотвратить переполнение сервера запросами

Я размещаю 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 минут.

Другие вопросы по тегам