XML-RPC — это протокол, который позволяет удалённо управлять сайтом WordPress, например, через мобильные приложения или внешние сервисы. Однако он часто становится уязвимостью, которую злоумышленники используют для проведения атак, включая перебор паролей и DDoS.
Что такое XML-RPC и почему его отключение важно
XML-RPC был внедрён в WordPress для упрощения взаимодействия с внешними приложениями и сервисами. Он позволяет выполнять такие операции, как публикация записей, редактирование и удаление контента удалённо.
Несмотря на свою полезность, XML-RPC часто становится целью для злоумышленников, так как через него можно запускать массовые атаки типа brute force или amplification DDoS. В результате сайт может потерять доступность, а учётные записи — быть скомпрометированы.
Если вы не используете мобильные приложения WordPress или внешние сервисы, которые требуют XML-RPC, лучше отключить этот протокол, чтобы повысить безопасность вашего сайта.
Как определить, используется ли XML-RPC на вашем сайте
Перед отключением стоит проверить, не зависит ли ваш сайт от XML-RPC. Для этого:
- Если вы не используете официальное мобильное приложение WordPress или сторонние сервисы публикации, скорее всего, XML-RPC не нужен.
- Проверьте логи сервера на наличие запросов к
xmlrpc.php. Частые запросы могут указывать на использование или атаки. - Используйте инструменты безопасности, такие как Wordfence, которые могут показать активность XML-RPC.
Способы отключения XML-RPC в WordPress
Отключение через functions.php темы
Самый простой способ — добавить специальный фильтр в файл functions.php активной темы. Этот фильтр блокирует доступ к XML-RPC, возвращая ошибку при попытке обращения.
<?php
function wplogin_disable_xmlrpc() {
return false;
}
add_filter('xmlrpc_enabled', 'wplogin_disable_xmlrpc');
?>Добавьте этот код в конец файла functions.php, и протокол будет отключён.
Блокировка через .htaccess (для Apache)
Если у вас есть доступ к файлу .htaccess, можно заблокировать доступ к xmlrpc.php на уровне сервера:
# Block XML-RPC requests
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>Этот метод эффективен, но может вызвать проблемы, если вы используете сервисы, которые полагаются на XML-RPC.
Блокировка через Nginx
Для сайтов, работающих на Nginx, добавьте в конфигурацию сервера:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}После внесения изменений перезапустите Nginx.
Использование плагинов для управления XML-RPC
Если вы предпочитаете использовать готовые решения, обратите внимание на следующие плагины:
- Disable XML-RPC — простой плагин, который отключает все запросы к
xmlrpc.php. - Clearfy Pro — комплексный плагин для оптимизации и безопасности WordPress, включает функцию отключения XML-RPC и многое другое. Подробнее на официальном сайте.
- Wordfence Security — мощный плагин безопасности, позволяющий фильтровать и блокировать нежелательные запросы, включая XML-RPC.
Как частично ограничить XML-RPC, не отключая полностью
Если вы хотите сохранить функционал XML-RPC для некоторых IP или приложений, но ограничить злоупотребления, можно использовать фильтр для проверки IP-адреса:
<?php
function wplogin_restrict_xmlrpc_ip( $allowed, $host ) {
$allowed_ips = array('123.123.123.123', '111.111.111.111'); // замените на свои IP
if ( ! in_array( $host, $allowed_ips ) ) {
return false;
}
return $allowed;
}
add_filter( 'xmlrpc_ip_blacklist', 'wplogin_restrict_xmlrpc_ip', 10, 2 );
?>Этот код разрешит доступ к XML-RPC только с определённых IP-адресов.
Как проверить, что XML-RPC отключён
После применения изменений протестируйте доступ к xmlrpc.php:
- Попробуйте в браузере перейти по адресу
https://ваш-сайт.ru/xmlrpc.php. Если вы видите сообщениеXML-RPC server accepts POST requests only., значит файл доступен (не отключён). - Если видите ошибку 403 или 404, значит блокировка работает.
- Для более точного теста можно использовать специальные онлайн-сервисы проверки XML-RPC или плагины безопасности.
Заключение
Отключение XML-RPC — важный шаг для повышения безопасности WordPress-сайта, особенно если вы не используете функции удалённого управления. Самый простой и безопасный способ — добавить фильтр в functions.php или использовать плагины, такие как Clearfy Pro.
При необходимости сохранения функционала XML-RPC можно ограничить доступ по IP, минимизировав риски.
Используйте приведённые методы и рекомендации для защиты своего сайта от распространённых атак через XML-RPC.