XML-RPC — это протокол, который позволяет внешним приложениям взаимодействовать с вашим сайтом на WordPress. Несмотря на удобство, он часто становится причиной проблем с безопасностью, так как через него хакеры могут запускать атаки перебора паролей или выполнять DDoS-атаки. В этой статье мы подробно разберём, как отключить XML-RPC в WordPress, рассмотрим несколько способов с примерами кода и плагинами, а также обсудим, когда отключение может негативно сказаться на функционале сайта.
Что такое XML-RPC и зачем его отключать
XML-RPC был введён в WordPress для поддержки удалённого управления сайтом — например, публикации записей через мобильные приложения, автоматического обновления и интеграции с внешними сервисами. Однако, XML-RPC стал популярной точкой входа для атак:
- Brute force атаки — перебор паролей через метод
system.multicall, позволяющий отправить сразу несколько запросов; - DDoS-атаки — из-за особенностей протокола нагрузка может быть усилена;
- Использование уязвимостей в старых версиях WordPress через XML-RPC;
Поэтому, если ваш сайт не использует функции, завязанные на XML-RPC, отключение этого протокола значительно повысит безопасность.
Как проверить, включён ли XML-RPC на сайте
Самый простой способ проверить — попытаться получить доступ к файлу xmlrpc.php в корне сайта. Откройте в браузере URL https://ваш_сайт/xmlrpc.php. Если вы увидите сообщение "XML-RPC server accepts POST requests only.", значит, сервис активен.
Также можно использовать онлайн-инструменты для проверки безопасности WordPress, которые обязательно тестируют доступность XML-RPC.
Способы отключения XML-RPC в WordPress
Отключение через functions.php темы
Самый простой способ — добавить фильтр, который отключит обработку XML-RPC запросов на уровне ядра WordPress. Добавьте следующий код в файл functions.php активной темы или в файл вашего кастомного плагина:
add_filter('xmlrpc_enabled', 'wptask_disable_xmlrpc');
function wptask_disable_xmlrpc() {
return false;
}
Этот код полностью отключит XML-RPC API. Преимущество — простота и отсутствие необходимости редактировать серверные файлы.
Отключение через .htaccess (для Apache)
Если ваш сайт работает на сервере Apache, вы можете заблокировать доступ к файлу xmlrpc.php на уровне сервера, добавив в корень сайта в файл .htaccess следующий код:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Этот способ достаточно жёсткий и не позволит даже легитимным приложениям обращаться к XML-RPC.
Отключение через Nginx
Если у вас Nginx, добавьте в конфигурацию сервера в блок server следующую директиву:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
После внесения изменений перезапустите Nginx, чтобы они вступили в силу.
Использование плагинов для отключения XML-RPC
Если вы предпочитаете готовые решения, можно использовать следующие плагины:
- Disable XML-RPC — простой и лёгкий плагин, который отключает XML-RPC без лишних настроек.
- Clearfy Pro — комплексный плагин оптимизации и безопасности, который позволяет отключить XML-RPC, а также множество других функций для ускорения и защиты сайта. Подробнее на wpshop.ru.
- WPS Hide Login — хотя плагин не отключает XML-RPC, он скрывает страницу логина, что вместе с отключением XML-RPC значительно повышает безопасность.
Когда не стоит отключать XML-RPC
Стоит помнить, что отключение XML-RPC может повлиять на работу:
- Мобильных приложений WordPress для публикации постов и управления сайтом.
- Плагинов и сервисов, использующих XML-RPC для взаимодействия (например, Jetpack).
- Некоторых функций автоматизации и удалённого управления.
Если вы используете такие сервисы, имеет смысл ограничить доступ к XML-RPC по IP или использовать плагины, которые блокируют только опасные методы, а не весь протокол.
Альтернативные методы защиты XML-RPC
Если полностью отключать XML-RPC нельзя, можно минимизировать риски:
- Ограничить доступ к
xmlrpc.phpпо IP-адресам через .htaccess или конфигурацию сервера. - Использовать плагины типа WP Cerber Security или Wordfence, которые блокируют подозрительные запросы к XML-RPC.
- Отключить метод
system.multicall, который часто используется для перебора паролей. Пример кода для functions.php:
add_filter('xmlrpc_methods', 'wptask_disable_system_multicall');
function wptask_disable_system_multicall($methods) {
unset($methods['system.multicall']);
return $methods;
}
Выводы и рекомендации
Отключение XML-RPC — простое и эффективное решение для повышения безопасности WordPress-сайта, особенно если вы не используете удалённое управление. Для большинства сайтов это первый шаг в борьбе с атаками через этот протокол.
Если отключение нежелательно, используйте ограничение доступа по IP и блокировку опасных методов. Обязательно тестируйте изменения на тестовом сайте, чтобы не нарушить критичные функции.
Для комплексной защиты и оптимизации советуем обратить внимание на плагин Clearfy Pro, который позволяет гибко управлять безопасностью и производительностью WordPress.