Что такое XML-RPC и почему его отключают
XML-RPC — это протокол удалённого вызова процедур, встроенный в WordPress. Он позволяет приложениям и сервисам взаимодействовать с сайтом (например, мобильным приложениям, Jetpack). Однако XML-RPC часто используется злоумышленниками для проведения DDoS-атак, перебора паролей и других видов взломов. Если вы не используете приложения, требующие XML-RPC, его отключение повысит безопасность вашего сайта.
Как диагностировать активность XML-RPC на сайте
Чтобы проверить, активен ли XML-RPC, выполните следующие шаги:
- Попытайтесь обратиться к
https://ваш-сайт.ru/xmlrpc.phpчерез браузер. Если видите ответ с HTTP 405 или 403, XML-RPC отключен или ограничен. Если видите HTTP 200 и пустой ответ, сервис активен. - Посмотрите логи сервера на частые запросы к
xmlrpc.php. Если их много, сайт возможно подвергается атакам. - Используйте онлайн-сервисы или сканеры безопасности, например плагин XML-RPC User Agent для анализа активности (временно установите для диагностики, затем удалите).
Пошаговое отключение XML-RPC через .htaccess
Самый простой способ — блокировать доступ к xmlrpc.php через веб-сервер Apache с помощью файла .htaccess. Добавьте следующий код в корень сайта (где расположен wp-config.php):
# Блокировка xmlrpc.php для всех запросов
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Этот код полностью блокирует доступ к xmlrpc.php, отдавая ошибку 403 Forbidden.
Отключение XML-RPC через functions.php
Если вы не хотите блокировать через сервер, можно отключить обработку запросов на уровне WordPress. Добавьте в файл functions.php вашей темы или в собственный плагин следующий код:
add_filter('xmlrpc_enabled', '__return_false');
Этот фильтр говорит WordPress игнорировать все XML-RPC запросы. Однако сам файл xmlrpc.php останется доступен, что может быть нежелательно.
Сравнение методов блокировки XML-RPC
| Метод | Плюсы | Минусы |
|---|---|---|
| Блокировка через .htaccess | Полная блокировка на уровне сервера, высокая производительность, простой код | Работает только на Apache серверах, требует доступа к файлам |
| Отключение через фильтр xmlrpc_enabled | Работает на всех серверах, легко внедряется в тему/плагин | Файл xmlrpc.php остаётся доступен, возможны атаки на файл |
| Использование плагинов безопасности | Управление через UI, дополнительные функции защиты | Нагрузка на сайт, возможны конфликты |
Как проверить, что XML-RPC отключен
После внедрения блокировки выполните проверку:
- Откройте в браузере
https://ваш-сайт.ru/xmlrpc.php. Если видите ошибку 403 или сообщение о запрете доступа — блокировка сработала. - Используйте команду curl для проверки HTTP-кода:
curl -I https://ваш-сайт.ru/xmlrpc.php
В ответ должно быть HTTP/1.1 403 Forbidden или HTTP/1.1 405 Method Not Allowed.
Частые ошибки при отключении XML-RPC и их решения
- Файл xmlrpc.php остаётся доступен после фильтра: фильтр
xmlrpc_enabledне блокирует доступ к файлу, а только отключает обработку. Для полной безопасности используйте блокировку через .htaccess. - Ошибка 500 после внесения правил в .htaccess: проверьте синтаксис и наличие модуля mod_authz_host. В новых версиях Apache используйте директивы
Require all deniedвместоOrder Deny,Allow:
<Files xmlrpc.php>
Require all denied
</Files>
Практические советы по безопасности и производительности
- Если блокируете через .htaccess, убедитесь, что правила применяются именно в корне сайта.
- Обновляйте WordPress и плагины, чтобы минимизировать риски через XML-RPC.
- Для сайтов на Nginx используйте аналогичные правила в конфигурации сервера:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
- Для мониторинга атак используйте плагины безопасности (например, Wordfence) или сервисы WAF.
- Если нужен доступ к XML-RPC, ограничьте его IP-адресами доверенных сервисов.