XML-RPC — устаревший протокол удаленного вызова процедур в WordPress, который часто используется для интеграций и мобильных приложений. Однако он является частой точкой входа для брутфорс-атак, DDoS и других злоупотреблений. Многие хосты рекомендуют отключать XML-RPC, если вы не используете его функционал. В этой статье я расскажу, как жестко отключить XML-RPC на уровне WordPress, сервера и с помощью плагинов, а также покажу примеры кода.
Почему важно отключать XML-RPC в WordPress
XML-RPC изначально был добавлен в WordPress для удаленного управления сайтом через приложения и сервисы. Но сейчас большинство пользователей не используют этот протокол, а злоумышленники активно сканируют сайты на наличие активного XML-RPC для проведения атак:
- Брутфорс логина через
system.multicall— позволяет пробовать тысячи паролей за один запрос. - DDoS-атаки с помощью xmlrpc.php.
- Спам-рассылки через удалённые публикации.
Если вы не используете мобильное приложение WordPress или внешние сервисы, которые требуют XML-RPC, его лучше полностью отключить.
Способы жесткого отключения XML-RPC
1. Отключение через functions.php темы
Самый простой способ — добавить код в файл functions.php активной темы. Этот код полностью блокирует доступ к xmlrpc.php:
function wpgpt_disable_xmlrpc() {
add_filter('xmlrpc_enabled', '__return_false');
}
add_action('init', 'wpgpt_disable_xmlrpc');Этот фильтр сообщает WordPress, что протокол XML-RPC отключен. Однако в некоторых случаях он не блокирует прямой доступ к файлу, поэтому лучше дополнить метод серверной конфигурацией.
2. Отключение на уровне .htaccess (Apache)
Если ваш сервер работает на Apache, можно запретить доступ к xmlrpc.php через .htaccess. Добавьте в корневой каталог WordPress следующий код:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>Это жестко блокирует все запросы к XML-RPC, возвращая ошибку 403 Forbidden.
3. Отключение на уровне Nginx
Для сайтов на Nginx в конфигурацию сервера добавьте:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}После перезагрузки Nginx этот файл перестанет обрабатываться клиентами.
Плагины для управления XML-RPC
Если вы не хотите редактировать код и конфиги сервера, можно использовать плагины:
- Clearfy Pro — универсальный плагин для оптимизации и безопасности, позволяет отключить XML-RPC одним кликом.
- WPRemark — плагин с функциями безопасности и контроля доступа, также поддерживает отключение XML-RPC.
Использование плагина удобно для тех, кто предпочитает GUI и не хочет вносить изменения вручную.
Проверка, что XML-RPC отключен
После применения одного из способов важно проверить, что XML-RPC действительно не работает. Для этого откройте в браузере https://ваш-сайт.ru/xmlrpc.php. Если вы видите сообщение XML-RPC server accepts POST requests only. — значит протокол включен. Если вы получаете 403 или 404 — значит отключение прошло успешно.
Также можно использовать онлайн-инструменты для проверки уязвимости XML-RPC или плагины безопасности, например, Wordfence.
Пример комплексного решения для жесткого отключения XML-RPC
Для максимальной защиты рекомендую применить все три уровня:
- Добавьте в
functions.phpфильтр для отключения в WordPress. - Настройте сервер (htaccess или nginx).
- Поставьте плагин для удобства управления и мониторинга.
Так вы защитите сайт от большинства атак, связанных с XML-RPC, без ущерба для производительности и безопасности.
Заключение: стоит ли отключать XML-RPC?
Если вы не используете мобильное приложение WordPress, Jetpack (который тоже требует XML-RPC), интеграции с внешними сервисами, то отключение XML-RPC — хороший практический шаг для повышения безопасности. В противном случае стоит подумать о более тонкой настройке или использовать плагины с функцией ограничения доступа к XML-RPC только для нужных IP и сервисов.
Используйте описанные методы и инструменты из Clearfy Pro и WPRemark для надежной защиты вашего WordPress сайта.