XML-RPC — это протокол, который позволяет удалённо управлять сайтом на WordPress, например, публиковать записи через внешние приложения. Несмотря на удобство, XML-RPC часто становится причиной уязвимостей и атак, таких как перебор паролей (brute force) или DDoS-атаки. В этой статье подробно рассмотрим, как отключить и заблокировать XML-RPC в WordPress, чтобы повысить безопасность вашего сайта.
Что такое XML-RPC в WordPress и зачем его отключать
XML-RPC — это API-интерфейс, который поддерживается WordPress с версии 3.5 и выше. Он используется для взаимодействия со сторонними приложениями, мобильными клиентами, плагинами и сервисами. Однако этот же интерфейс часто эксплуатируется злоумышленниками для:
- перебора паролей методом brute force;
- отправки большого количества запросов с целью перегрузки сервера;
- использования уязвимостей, связанных с XML-RPC.
Если вы не используете приложения, которые требуют XML-RPC (например, мобильное приложение WordPress, Jetpack или внешние редакторы), его стоит отключить или заблокировать.
Способы отключения XML-RPC в WordPress
Отключение через functions.php
Для базового отключения XML-RPC можно использовать фильтр xmlrpc_enabled. Добавьте следующий код в файл functions.php вашей активной темы или в плагин для пользовательских функций:
function wpfactory_disable_xmlrpc() {
return false;
}
add_filter('xmlrpc_enabled', 'wpfactory_disable_xmlrpc');Этот код полностью отключит XML-RPC и сервер не будет отвечать на соответствующие запросы.
Блокировка XML-RPC через .htaccess
Чтобы заблокировать доступ к файлу xmlrpc.php на уровне веб-сервера Apache, добавьте следующий код в файл .htaccess в корне сайта:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>Этот способ эффективен, так как запросы даже не дойдут до WordPress.
Блокировка через Nginx
Если ваш сервер работает на Nginx, добавьте в конфигурацию сайта:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}После применения изменений перезапустите Nginx.
Использование плагинов для управления XML-RPC
Если вы предпочитаете управлять настройками через панель WordPress, рекомендуем несколько плагинов:
- Disable XML-RPC — простой плагин, который отключает весь функционал XML-RPC.
- Clearfy — многофункциональный оптимизатор сайта, который позволяет отключать XML-RPC и другие неиспользуемые функции для повышения безопасности и производительности. Подробнее: Clearfy на WPSHOP.
- Wordfence Security — комплексный плагин безопасности, который может блокировать XML-RPC атаки и ограничивать доступ.
Отдельные случаи: разрешить только некоторые методы XML-RPC
Если полностью отключать XML-RPC нельзя, можно ограничить набор поддерживаемых методов. Например, запретить использование system.multicall, который часто используется для атак.
function wpfactory_filter_xmlrpc_methods($methods) {
unset($methods['system.multicall']);
return $methods;
}
add_filter('xmlrpc_methods', 'wpfactory_filter_xmlrpc_methods');Этот код оставит работу XML-RPC, но запретит массовые вызовы, что значительно снизит риск атак.
Проверка отключения XML-RPC
Проверить, отключён ли XML-RPC, можно с помощью сервисов, например XML-RPC Validator. Если всё сделано правильно, сервис сообщит, что доступ к xmlrpc.php закрыт.
Выводы и рекомендации по безопасности
Отключение и блокировка XML-RPC — простой и эффективный способ повысить безопасность вашего WordPress-сайта, особенно если вы не используете мобильные приложения или сторонние сервисы, нуждающиеся в этом протоколе.
Для большинства сайтов оптимальным будет комбинированный подход: отключение XML-RPC через фильтр в WordPress и блокировка на уровне веб-сервера. Если в будущем понадобится восстановить работу API, достаточно будет убрать соответствующие настройки.
Используйте плагины безопасности, например Clearfy или Wordfence, чтобы дополнительно контролировать доступ и мониторить атаки.