WPExperts

Как отключить XML-RPC в WordPress для повышения безопасности

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 и плагины, чтобы минимизировать риски, связанные с уязвимостями.

×
до 3225₽

Продавай темы и плагины WordPress!

Лови с каждой продажи

Начать ⋙