XML-RPC в WordPress — это протокол, который позволяет удалённо взаимодействовать с сайтом, например, через мобильные приложения или внешние сервисы. Однако, из-за своей открытости он часто становится мишенью для брутфорс-атак и других видов взлома. Если вы не используете XML-RPC или хотите повысить безопасность сайта, есть смысл полностью его отключить.
Что такое XML-RPC и зачем его отключать
XML-RPC — это интерфейс, встроенный в WordPress, который позволяет внешним приложениям выполнять различные действия: создавать записи, редактировать, комментировать и так далее. Этот протокол включён по умолчанию и доступен по адресу https://ваш-сайт.ru/xmlrpc.php.
Проблема в том, что XML-RPC часто используется злоумышленниками для:
- массовых атак на пароль (brute force);
- DDOS-атак через pingback;
- использования сайта в ботнетах.
Если вы точно не нуждаетесь в XML-RPC (например, не пользуетесь мобильными приложениями или внешними сервисами, которые требуют этот протокол), лучше его отключить.
Способы отключения XML-RPC в WordPress
Существует несколько способов отключить XML-RPC. Плагины делают это быстро, но если вы хотите держать сайт максимально лёгким и контролируемым — лучше обойтись без них. Ниже приведены три основных способа отключения без плагинов.
1. Отключение XML-RPC через functions.php темы
Самый простой метод — добавить фильтр, который отключит доступ к XML-RPC:
add_filter('xmlrpc_enabled', '__return_false');
Добавьте эту строку в файл functions.php вашей активной темы (желательно дочерней, чтобы изменения не пропали при обновлении темы). Этот фильтр полностью отключает XML-RPC на уровне WordPress.
Однако, в некоторых случаях запросы к xmlrpc.php всё равно будут проходить, и сервер может отвечать, хотя функциональность будет отключена.
2. Отключение XML-RPC через .htaccess (Apache)
Если ваш сервер работает на Apache, можно запретить доступ к файлу xmlrpc.php с помощью .htaccess. Добавьте в корневой каталог сайта файл .htaccess или отредактируйте существующий, вставив:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Это полностью закроет доступ к файлу с любых IP. Минус — если вдруг понадобится функциональность XML-RPC, её не получится использовать без снятия блокировки.
3. Отключение XML-RPC через Nginx
Если ваш сайт работает под Nginx, запретить доступ к xmlrpc.php можно через конфигурацию сервера:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
После внесения изменений не забудьте перезагрузить Nginx.
Проверка отключения XML-RPC
После внесения изменений проверьте, что XML-RPC действительно отключён. Для этого откройте в браузере https://ваш-сайт.ru/xmlrpc.php. При отключении через фильтр вы увидите сообщение "XML-RPC server accepts POST requests only." — это нормально. Если же доступ заблокирован через .htaccess или Nginx, вы получите ошибку 403 или подобную.
Ещё один способ — воспользоваться онлайн-сервисами проверки XML-RPC, например, https://xmlrpc.eritreo.it/. Если сервис не может подключиться, значит блокировка сработала.
Как избежать проблем с отключением XML-RPC
Перед отключением убедитесь, что вы не используете мобильные приложения WordPress, Jetpack или другие сервисы, которые требуют XML-RPC. В противном случае они перестанут работать.
Если нужно частично ограничить доступ, а не полностью отключать, можно использовать плагин Clearfy Pro. Он позволяет гибко управлять доступом к XML-RPC и другим потенциально опасным точкам входа.
Пример кастомной функции для wpskills отключения XML-RPC с логированием попыток
Для более продвинутых разработчиков можно написать функцию, которая будет отключать XML-RPC и логировать попытки доступа для анализа атак:
function wpskills_disable_xmlrpc_with_logging() {
if (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) {
error_log('XML-RPC access attempt blocked: ' . $_SERVER['REMOTE_ADDR']);
wp_die('XML-RPC отключён на этом сайте.');
}
}
add_action('init', 'wpskills_disable_xmlrpc_with_logging');
Этот код добавьте в functions.php. Он не просто отключит XML-RPC, но и запишет в журнал сервера IP адреса, которые пытались к нему обратиться. Это помогает выявлять злонамеренные действия.
Итоги и рекомендации
Полное отключение XML-RPC — простой и эффективный способ повысить безопасность WordPress-сайта, если вы не используете удалённые сервисы. Вы можете сделать это через фильтр, серверные настройки или кастомный код в functions.php.
Для удобства и расширенных настроек рекомендую обратить внимание на Clearfy Pro, который позволяет быстро управлять безопасностью без ручного вмешательства в код и сервер.