XML-RPC — это протокол, который используется WordPress для удалённого взаимодействия с сайтом, например, для публикации записей через мобильные приложения или внешние сервисы. Однако XML-RPC часто становится объектом атак, таких как перебор паролей (brute force) и DDoS-атаки, поэтому в ряде случаев его целесообразно отключать.
Что такое XML-RPC и зачем он нужен в WordPress
XML-RPC — это стандарт, позволяющий приложениям обмениваться данными через удалённые вызовы процедур (RPC) с использованием XML. В WordPress он реализован в файле xmlrpc.php и позволяет выполнять операции, включая добавление постов, редактирование, удаление, а также управление комментариями и пользователями.
Несмотря на удобство, если вы не используете мобильные приложения или внешние сервисы для публикации, XML-RPC становится потенциальной дырой в безопасности.
Поэтому перед отключением XML-RPC стоит понять, используете ли вы его функционал. Если нет — отключайте.
Причины для отключения XML-RPC
Основные проблемы, связанные с XML-RPC:
- Brute force атаки. XML-RPC позволяет отправлять множество запросов с одним HTTP-запросом (метод
system.multicall), что облегчает перебор паролей. - DDoS-атаки. Злоумышленники могут нагружать сервер множеством XML-RPC запросов, вызывая падение сайта.
- Уязвимости плагинов. Иногда плагины, расширяющие XML-RPC, содержат уязвимости, которые могут быть использованы для взлома.
Поэтому если функционал XML-RPC вам не нужен, его лучше отключить.
Способы отключения XML-RPC в WordPress
Отключение через functions.php
Самый простой способ — добавить в файл functions.php активной темы следующий код, который полностью отключит XML-RPC:
function wpexperts_disable_xmlrpc() {
add_filter('xmlrpc_enabled', '__return_false');
}
add_action('init', 'wpexperts_disable_xmlrpc');Этот код возвращает false для фильтра xmlrpc_enabled, что полностью отключает работу протокола.
Отключение через .htaccess (Apache)
Если у вас сервер Apache, можно запретить доступ к файлу xmlrpc.php на уровне веб-сервера. Добавьте в корень сайта в файл .htaccess следующий код:
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>Это полностью заблокирует доступ к xmlrpc.php из интернета.
Отключение через Nginx
Для Nginx добавьте в конфигурацию сайта:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}После внесения изменений необходимо перезагрузить Nginx.
Плагины для управления XML-RPC
Если вы предпочитаете удобный интерфейс, можно использовать плагины, которые отключают XML-RPC или контролируют его работу.
- Disable XML-RPC — простой плагин для отключения XML-RPC.
- Stop XML-RPC Attacks — блокирует опасные методы XML-RPC, оставляя базовую функциональность.
- Clearfy Pro — плагин для комплексной оптимизации и безопасности WordPress, включая гибкое управление XML-RPC.
Проверка работы XML-RPC и диагностика
После отключения XML-RPC стоит проверить, действительно ли он не доступен. Для этого можно использовать онлайн-сервисы, например, xmlrpc.eritreo.it или отправить запрос самостоятельно с помощью curl:
curl -d '<methodCall><methodName>system.listMethods</methodName></methodCall>' -H "Content-Type: text/xml" https://ваш_сайт/xmlrpc.phpЕсли XML-RPC отключён, вы получите ошибку 403 или пустой ответ.
Заключение: стоит ли отключать XML-RPC?
Если вы не используете внешние приложения для публикации и не планируете интеграцию через XML-RPC, отключение протокола повысит безопасность сайта. Особенно это актуально для сайтов с частыми попытками взлома.
Однако, если вы используете мобильные приложения WordPress или сервисы, которые требуют XML-RPC, можно рассмотреть частичное ограничение доступа или защиту с помощью плагинов.
Также рекомендуем регулярно обновлять WordPress и плагины, чтобы минимизировать риски, связанные с уязвимостями.