Безопасность WordPress и файл xmlrpc.php
В этой статье мы разоберемся как обезопасить сайт на WordPress и отключить удаленный доступ, особенно если вы им не пользуетесь.
Для удаленного доступа к WordPress используется файл xmlrpc.php
который поддерживает функции включенные в PHP начиная с PHP 4.1.0 для написания серверов и клиентов XML-RPC.
Данный инструмент появился, когда WordPress только зарождался и скорость интернета не позволяла быстро создавать и публиковать записи на сайт. Существовал офлайн-клиент, в котором администратор создавал и редактировал записи, а затем через xmlrpc.php
записи публиковались на сайт.
В 2008 году было выпущено приложение WordPress для iPhone и поддержка XML-RPC была включена по умолчанию, без возможности отключить её через панель администратора.
Нужно ли оключать xmlrpc.php ?
Одна из важных причин, из-за которой стоит отключить XML-RPC — это угроза безопасности вашего сайта. Злоумышленники часто используют эту лазейку для взлома пароля от админки вашего сайта, а также для DDoS-атаки.
Также частой причиной нагрузки на CPU (центральный процессор) хостинга являются нежелательные подключение через XML-RPC, из-за чего работа вашего хостинга может быть приостановлена.
Как проверить, включен ли XML-RPC на вашем сайте
Проверить можно с помощью XML-RPC Validator. Для этого:
- Перейдите на сайт XML-RPC Validator.
- В поле Address введите ваш домен и нажмите Check:
-
Если вы получили сообщение «Congratulation! Your site passed the first check», то
xmlrpc.php
на вашем сайте включен.Если ответ «Failed to check your site at http://domain.ru because of the following error», то
xmlrpc.php
отключен.
Как отключить?
Чтобы отключить XML-RPC вручную без установки плагина нужно:
- Перейдите в корневую папку вашего сайта на WordPress
- Откроыть или создать (если он отсутствует) файл .htaccess и вставьте в конце файла строки:
# Block XML-RPC requests <Files xmlrpc.php> Order Allow,Deny Deny from all </Files>
- Сохранить изменения.
После отключения XML-RPC доступ через xmlrpc.php
будет закрыт. Тем самым вы дополнительно обезопасите свой сайт и сможете избежать блокировки услуги хостинга из-за нагрузки на CPU.
Как удалить код связанный с xmlrpc.php ?
Как правило при подключении шаблона «шапки» сайта вызывается хук wp_head()
, который выводит различные теги, в том числе и теги для подключения XML-RPC:
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://ваш.домен/xmlrpc.php?rsd"> <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://ваш.домен/wp-includes/wlwmanifest.xml">
Для их отключения нужно прописать в файле functions.php
следующиц код:
function removeHeadLinks() { remove_action('wp_head', 'rsd_link'); remove_action('wp_head', 'wlwmanifest_link'); } add_action('init', 'removeHeadLinks');
И если вам не нужна дистанционное управление, pingback или trackbacks, наверное проще всего удалить xmlrpc.php
файл с вашего сервера. Или просто переименовать его в нечто неописуемое. В любом случае, если скрипт недоступен для злоумышленника, это затруднит его использование.
Частичное отключение XML-RPC
Если вам все же нужен XML-RPC, то можно ограничить удаленный доступ определенными адресами. Пропишите этот код в файл .htaccess
и впишите свои адреса, по которым будет доступен этот функционал:
# Block XML-RPC requests <Files xmlrpc.php> Order Deny,Allow Deny from all Allow from 192.168.1.1 Allow from 10.0.0.0/100 </Files>