Разработчики WordPress в последних версиях упорно оставляют по-умолчанию активным протокол XML-RPC, причем, начиная с версии 3.5, такое поведение невозможно отключить. Я понимаю, для чего это им надо — таким образом они ангажируют использование мобильных приложений, активно использующих возможности этого протокола для постинга записей и комментариев с мобильных платформ. Конечно, это удобно, однако у XML-RPC есть и обратная — любые боты могут через файл xmlrpc.php проводить брутфорс-атаки, что и было незамедлительно применено ими.
В последнее время график обращений к файлу xmlrpc.php на разных сайтах, использующих WordPress, выглядит так:
Видно лавинообразное увеличение обращений к этому файлу, которое на большинстве сайтов ничем не компенсируется. Обычно от брутфорс-атак защищают файл wp-login.php, например, с помощью популярного плагина Limit Login Attempts, пресекающего бесконечный перебор логинов и паролей. А вот про файл xmlrpc.php мало кто вспоминает, что в сочетании активным по-умолчанию протоколом XML-RPC дает взломщикам легкий способ получения доступа к сайту с помощью брутфорс-атаки.
Я давно уже запретил в своих блогах использование XML-RPC, причем запретил полностью, вплоть до запрета обращения к файлу xmlrpc.php, о чем еще ни разу не пожалел.
Какие существуют способы защиты от брутфорс-атак на файл файл xmlrpc.php? Можно, а в большинстве случаев и нужно отключить протокол XML-RPC. Это можно сделать с помощью плагинов или вручную, внедрив коды в конфигурационные файлы.
Плагины
Полностью отключить использование этого протокола могут несколько плагинов:
- WordPress XML-RPC Admin — плагин отключает протокол XML-RPC одним кликом.
- Disable XML-RPC — просто отключает протокол при активации плагина.
- Disable XML-RPC & Unset X-Pingback — вариант предыдущего плагина, не только запрещающего использование XML-RPC API, но и удаляет http-заголовок, передающий адрес файла xmlrpc.php.
- Disable XML RPC Fully — плагин, аналогичный первым двум.
- Disable XML-RPC Pingback — плагин, отключающий систему оповещений протокола XML-RPC.
Коды
Если вы не хотите использовать плагины, то запретить протокол XML-RPC можно вручную.
В файле .htaccess запретить прямой доступ к файлу xmlrpc.php:
Satisfy any Order allow,deny Deny from all
Отключить протокол может настройка файла wp-config.php. После строчки
require_once(ABSPATH . 'wp-settings.php');
нужно вставить
add_filter('xmlrpc_enabled', '__return_false');
Отключить систему уведомлений, передаваемый через XML-RPC можно, если добавить в файл functions.php используемой вами темы следующий код:
function remove_x_pingback($headers) { unset($headers['X-Pingback']); return $headers; } add_filter('wp_headers', 'remove_x_pingback');
Надеюсь, что приведенные способы защиты от брутфорс-атак через XML-RPC сделают ваш сайт более защищенным.
Могу порекоммендоавть плагин NinjaFirewall