Защита WordPress от атаки через XML-RPC.

В CMS WordPress есть возможность удаленной публикации, редактирования и удаления постов и комментариев. Функциональность реализована через протокол XML-RPC.

До версии 3.5 в настройках WordPress была возможность отключить XML-RPC. Теперь такой возможности нет, протокол подключается по умолчанию с момента установки/обновления CMS.

Как выявить атаку?

Подключитесь к серверу по SSH и выполните команду:

grep -h $(date «+%d/%b/%Y») /var/www/httpd-logs/*.access.log | awk ‘{print $1″ «$7}’ | sort | uniq -c | sort -rnk1 | head -10 | grep -i xmlprc

В ответе на команду отобразятся столбцы: количество_запросов, адрес_запроса и url_запроса.

Пример:

2213 66.249.91.145 /bitrix/tools/conversion/ajax_counter.php

33 22.111.21.123 /bitrix/tools/conversion/ajax_counter.php

2 5.10.12.13 /bitrix/components/bitrix/sale.gift.product/ajax.php

Если среди этих запросов вы видите много обращений к xmlrpc.php, скорее всего ваш сервер атакуют xmlrpc-bruteforce.

Как защититься?

Первый способ: редактируем wp-config.php.

Найдите строку:

require_once(ABSPATH . ‘wp-settings.php’);
После нее допишите:

add_filter(‘xmlrpc_enabled’, ‘__return_false’);

Второй способ: редактируем .htaccess

Добавьте в файл:

<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

Если на вашем сервере Apache 2.4 нужно добавить другие строки:

<Files xmlrpc.php>
Satisfy any
Order allow,deny
Deny from all
</Files>