http://wm-monitoring.ru/ ')) {alert('Спасибо за то что установили нашу кнопку! =)');} else {alert('Очень жаль! =(');}"> http://wm-monitoring.ru/

Закрытие XML-RPC уязвимости в WordPress

Опубликовано: 23.08.2018

Технология XML-RPC применяется в системе WordPress для разных приятных фишек по типу пингбэков, трекбеков, удаленного управления сайтом без входа в админку и т.п. К сожалению, злоумышленники могут использовать ее для DDoS атаки на сайты. То есть вы создаете красивые интересные WP проекты для себя или на заказ и при этом, ничего не подозревая, можете быть частью ботнета для DDoS`а. Соединяя воедино десятки и сотни тысяч площадок, нехорошие люди создают мощнейшую атаку на свою жертву. Хотя при этом ваш сайт также страдает, т.к. нагрузка идет на хостинг, где он размещен.

Свидетельством такой нехорошей активности могут быть логи сервера (access.log в nginx), содержащие следующие строки:

103.238.80.27 - - [30/Jul/2015:23:59:01 +0300] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" 103.238.80.27 - - [30/Jul/2015:23:59:01 +0300] "POST /xmlrpc.php HTTP/1.0" 499 0 "-"

103.238.80.27 - - [30/Jul/2015:23:59:01 +0300] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" 103.238.80.27 - - [30/Jul/2015:23:59:01 +0300] "POST /xmlrpc.php HTTP/1.0" 499 0 "-"

Вы видите, что обращения идут к файлу xmlrpc.php причем с кодом 499, означающим, что клиент закрыл соединение до получения ответа сервера.

Если же вы наблюдаете запросы по типу:

103.238.80.27 - - [30/Jul/2015:23:59:01 +0300] «POST /wp-login.php HTTP/1.0» 200 5791 "-" "-"

103.238.80.27 - - [30/Jul/2015:23:59:01 +0300] «POST /wp-login.php HTTP/1.0» 200 5791 "-" "-"

То это свидетельствует о попытках перебора пароля для взлома админки. По этой теме советую почитать про защиту от Flood (Brute Force) атак . Если речь идет о WordPress, то в той же статье есть несколько полезных плагинов. Также можно использовать Protected wp-login или Login Attempts который многие считают необходимым .

Но вернемся к уязвимости XML-RPC. Визуально она проявляется в медленном открытии сайтов на вашем сервере или же невозможностью их загрузки вообще (502 ошибка Bad Gateway). В тех.поддержке моего хостера FASTVPS подтвердили догадки и посоветовали:

Обновить WordPress до последней версии вместе с плагинами. Вообще, если вы следите за новостями WordPress , то могли читать о необходимости установки последней 4.2.3. из-за критических замечаний в безопасности (точно также как предыдущих версий). Короче говоря, обновляться полезно. Установить плагин Disable XML-RPC Pingback.

Раньше, как мне кажется, опция включения/отключения XML-RPC была где-то в настройках системы, однако сейчас не могу ее там найти. Поэтому самый простой метод избавиться от нее — использовать соответствующий плагин.

Найти и скачать Disable XML-RPC Pingback можно тут либо установив его непосредственно из админки системы. Вам не нужно ничего дополнительно настраивать, модуль сразу же начинает работать. Он удаляет методы pingback.ping и pingback.extensions.getPingbacks из XML-RPC интерфейса. Кроме того, удаляет X-Pingback из HTTP заголовков.

В одном из блогов нашел еще парочку вариантов удаления отключения XML-RPC.

1. Отключение XML-RPC в шаблоне.

Для этого в файл функций темы functions.php добавляется строка:

add_filter ( 'xmlrpc_enabled' , '__return_false' ) ;

add_filter('xmlrpc_enabled', '__return_false');

Минусом есть то, что при смене темы настройка пропадет. Кстати, в некоторых шаблонах в header.php есть вызов XML-RPC — его можно оттуда удалить вручную.

2. Отключение XML-RPC в htaccess

Вам нужно отредактировать файл .htaccess в корневой директории системы (там где wp-config.php). Добавляете в него строки:

<Files xmlrpc.php> Order Deny,Allow Deny from all </Files>

<Files xmlrpc.php> Order Deny,Allow Deny from all </Files>

Последние два метода лично я не использовал, т.к. подключил плагин Disable XML-RPC Pingback — думаю, его будет достаточно. Просто для тех, кто не любит лишние установки, предложил альтернативные варианты.

Карта
rss