XML-RPC — это протокол, который позволяет удалённо управлять сайтом на WordPress, публиковать записи, использовать мобильные приложения и различные сервисы. Однако этот механизм часто становится целью атак, таких как Brute Force или DDoS, так как он открывает дополнительные точки входа в систему.
Что такое XML-RPC и почему его стоит отключать
XML-RPC — это API-интерфейс, который был внедрён в WordPress для взаимодействия с внешними приложениями. Он позволяет выполнять такие действия, как публикация постов, редактирование и удаление контента, аутентификация через сторонние сервисы и прочее.
Несмотря на свои полезные функции, XML-RPC часто используется злоумышленниками для перебора паролей (Brute Force) или для проведения DDoS-атак через метод system.multicall. Многие сайты, не использующие мобильные приложения или внешние сервисы, могут смело отключить этот протокол, тем самым повысив безопасность.
Если вы не используете мобильное приложение WordPress, Jetpack, или другие внешние интеграции, отключение XML-RPC — простое и эффективное решение для защиты сайта.
Способы отключения XML-RPC в WordPress
1. Отключение через functions.php
Самый простой способ — добавить код в файл functions.php вашей темы или в отдельный плагин:
function wpmy_disable_xmlrpc() {
add_filter('xmlrpc_enabled', '__return_false');
}
add_action('init', 'wpmy_disable_xmlrpc');Этот хук возвращает false для проверки включённости XML-RPC, фактически отключая его.
2. Отключение через .htaccess
Если у вас есть доступ к серверу Apache, можно полностью блокировать доступ к файлу xmlrpc.php прямо на уровне сервера. Добавьте в корневой .htaccess следующий код:
# Блокировка xmlrpc.php
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>Этот метод полностью заблокирует запросы к XML-RPC, что эффективно защищает от любых попыток его использования.
3. Использование плагинов для отключения XML-RPC
Если вы предпочитаете решение без кода, воспользуйтесь специализированными плагинами, например:
- Disable XML-RPC — простой плагин, который отключает XML-RPC в один клик.
- Clearfy Pro — коммерческий плагин для оптимизации и защиты сайта, в том числе позволяет гибко управлять доступом к XML-RPC.
Как проверить, включён ли XML-RPC на сайте
Для проверки статуса XML-RPC можно использовать онлайн-сервисы или вручную отправить запрос на https://ваш-сайт.ru/xmlrpc.php. Если вы видите ответ с текстом XML-RPC server accepts POST requests only., значит XML-RPC работает.
Также можно проверить с помощью curl:
curl -i https://ваш-сайт.ru/xmlrpc.phpОтвет с кодом 405 или 403 говорит о том, что доступ заблокирован или отключён.
Дополнительные рекомендации по безопасности
Отключение XML-RPC — важный шаг, но не единственный для защиты WordPress:
- Используйте двухфакторную аутентификацию (2FA) для входа.
- Ограничьте количество попыток входа (например, плагином Limit Login Attempts Reloaded).
- Регулярно обновляйте ядро, темы и плагины.
- Используйте комплексные плагины безопасности, например, Clearfy Pro, который поможет не только отключить XML-RPC, но и оптимизировать сайт.
Пример создания собственного фильтра для отключения xmlrpc.php с логированием попыток
Если требуется не просто отключить XML-RPC, а также вести учёт попыток его вызова, можно использовать такой код:
function wpmy_block_xmlrpc_requests() {
if (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) {
error_log('Попытка вызова XML-RPC: ' . $_SERVER['REMOTE_ADDR']);
wp_die('Доступ к XML-RPC запрещён.', '403 Forbidden', array('response' => 403));
}
}
add_action('init', 'wpmy_block_xmlrpc_requests');Этот код проверяет, является ли текущий запрос XML-RPC, записывает IP адрес в лог ошибок и завершает выполнение с ошибкой 403.
Такой подход полезен для администраторов, которые хотят контролировать атаки и попытки доступа к XML-RPC.