XML-RPC — это интерфейс удалённого вызова процедур, встроенный в WordPress и используемый для связи с внешними приложениями, такими как мобильные клиенты и сервисы публикации. Однако он часто становится источником уязвимостей и используется злоумышленниками для проведения атак, таких как перебор паролей и DDoS. В этой статье мы подробно рассмотрим, как безопасно отключить XML-RPC в WordPress, сохранив при этом контроль над функционалом сайта.
Что такое XML-RPC в WordPress и зачем его отключать
XML-RPC — это протокол, позволяющий клиентам и приложениям взаимодействовать с сайтом WordPress удалённо. Это удобно для публикации постов из внешних приложений, работы с мобильным приложением WordPress, интеграции с некоторыми плагинами и сервисами.
Но у XML-RPC есть серьёзные недостатки с точки зрения безопасности:
- Он позволяет злоумышленникам выполнять массовые попытки входа через метод
system.multicall, что значительно облегчает перебор паролей. - Может использоваться для атаки типа DDoS за счёт отправки большого количества запросов.
- Некоторые плагины и темы могут создавать уязвимости через XML-RPC.
Поэтому на большинстве сайтов, где не требуется удалённый доступ через XML-RPC, его лучше отключить.
Способы отключения XML-RPC в WordPress
Рассмотрим несколько вариантов отключения XML-RPC — от простых до более гибких, с примерами кода.
1. Отключение через файл functions.php
Самый простой способ — добавить в файл functions.php активной темы следующий код. Он полностью блокирует доступ к XML-RPC API и возвращает ошибку 403:
function wpcheck_disable_xmlrpc() {
add_filter('xmlrpc_enabled', '__return_false');
}
add_action('init', 'wpcheck_disable_xmlrpc');
Этот код отключает XML-RPC, не затрагивая остальной функционал сайта.
2. Блокировка XML-RPC через .htaccess
Если сервер использует Apache, можно блокировать доступ на уровне веб-сервера, добавив в .htaccess в корне сайта:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Это самый эффективный способ блокировки, который снижает нагрузку, так как запросы даже не доходят до PHP.
3. Использование плагинов для управления XML-RPC
Если вы хотите гибко контролировать доступ, можно использовать специализированные плагины. Вот несколько популярных решений:
- Disable XML-RPC — полностью отключает XML-RPC без настройки.
- Stop XML-RPC Attacks — блокирует атаки, оставляя некоторые функции.
- Clearfy Pro — универсальный плагин оптимизации и безопасности с возможностью отключения XML-RPC и множества других функций.
Как проверить, включён ли XML-RPC и работает ли блокировка
Проверить статус XML-RPC можно несколькими способами:
- Попробовать открыть
https://ваш-сайт.ru/xmlrpc.phpв браузере — если видна надписьXML-RPC server accepts POST requests only., значит сервис активен. - Использовать онлайн-инструменты, например https://xmlrpc.eritreo.it/, которые проверяют доступность XML-RPC.
- Пользоваться плагинами безопасности, которые ведут логи попыток доступа.
После отключения при обращении к xmlrpc.php должна возвращаться ошибка 403 или пустой ответ.
Когда отключать XML-RPC не стоит: альтернативные решения
Если вы используете мобильное приложение WordPress, Jetpack или интеграцию с внешними сервисами, отключение XML-RPC может сломать часть функционала. В таких случаях лучше не отключать сервис полностью, а ограничить доступ к нему.
Ограничение доступа по IP
Например, можно разрешить доступ только с определённых IP-адресов, через .htaccess:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
Allow from 192.168.1.100
Allow from 203.0.113.50
</Files>
Это позволит пользоваться нужным функционалом и защитит сайт от большинства атак.
Отключение уязвимых методов XML-RPC
Можно отключить только самые опасные методы, например system.multicall, оставив остальные. Для этого добавим код в functions.php:
function wpcheck_filter_xmlrpc_methods($methods) {
if(isset($methods['system.multicall'])) {
unset($methods['system.multicall']);
}
return $methods;
}
add_filter('xmlrpc_methods', 'wpcheck_filter_xmlrpc_methods');
Это хороший компромисс между безопасностью и функционалом.
Выводы и рекомендации
Отключение XML-RPC — важный шаг для повышения безопасности WordPress-сайта, особенно если вы не используете удалённый доступ. Лучше всего комбинировать методы блокировки: отключить на уровне кода, заблокировать в .htaccess и при необходимости использовать специализированные плагины, например Clearfy Pro.
Если нужен удалённый доступ, ограничивайте его по IP или отключайте опасные методы XML-RPC. Не забывайте тестировать сайт после внесения изменений, чтобы убедиться, что нужный функционал работает корректно.
Таким образом, грамотное управление XML-RPC позволит защитить ваш WordPress от распространённых видов атак и сохранить удобство работы.