XML-RPC — это протокол, который позволяет удалённо взаимодействовать с сайтом WordPress через API, например, для публикации записей из мобильных приложений или сторонних сервисов. Однако XML-RPC часто становится причиной уязвимостей и атак, таких как перебор паролей (brute force) и DDoS. В этой статье мы разберём, как полностью отключить или запретить доступ к XML-RPC для повышения безопасности вашего сайта.
Что такое XML-RPC и зачем его отключать
XML-RPC — это устаревший протокол, который используется для удалённого управления WordPress. Он включён по умолчанию и работает через файл xmlrpc.php в корне сайта. Несмотря на полезность, XML-RPC часто становится мишенью для злоумышленников из-за следующих причин:
- Частые атаки перебором паролей через XML-RPC.
- Атаки типа "pingback" для DDoS.
- Уязвимости в плагинах и темах, взаимодействующих с XML-RPC.
Если вы не используете мобильные приложения WordPress или внешние сервисы, которые требуют XML-RPC, лучше его отключить.
Как отключить XML-RPC в WordPress с помощью кода
Для отключения XML-RPC можно добавить специальный фильтр в файл functions.php вашей темы или в отдельный плагин. Этот способ полностью блокирует доступ к API.
Добавление фильтра для отключения XML-RPC
<?php
// wpconfig_disable_xmlrpc отключает работу XML-RPC в WordPress
add_filter('xmlrpc_enabled', '__return_false');
Этот код говорит системе WordPress не включать XML-RPC. Однако файл xmlrpc.php останется доступен, и запросы к нему будут возвращать ошибку 403.
Дополнительная блокировка через .htaccess
Для дополнительной защиты можно запретить доступ к xmlrpc.php на уровне веб-сервера Apache. Добавьте в файл .htaccess в корневой директории сайта следующий код:
# Блокируем доступ к xmlrpc.php
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Для Nginx можно использовать правило в конфигурации:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
Использование плагинов для управления XML-RPC
Если вы не хотите править код вручную, рекомендуем использовать плагины, которые позволяют гибко управлять доступом к XML-RPC.
Disable XML-RPC
Простой и лёгкий плагин, который полностью отключает XML-RPC одним кликом. Он автоматически добавляет необходимые фильтры и правила.
Скачать и подробнее: Disable XML-RPC на WPSHOP
Wordfence Security
Мощный плагин безопасности, который позволяет блокировать XML-RPC атаки и ограничивать доступ по IP, а также имеет множество других функций защиты.
Как проверить, отключен ли XML-RPC на сайте
Для проверки статуса XML-RPC используйте следующие методы:
- Попробуйте открыть
https://ваш_сайт/xmlrpc.phpв браузере. Если ответ — «XML-RPC server accepts POST requests only.», значит XML-RPC включён. - Если вы видите ошибку 403 или 404, значит доступ заблокирован.
- Можно использовать онлайн-сервисы проверки XML-RPC, например xmlrpc.eritreo.it.
Советы для повышения безопасности при необходимости использования XML-RPC
Если вы не можете отключить XML-RPC, например, используете мобильное приложение WordPress, выполните следующие рекомендации:
- Ограничьте доступ к
xmlrpc.phpпо IP-адресам через.htaccessили конфигурацию сервера. - Используйте плагины, которые отслеживают и блокируют подозрительные запросы (например, Wordfence).
- Отключите функциональность pingback, которая часто используется для DDoS-атак. Для этого добавьте в
functions.php:
<?php
// wpconfig_disable_xmlrpc_pingback отключает XML-RPC pingback
add_filter('xmlrpc_methods', function($methods) {
unset($methods['pingback.ping']);
return $methods;
});
Это отключит возможность отправки pingback-запросов через XML-RPC.
Выводы и рекомендации
Отключение XML-RPC — простой и эффективный способ повысить безопасность WordPress-сайта. Если вы уверены, что этот протокол вам не нужен, примените приведённые методы и защитите сайт от возможных угроз. В противном случае используйте плагины и ограничения доступа для минимизации рисков.