XML-RPC — это протокол, который позволяет удалённо взаимодействовать с сайтом на WordPress, например, через мобильные приложения, внешние сервисы и некоторые плагины. Однако он часто становится причиной уязвимостей и атак типа brute force. В этой статье разберём, как отключить XML-RPC без использования плагинов, что особенно полезно для разработчиков и владельцев сайтов, стремящихся минимизировать уязвимости.
Что такое XML-RPC и зачем его отключать
XML-RPC — это интерфейс удалённого вызова процедур, встроенный в WordPress по умолчанию. Он позволяет выполнять различные операции, например, публиковать записи с внешних приложений. Несмотря на удобство, многие злоумышленники используют XML-RPC для атак, включая:
- Brute force — подбор паролей с помощью метода
system.multicall. - DDoS-атаки через массовые запросы XML-RPC.
- Эксплуатация уязвимостей в определённых версиях WordPress и плагинах.
Если вы не используете внешние приложения для публикации или плагинов, требующих XML-RPC, лучше отключить этот протокол.
Как проверить, активен ли XML-RPC на вашем сайте
Для проверки достаточно открыть в браузере адрес https://ваш-сайт.ru/xmlrpc.php. Если вы видите сообщение «XML-RPC server accepts POST requests only.», значит, интерфейс активен. Если же получаете ошибку 403 или 404, значит он отключён.
Другой способ — воспользоваться онлайн-сервисами для проверки уязвимостей или утилитами типа curl:
curl -I https://ваш-сайт.ru/xmlrpc.phpЕсли в ответе идёт статус 200, значит доступ разрешён.
Отключение XML-RPC через functions.php — простой способ
Самый популярный и удобный метод — добавить в файл functions.php вашей темы следующий код:
function wpdevelop_disable_xmlrpc() {
add_filter('xmlrpc_enabled', '__return_false');
}
add_action('init', 'wpdevelop_disable_xmlrpc');Этот код использует встроенный фильтр WordPress xmlrpc_enabled, который при возврате false полностью отключает XML-RPC. После добавления и сохранения изменений интерфейс перестанет работать, а запросы к xmlrpc.php будут возвращать ошибку 403.
Важно: этот метод не требует установки дополнительных плагинов и не влияет на работу REST API.
Отключение XML-RPC через .htaccess — на уровне сервера Apache
Если у вас сайт на Apache, можно заблокировать доступ к xmlrpc.php на уровне веб-сервера. Для этого добавьте в файл .htaccess в корне сайта следующий код:
<Files xmlrpc.php>
Order deny,allow
Deny from all
</Files>Этот метод полностью блокирует доступ к файлу, и все запросы к XML-RPC будут отклоняться ещё до загрузки WordPress. Такой способ эффективен и снижает нагрузку на сервер.
Отключение на Nginx — пример настройки
Если ваш сайт работает на сервере с Nginx, добавьте в конфигурацию сайта в блок server следующий блок:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}После внесения изменений не забудьте перезапустить Nginx, чтобы настройки вступили в силу:
sudo systemctl reload nginxКак проверить, что XML-RPC действительно отключён
После применения любого из описанных способов повторно проверьте доступность xmlrpc.php через браузер или curl. Вы должны получить ошибку 403 или 404, либо сообщение о запрещённом доступе.
Также рекомендую проверить логи сервера и мониторить попытки обращения к файлу — если они продолжаются, это может указывать на необходимость дополнительной настройки.
Почему не стоит отключать XML-RPC, если вы используете мобильные приложения и некоторые плагины
Перед отключением XML-RPC убедитесь, что вы не используете приложения WordPress для iOS или Android, а также плагины, которые зависят от этого протокола (например, Jetpack в некоторых режимах). В противном случае функционал может перестать работать.
Если нужна частичная блокировка, можно ограничить доступ по IP или добавить аутентификацию.
Заключение: лучшие практики по безопасности
Отключение XML-RPC — простой и эффективный способ повысить безопасность WordPress-сайта, особенно если вы не используете его функционал. Вместо плагинов можно применять кодовые решения, которые не нагружают систему.
Для комплексной защиты стоит также рассмотреть установку и настройку плагина Clearfy Pro, который помогает управлять неиспользуемыми функциями WordPress и оптимизировать безопасность.