XML-RPC — это протокол удалённого взаимодействия, который долгое время был неотъемлемой частью WordPress. Он позволяет сторонним приложениям общаться с сайтом, отправляя XML-запросы через HTTP. Изначально XML-RPC был полезным, однако сегодня он всё чаще используется злоумышленниками и становится угрозой безопасности.
Зачем нужен XML-RPC в WordPress?
Изначально XML-RPC предназначался для следующих задач:
- Публикация постов и управление сайтом через сторонние приложения.
- Обработка pingback и trackback уведомлений.
- Интеграция Jetpack и мобильных приложений WordPress.
В период, когда REST API ещё не существовало, этот протокол был единственным удобным способом управлять сайтом удалённо. Разработчики активно использовали его для автоматизации публикаций, синхронизации контента между несколькими платформами и настройки интеграций. Именно поэтому он долго оставался включённым по умолчанию в каждой установке WordPress.
Чем опасен XML-RPC?
Несмотря на полезные возможности, XML-RPC сегодня представляет серьёзные риски:
1. Брутфорс-атаки
Используя метод multicall, злоумышленники могут в одном запросе совершать множество попыток подбора пароля, ускоряя процесс взлома. Стандартная защита от перебора паролей при этом не срабатывает, потому что технически сервер получает один запрос, а не сотни отдельных. Это делает атаку незаметной для большинства стандартных средств мониторинга. По данным OWASP, брутфорс через открытые интерфейсы остаётся одним из самых распространённых векторов атак на веб-приложения.
2. DDoS-атаки
XML-RPC используется для отражённых атак типа pingback, превращая сайт в инструмент для DDoS на другие ресурсы. Ваш сервер при этом рассылает большое количество запросов на сторонние сайты, не зная об этом. В итоге страдает не только жертва атаки, но и ваш хостинг: растёт расход трафика, снижается скорость работы, а хостинг-провайдер может заблокировать аккаунт за нарушение правил использования. Подробнее о механизме pingback-атак рассказывает Wordfence.
3. Спам через pingback
Pingback-уведомления всё чаще используются для массовой рассылки спама на сайты. Владелец сайта получает сотни ложных уведомлений о ссылках, которых не существует. Это засоряет базу данных, перегружает сервер и создаёт лишний шум в административной панели.
Как понять, что XML-RPC используется злоумышленниками?
- Большое количество неудачных попыток входа.
- Высокая нагрузка на сервер и расход трафика.
- Поток спам-комментариев через pingback.
- Замедление работы сайта.
Проверить подозрительную активность можно через логи сервера. Если в них часто мелькают POST-запросы к файлу xmlrpc.php с разных IP-адресов, это прямой сигнал к действию. Такие запросы легко фильтруются в панели управления хостингом или через специализированные плагины безопасности.
Что даст отключение XML-RPC?
Отключив XML-RPC, вы получите:
- Снижение рисков: Закрытие популярной уязвимости для атак.
- Повышение производительности: Экономия ресурсов сервера, ускорение загрузки сайта.
- Сокращение спама: Снижение количества нежелательных уведомлений и комментариев.
Как правильно отключить XML-RPC в WordPress?
Метод 1: Использование плагина защиты
Плагины безопасности, такие как BotBlocker, позволяют отключить XML-RPC одним нажатием. Это самый простой способ для тех, кто не хочет редактировать файлы сайта вручную. Плагин берёт на себя всю техническую работу и дополнительно ведёт журнал заблокированных попыток доступа.
Метод 2: Отключение через .htaccess
Добавьте в файл .htaccess:
# Блокировка XML-RPC
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
Этот метод работает на уровне сервера Apache и блокирует любые запросы к файлу ещё до того, как WordPress их обработает. Это снижает нагрузку на сайт сильнее, чем программное отключение через PHP.
Метод 3: Через functions.php
Добавьте код в functions.php вашей темы:
add_filter('xmlrpc_enabled', '__return_false');
Этот способ подходит для тех, кто работает с дочерней темой. Важно добавлять код именно туда, иначе при обновлении темы изменения сотрутся. Если дочерней темы нет, лучше воспользоваться плагином или методом через .htaccess.
Может ли отключение XML-RPC навредить сайту?
Как правило, нет. Однако стоит учитывать:
- Jetpack и мобильные приложения WordPress зависят от XML-RPC.
- Если используете эти сервисы, лучше применить выборочное отключение.
Большинство современных инструментов для работы с WordPress уже давно перешли на REST API. Официальное мобильное приложение WordPress, начиная с определённых версий, также поддерживает REST API как основной способ взаимодействия с сайтом. Поэтому для среднестатистического сайта полное отключение протокола не создаст никаких неудобств. Если вы не уверены, проверьте список активных плагинов и интеграций до того, как вносить изменения.
Рекомендуемый подход: выборочное отключение
Оптимальным решением будет разрешить доступ XML-RPC лишь определённым IP-адресам или приложениям через правила безопасности. В Pro-версии плагина BotBlocker это реализовано максимально удобно. Вы можете задать белый список адресов, которым разрешён доступ, и при этом заблокировать всех остальных. Такой подход сохраняет нужные интеграции и закрывает протокол от посторонних. По рекомендациям официальной документации WordPress, ограничение доступа к системным файлам и точкам входа — одна из базовых мер защиты сайта.