XML-RPC — это протокол удалённого взаимодействия с WordPress, который позволяет приложениям и сервисам управлять сайтом через внешние запросы. Несмотря на удобство, XML-RPC часто становится причиной уязвимостей и атак на сайт, таких как перебор паролей (brute-force) и DDoS. В этой статье рассмотрим, как отключить XML-RPC в WordPress, какие существуют способы защиты и когда стоит оставлять его включённым.
Что такое XML-RPC и зачем он нужен в WordPress
XML-RPC — это легковесный протокол удалённого вызова процедур, который WordPress использует для взаимодействия с мобильными приложениями, внешними сервисами и некоторыми плагинами. Через XML-RPC можно выполнять действия: публиковать записи, редактировать контент, управлять комментариями, загружать файлы и так далее.
Однако с ростом популярности WordPress, XML-RPC стал объектом массовых атак. Злоумышленники используют протокол для перебора паролей, проведения DDoS-атак и обхода ограничений по IP.
Если вы не используете внешние приложения или сервисы, которые требуют XML-RPC, разумно его отключить.
Как проверить, включён ли XML-RPC на сайте
Для проверки доступности XML-RPC можно отправить POST-запрос на https://ваш-сайт.ru/xmlrpc.php. Если сервер отвечает 405 или 200, значит протокол активен.
Также можно воспользоваться онлайн-сервисами или плагинами, например, XML-RPC Checker.
Способы отключения XML-RPC в WordPress
1. Отключение через functions.php темы
Самый простой способ — добавить в файл functions.php вашей активной темы следующий код:
function wpsolution_disable_xmlrpc() {
add_filter('xmlrpc_enabled', '__return_false');
}
add_action('init', 'wpsolution_disable_xmlrpc');Этот код отключит XML-RPC API, при этом файл xmlrpc.php останется доступен, но сервер не будет отвечать на запросы протокола.
2. Отключение через .htaccess (для Apache)
Для более жёсткой блокировки можно запретить доступ к файлу xmlrpc.php на уровне веб-сервера, добавив в файл .htaccess в корне сайта следующий код:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>Для Nginx добавьте в конфигурацию сервера:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}3. Использование плагинов для отключения XML-RPC
Если не хотите редактировать код, можно использовать плагины, которые отключают XML-RPC и обеспечивают дополнительную защиту:
- Disable XML-RPC — простой плагин, который полностью отключает протокол.
- iThemes Security — комплексный плагин безопасности с возможностью блокировки XML-RPC.
- Clearfy Pro — многофункциональный оптимизатор и защитник WordPress, в том числе с функцией отключения XML-RPC. Подробнее на официальной странице.
Когда отключать XML-RPC не стоит
Если вы используете мобильные приложения WordPress, Jetpack, внешние сервисы публикации или плагины, которые работают через XML-RPC, то отключение протокола приведёт к их некорректной работе.
В таких случаях рекомендуется не отключать XML-RPC полностью, а ограничить к нему доступ, например, с помощью брандмауэра, ограничить запросы по IP или внедрить двухфакторную аутентификацию.
Пример ограничения доступа к XML-RPC по IP
Если вы знаете IP-адреса, с которых должны приходить легитимные запросы, можно разрешить доступ только с них. Для Apache в .htaccess:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
Allow from 123.45.67.89
Allow from 98.76.54.32
</Files>Замените 123.45.67.89 и 98.76.54.32 на нужные IP.
Заключение
Отключение XML-RPC — важный шаг к повышению безопасности WordPress сайта. Выбор метода зависит от ваших задач и используемых функций. Если не требуется работа внешних приложений, лучше полностью отключить протокол с помощью кода или плагина. Если же XML-RPC нужен, ограничьте доступ и усилите защиту.