XML-RPC — это протокол, который позволяет удалённо управлять сайтом WordPress через внешние приложения. Он используется для публикации постов через мобильные приложения, работу с внешними сервисами и интеграции. Однако вместе с удобством XML-RPC приносит и серьезные проблемы с безопасностью, так как часто становится целью атак злоумышленников, в том числе перебора паролей и DDoS-атак.
Что такое XML-RPC и зачем он нужен в WordPress
XML-RPC — это удалённый вызов процедур (Remote Procedure Call), который реализован в WordPress для взаимодействия с внешними сервисами. Он включён по умолчанию и доступен по адресу https://ваш-сайт.ru/xmlrpc.php.
XML-RPC используется для:
- публикации и редактирования записей с мобильных приложений;
- доступа к сайту через сторонние клиенты и сервисы;
- интеграции с внешними инструментами, например, Jetpack;
- поддержки некоторых плагинов, требующих удалённого вызова функций.
Несмотря на удобство, если вы не используете эти функции, лучше отключить XML-RPC для минимизации рисков безопасности.
Почему стоит отключить XML-RPC: основные угрозы
XML-RPC часто становится уязвимостью по следующим причинам:
- Атаки перебором паролей (Brute Force): злоумышленники могут использовать метод
system.multicallдля многократной отправки запросов с попытками подобрать пароль; - DDoS-атаки: XML-RPC позволяет отправлять множество запросов с одного IP, что может привести к перегрузке сервера;
- Использование уязвимостей в плагинах и темах: некоторые плагины используют XML-RPC, и при неправильной настройке они могут быть скомпрометированы;
- Недостаток контроля доступа: по умолчанию XML-RPC открыт и не ограничен по IP или другим параметрам.
Если вы не используете мобильные приложения и внешние сервисы, отключение XML-RPC — лучший способ защитить сайт.
Как отключить XML-RPC в WordPress: 3 простых способа
1. Отключение через functions.php темы
В файл functions.php вашей активной темы добавьте следующий код, чтобы полностью заблокировать доступ к xmlrpc.php:
function wpupdate_disable_xmlrpc() {
add_filter('xmlrpc_enabled', '__return_false');
}
add_action('init', 'wpupdate_disable_xmlrpc');Этот фильтр отключит обработку XML-RPC на уровне ядра WordPress.
2. Отключение через .htaccess (Apache)
Если ваш сервер работает на Apache, добавьте в корневой .htaccess сайта следующий код, чтобы запретить доступ к файлу xmlrpc.php:
<Files xmlrpc.php>
Order deny,allow
Deny from all
</Files>Это самый надёжный способ заблокировать запросы на уровне веб-сервера, снижая нагрузку на WordPress.
3. Использование плагина для отключения XML-RPC
Если вы не хотите редактировать код, можно установить плагин. Рекомендуемые плагины:
- Disable XML-RPC — простой и лёгкий плагин для отключения;
- Disable XML-RPC Authentication — отключает аутентификацию через XML-RPC;
- Clearfy Pro — многофункциональный плагин для оптимизации и безопасности сайта, включая отключение XML-RPC.
Проверка отключения XML-RPC
После отключения XML-RPC проверьте его статус. Для этого откройте в браузере https://ваш-сайт.ru/xmlrpc.php. Если вы видите сообщение «XML-RPC server accepts POST requests only.», значит XML-RPC включён. При успешном отключении вы должны получить ошибку 403 или пустую страницу.
Также можно использовать онлайн-сервисы проверки безопасности WordPress, например, WPScan, которые покажут статус XML-RPC.
Дополнительные меры безопасности для XML-RPC
Ограничение доступа по IP
Если вы используете XML-RPC, но хотите ограничить доступ только с определённых IP-адресов, добавьте в .htaccess:
<Files xmlrpc.php>
Order deny,allow
Deny from all
Allow from 123.123.123.123
</Files>Замените 123.123.123.123 на IP, с которого разрешён доступ.
Мониторинг активности XML-RPC
Для отслеживания активности можно использовать плагины безопасности, например Clearfy Pro, которые уведомляют об подозрительных запросах и попытках взлома через XML-RPC.
Использование двухфакторной аутентификации
Если отключать XML-RPC нельзя, обязательно настройте двухфакторную аутентификацию (2FA) для пользователей с правами администратора. Это значительно повысит безопасность и защитит от перебора паролей.
Пример функции для wpupdate.ru: отключение XML-RPC и логирование попыток доступа
function wpupdate_disable_xmlrpc_with_log() {
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', 'wpupdate_disable_xmlrpc_with_log');Этот код не только запретит доступ к XML-RPC, но и запишет в лог IP-адреса, с которых были попытки обращения, что поможет в дальнейшем анализе атак.
Заключение
Отключение XML-RPC — простой и эффективный способ повысить безопасность вашего WordPress-сайта. Если же вы используете функции, завязанные на XML-RPC, обязательно ограничьте доступ по IP, используйте двухфакторную аутентификацию и контролируйте активность через плагины безопасности. Для автоматизации и комплексной защиты рекомендуем обратить внимание на Clearfy Pro, который поможет быстро и безопасно управлять настройками сайта.