XML-RPC — это интерфейс удалённого взаимодействия с сайтом на WordPress, который позволяет использовать приложения и сервисы для управления контентом, публикацией постов, а также взаимодействовать с мобильными приложениями. Однако в последнее время этот протокол часто становится объектом атак, таких как взлом по перебору паролей и DDoS-атаки. Поэтому многие администраторы сайтов хотят отключить XML-RPC, чтобы повысить безопасность ресурса.
Что такое XML-RPC и зачем его отключать
XML-RPC — это стандартный протокол, встроенный в WordPress по умолчанию. Он позволяет удалённо вызывать функции сайта через HTTP-запросы, используя XML-формат. Например, мобильные приложения WordPress, Jetpack и некоторые плагины используют этот протокол для работы.
Но с открытым XML-RPC увеличивается риск различных атак:
- Брутфорс-атаки на логин и пароль;
- DDoS-атаки с использованием метода system.multicall;
- Использование уязвимостей в XML-RPC для обхода защиты.
Если вы не используете мобильные приложения, сервис Jetpack или другие интеграции, которые требуют XML-RPC, его лучше отключить.
Как проверить, активен ли XML-RPC на вашем сайте
Для начала стоит проверить, работает ли XML-RPC на вашем сайте. Для этого достаточно обратиться по адресу https://ваш-сайт.ru/xmlrpc.php. Если вы увидите ответ «XML-RPC server accepts POST requests only.», значит протокол активен и работает.
Также можно проверить с помощью curl в командной строке:
curl -I https://ваш-сайт.ru/xmlrpc.php
Если в ответе будет статус 200, то XML-RPC включён.
Отключение XML-RPC через functions.php
Самый простой способ отключить XML-RPC — добавить специальный фильтр в файл functions.php вашей активной темы. Этот способ не требует установки дополнительных плагинов и не влияет на ядро WordPress.
Добавьте следующий код в functions.php:
<?php
// Отключение XML-RPC полностью
function wphow_disable_xmlrpc($methods) {
return [];
}
add_filter('xmlrpc_methods', 'wphow_disable_xmlrpc');
Этот фильтр полностью отключит все методы XML-RPC, сделав невозможным использование этого протокола.
Блокировка доступа к xmlrpc.php через .htaccess
Если у вас сайт на Apache, можно заблокировать доступ к xmlrpc.php на уровне веб-сервера. Для этого в корневом каталоге WordPress откройте или создайте файл .htaccess и добавьте туда такой код:
# Блокировка XML-RPC
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Этот способ блокирует все HTTP-запросы к файлу, что эффективно отключает XML-RPC. Минус — если вам нужно будет использовать мобильные приложения или Jetpack, они перестанут работать.
Отключение XML-RPC на Nginx
Если ваш сервер работает на Nginx, блокировать файл нужно через конфигурацию nginx.conf или отдельный конфигурационный файл сайта.
Добавьте следующий блок в конфигурацию внутри server {}:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
После внесения изменений перезапустите Nginx командой:
sudo systemctl reload nginx
Выборочное отключение XML-RPC с разрешением pingback
Если вам нужно отключить большинство функций XML-RPC, но оставить возможность для pingback (например, для обратных ссылок), можно использовать такой код в functions.php:
function wphow_disable_xmlrpc_methods_except_pingback($methods) {
foreach ($methods as $method => $callback) {
if ($method !== 'pingback.ping') {
unset($methods[$method]);
}
}
return $methods;
}
add_filter('xmlrpc_methods', 'wphow_disable_xmlrpc_methods_except_pingback');
Это полезно, если вы хотите ограничить возможности протокола, но сохранить функцию pingback.
Использование плагинов для управления XML-RPC
Если вы предпочитаете управлять XML-RPC через плагины, обратите внимание на следующие:
- Clearfy Pro — плагин для оптимизации WordPress с функцией отключения XML-RPC и других уязвимых точек;
- Disable XML-RPC — лёгкий плагин, который полностью отключает XML-RPC;
- WP Cerber Security — комплексная защита, где можно гибко настраивать доступ к XML-RPC.
Для установки Clearfy Pro с учётом UTM-меток для wphow.ru используйте ссылку: Clearfy Pro на WPSHOP.ru.
Проверка отключения XML-RPC после внесения изменений
После того, как вы отключили XML-RPC любым из способов, важно проверить, что протокол действительно недоступен. Самый простой способ — снова обратиться по адресу https://ваш-сайт.ru/xmlrpc.php. Теперь должен быть ответ 403 Forbidden или 404 Not Found.
Также можно использовать онлайн-сервисы проверки безопасности WordPress, например, securityheaders.com или специальные инструменты для тестирования XML-RPC.
Итоги и рекомендации
Отключение XML-RPC — хорошая практика повышения безопасности сайта на WordPress, особенно если вы не используете мобильные приложения и Jetpack. Самый безопасный и гибкий способ — добавить фильтр в functions.php или заблокировать на уровне веб-сервера.
Если нужна более тонкая настройка и другие функции безопасности, рассмотрите плагины типа Clearfy Pro.
Обязательно проверяйте работу сайта после внесения изменений, чтобы избежать сбоев в функционале, который зависит от XML-RPC.