XML-RPC — это протокол, который позволяет удалённо управлять сайтом WordPress, например, через мобильные приложения или внешние сервисы. Однако он часто становится уязвимостью, используемой для атак типа Brute Force, DDoS и других. В этой статье подробно разберём, как правильно отключить XML-RPC, чтобы повысить безопасность сайта и уменьшить нагрузку на сервер.
Что такое XML-RPC и почему его отключают (безопасность WordPress)
XML-RPC — это интерфейс, позволяющий выполнять удалённые вызовы функций WordPress через HTTP. Он был введён ещё в ранних версиях, чтобы поддержать мобильные приложения и внешние сервисы публикации.
Проблемы:
- Используется для перебора паролей при Brute Force-атаках;
- Часто применяется для DDoS-атак, отправляя множество запросов;
- Позволяет выполнять нежелательные действия, если не ограничен;
- Большинство пользователей не пользуются функционалом XML-RPC, поэтому его отключение не повлияет на работу сайта.
Таким образом, отключение XML-RPC часто является эффективной мерой защиты.
Как проверить, включён ли XML-RPC на сайте WordPress
Проверить доступность XML-RPC просто. Для этого достаточно открыть в браузере или с помощью curl следующий URL вашего сайта:
https://example.com/xmlrpc.php
Если вы видите сообщение «XML-RPC server accepts POST requests only.», значит служба активна. Если получаете ошибку 403 или 404 — скорее всего, XML-RPC отключён.
Вы также можете проверить это с помощью плагинов безопасности или онлайн-сервисов сканирования уязвимостей.
Способы отключения XML-RPC в WordPress
Отключение через functions.php темы
Самый простой способ — добавить в файл functions.php активной темы следующий код, который заглушит обработчик XML-RPC:
add_filter('xmlrpc_enabled', '__return_false');
Этот фильтр полностью отключает XML-RPC API. Однако, если на сайте используются плагины или мобильные приложения, требующие XML-RPC, такой метод будет неприменим.
Отключение через .htaccess (для Apache)
Если у вас сайт на сервере Apache, можно ограничить доступ к xmlrpc.php через файл .htaccess в корне сайта:
# Блокировка доступа к xmlrpc.php
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Это полностью запретит любые запросы к файлу. Минус — такой запрет нельзя гибко настраивать.
Отключение через nginx
Для nginx добавьте в конфигурацию сайта:
location = /xmlrpc.php {
deny all;
return 403;
}
После этого нужно перезагрузить nginx.
Использование плагинов для управления XML-RPC
Для тех, кто предпочитает GUI, есть плагины, упрощающие управление XML-RPC:
- Disable XML-RPC — простой плагин, полностью отключающий XML-RPC.
- Clearfy Pro — комплексный оптимизатор, в котором есть опция отключения XML-RPC, а также других уязвимостей и ненужных функций WordPress. Подробнее на wpshop.ru.
Когда отключать XML-RPC не стоит
Если вы используете мобильные приложения WordPress, Jetpack или сервисы публикации через XML-RPC, отключать его полностью не рекомендуется. В таких случаях лучше ограничить доступ или фильтровать запросы.
Ограничение доступа к XML-RPC по IP
Можно разрешить доступ к xmlrpc.php только с определённых IP-адресов:
# Пример для Apache
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
Allow from 123.123.123.123
</Files>
Такой подход позволяет сохранить функциональность для надежных сервисов и закрыть доступ для всех остальных.
Блокировка определённых методов XML-RPC
С помощью фильтров WordPress можно запретить опасные методы, например:
function wpcat_filter_xmlrpc_methods($methods) {
unset($methods['pingback.ping']); // отключаем пингбеки
unset($methods['wp.getUsersBlogs']); // отключаем получение блогов
return $methods;
}
add_filter('xmlrpc_methods', 'wpcat_filter_xmlrpc_methods');
Это уменьшит риск атак при сохранении базового функционала.
Тестирование и отладка после отключения XML-RPC
После внесения изменений стоит проверить, что сайт работает корректно:
- Проверьте доступность
xmlrpc.php— он должен быть заблокирован или возвращать 403; - Проверьте работу мобильных приложений WordPress, если вы их используете;
- Проверьте логи сервера на наличие ошибок и необычной активности;
- Используйте онлайн-сканеры безопасности, чтобы убедиться в отсутствии уязвимостей.
Выводы и рекомендации
Отключение XML-RPC — простая и эффективная мера повышения безопасности WordPress-сайта. Особенно полезна для сайтов без необходимости удалённого управления. Используйте фильтр xmlrpc_enabled для быстрого выключения, или блокируйте файл на уровне сервера для надежной защиты.
Если нужна более тонкая настройка, применяйте фильтрацию методов или ограничение IP. Для удобства управления можно использовать плагины, например, Clearfy Pro.