XML-RPC — это протокол, который используется для взаимодействия с WordPress удаленно, например, для публикации записей из мобильных приложений или внешних сервисов. Несмотря на пользу, он часто становится причиной проблем с безопасностью, поскольку используется злоумышленниками для атак типа brute force, DDoS и других видов взлома.
Что такое XML-RPC и почему его стоит отключить
XML-RPC — это API, который позволяет удаленно управлять сайтом WordPress. Он включен по умолчанию и доступен по адресу https://ваш-сайт.ru/xmlrpc.php. Эта технология удобна для некоторых, но если вы не используете внешние приложения для публикации или управления сайтом, лучше отключить XML-RPC для снижения рисков.
Основные угрозы при активном XML-RPC:
- Атаки перебором паролей (brute force) через метод
system.multicall; - Увеличение нагрузки на сервер из-за массовых запросов;
- Возможность использования уязвимостей в самом протоколе или плагинах.
Отключение XML-RPC поможет существенно повысить безопасность без потери функционала, если вы не используете удаленное управление.
Как проверить, активен ли XML-RPC на сайте
Для проверки откройте в браузере URL https://ваш-сайт.ru/xmlrpc.php. Если видите сообщение «XML-RPC server accepts POST requests only.», значит сервис активен. Если страница возвращает 404 или 403, значит XML-RPC отключен или заблокирован.
Также можно использовать инструменты безопасности и сканеры уязвимостей, чтобы убедиться, что этот сервис не доступен для злоумышленников.
Отключение XML-RPC в WordPress через код
Самый простой способ — добавить фильтр, который полностью отключит XML-RPC. В файл functions.php вашей темы или в плагин для кастомных функций вставьте следующий код:
add_filter('xmlrpc_enabled', '__return_false');Этот фильтр отключает поддержку XML-RPC на уровне ядра WordPress, что эффективно блокирует все запросы к xmlrpc.php.
Если вам нужно частично ограничить доступ, например, разрешить только определенным IP, можно использовать хук xmlrpc_call для проверки и прерывания вызовов.
Пример ограничения доступа по IP
function wpskill_restrict_xmlrpc_access() {
$allowed_ips = ['123.45.67.89', '98.76.54.32'];
if (!in_array($_SERVER['REMOTE_ADDR'], $allowed_ips)) {
status_header(403);
exit('Доступ запрещен');
}
}
add_action('xmlrpc_call', 'wpskill_restrict_xmlrpc_access');В этом примере доступ к XML-RPC получат только IP из массива $allowed_ips.
Отключение XML-RPC с помощью плагинов
Если вы не хотите работать с кодом, можно воспользоваться плагинами:
- Disable XML-RPC — простой плагин, который отключает XML-RPC одним кликом.
- Clearfy (https://wpshop.ru/clearfy-pro?utm_source=wpskill.ru&utm_medium=article&utm_campaign=kak-otklyuchit-xml-rpc-v-wordpress-dlya-povysheniya-bezopasnosti) — многофункциональный плагин для оптимизации и безопасности, в том числе умеет отключать XML-RPC и другие неиспользуемые функции WordPress.
Плагины хороши, если вы хотите быстро и без риска править код, а также получить дополнительные опции для защиты сайта.
Блокировка XML-RPC на уровне сервера
Для дополнительной защиты можно заблокировать доступ к xmlrpc.php через настройки сервера или .htaccess. Например, для Apache добавьте в .htaccess:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>Или для nginx в конфигурации сайта:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}Эти меры эффективны, если по каким-то причинам WordPress не смог отключить XML-RPC, или вы хотите защититься от обхода на уровне веб-сервера.
Проверка после отключения и рекомендации
После внесения изменений обязательно проверьте, что протокол действительно отключен. Для этого можно повторно зайти на https://ваш-сайт.ru/xmlrpc.php или использовать специализированные сканеры безопасности.
Если вы используете приложения для публикации или внешние сервисы, убедитесь, что они работают корректно без XML-RPC, либо настройте исключения.
В целом отключение XML-RPC — простой и эффективный способ повысить безопасность WordPress-сайта без ущерба производительности и функционала.