Вниз

12 Январь 2015

11

Как избавиться от XML-RPC-атаки на WordPress-сайты?

уязвимость Wordpress

Предыстория

Несколько дней назад я заметил, что нагрузка моих сайтов на хостинг выросла в разы. Если обычно она составляла в районе 100-120 "попугаев" (CP), то за последние несколько дней она возросла до 400-500 CP. Ничего хорошего в этом нет, ведь хостер может перевести на более дорогой тариф, а то и вовсе прикрыть доступ к сайтам, поэтому я начал разбираться.

нагрузка на хостинг

После письма хостеру (Beget) с объяснением ситуации, я получил подробную статистику с рекомендациями по исправлению проблемы. Итак, что мы видим:

Львиная часть запросов идет на WordPress-сайты, а именно - на обращение к файлу xmlrpc.php:

топ запросов

Топ IP-адресов выглядит подобным образом:

топ IP-адресов

Используя соответствующие инструменты (к примеру, тот же http://2ip.ru/whois/), выясняем, что первые два IP (5.196.5.116 и 37.59.120.214) - это и есть наш атакующий. Оба IP из Франции (позже к ним присоединился еще один "француз" - 92.222.35.159). Третий по популярности IP-адрес (178.154.202.251) принадлежит поисковому боту Яндекса, его блокировать не стоит.

Возникает острое желание заблокировать доступ к сайтам с этих двух IP-адресов, это же советует и хостер:

советы хостера

Однако я решил разобраться в характере проблемы подробнее, дабы подобного не возникало впоследствии (к примеру, при смене атакующим IP).

Что это за XML-RPC-атаки?

XML-RPC - это стандартный механизм WordPress, который применяется в частности для механизма пингбэков. А в последних версиях WordPress, начиная с 3.5, пингбэки включены по умолчанию без возможности отключения их стандартными средствами.

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

Плохо становится, когда злоумышленники используют ее для спама/флуда. Используя множество сайтов, при помощи запросов с них xmlrpc.php можно устроить DDoS другому сайту (на который ссылаются). Подробнее об этом механизме можно прочитать в этой статье: там рассказывается о случае 2014 года, когда атака со 162 тысячи Wordpress-сайтов (причем ничем не зараженных) практически "положила" DDoS-ом крупный портал.

механизм DDoS с использованием XML-RPC

Что делать, чтобы избавиться от запросов xmlrpc.php?

Ну что ж, тут, как говорится, все просто. Можно, конечно, попросту отрубить механизм XML-RPC, но это может аукнуться некорректной работой сторонних модулей, использующих его. Это можно сделать как вручную через настройку файлов .htaccess или wp-config.php, так и через установку плагинов (подробнее о всех возможных способах в этой статье).

Но я выбрал метод, который позволит сохранить функциональность XML-RPC: установку плагина Disable XML-RPC Pingback. Он удаляет лишь "опасные" методы pingback.ping и pingback.extensions.getPingbacks, оставляя функционал XML-RPC. После установки плагин нужно всего лишь активировать - дальнейшая настройка не требуется.

Попутно я забил все IP атакующих в файл .htaccess своих сайтов, чтобы заблокировать им доступ. Просто дописал в конец файла:

Order Allow,Deny
Allow from all
Deny from 5.196.5.116 37.59.120.214 92.222.35.159

Вот и все, теперь мы надежно защитили блог от дальнейших атак с использованием xmlrpc.php. Наши сайты перестали грузить хостинг запросами, а также атаковать при помощи DDoS сторонние сайты.

Еще из рубрики Комповое
11 комментариев Прокомментировать

  1. Алекс
    23 Янв 2015
    CoolNovo 2.0.9.20 Windows 7 x64 Edition

    Спасибо за статью, действительно очень сильная нагрузка идёт и именно на этот файл. Но почему-то запрет в htaccess не даёт результата, точнее в логи доступа всё равно пишутся строки посещения этого файла. Не знаю как бороться. Может подскажите?

  2. 24 Янв 2015
    Google Chrome 39.0.2171.95 GNU/Linux x64

    Алекс, а вы оба способа использовали? Попробуйте заблокировать все IP хацкеров в htaccess, установить Disable XML-RPC Pingback, а также еще один плагин для ограничения попыток авторизации — Limit Login Attempts.
    У вас тоже Beget? Я несколько раз связывался с поддержкой, запрашивал статистику. Там несколько IP атакуют, причем они меняются со временем.

  3. Алекс
    25 Янв 2015
    CoolNovo 2.0.9.20 Windows 7 x64 Edition

    Я использовал только запрет в хтацесс, думаю этого будет достаточно, у меня посещения были именно с IP 92.222.35.159, именно по этому запросу я и нашёл ваш сайт в гугле. Я немного поправлюсь, дело в том, что даже если в ISP хостинга вообще отключить домен, то оказывается всё равно логи доступа пишутся. Также если прописать запрет в хтацесс, то такой дикой нагрузки действительно уже нет, т.е. ваш метод на самом деле помог, но оказывается логи будут по прежнему писаться. Странно конечно. У вас также?

  4. 26 Янв 2015
    Google Chrome 39.0.2171.95 GNU/Linux x64

    Да, у меня тоже писалось в логи… Думаю, со временем перестанут долбиться, когда увидят, что нет ответа :)

  5. Алекс
    26 Янв 2015
    CoolNovo 2.0.9.20 Windows 7 x64 Edition

    Понятно, спасибо за совет в статье. Будет полезным если новые IP будете добавлять в статью. Страничку добавил в закладки, буду периодически посещать и просматривать обновления.

  6. Алекс
    15 Мар 2015
    CoolNovo 2.0.9.20 Windows 7 x64 Edition

    Админ, привет. Добавь в свою статью ещё этот IP 192.3.207.2
    с него тоже сегодня просто невероятно ддосит на этот файл.

  7. Алекс
    15 Мар 2015
    CoolNovo 2.0.9.20 Windows 7 x64 Edition

    Хотя нет, поспешил немного. Не могу понять вот что мне логи доступа выдали:
    192.3.207.2 — — [15/Mar/2015:23:24:26 +0300] «POST /xmlrpc.php HTTP/1.0» 403 887 «-» «Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html
    Получается это гугл ддосит что ли? За две минуты на этот файл почти 3000 запросов.

  8. 16 Мар 2015
    Google Chrome 39.0.2171.95 GNU/Linux x64

    @ Алекс:
    Да нет, это спамеры походу маскируются: http://www.cy-pr.com/forum/f7/t79292/

  9. 27 Мар 2015
    Google Chrome 41.0.2272.89 Windows 8

    Вот с этого 66.225.231.114 мучали через каждый час. Заблокировал все равно запросы идут. Как руками заблокировать без стороних плагинов? Хостинг Джино.

  10. Виталий
    2 Июл 2015
    Google Chrome 43.0.2357.130 Windows 7 x64 Edition

    Зимой на бигете была такая же проблема, сегодня началось все снова. Шаманство над xmlrpc и сокрытие wt-login, а так же эти плагины уже не спасают. Надеюсь на глюк апача, иначе больше и не знаю что сделать.
    З,Ы, бигет.

  11. Алексей
    19 Фев 2016
    Google Chrome 48.0.2564.109 Windows 7

    Меня тоже долбят:
    91.207.7.22
    Whois говорит, что Песочин, Украина

Поделись своими мыслями!

(обязательно)
(обязательно)

Почтовые адреса не публикуются.

Подпишись на комментарии