Кузнец-разрушитель. Как избежать DDoS-атаки на сайт через XML-RPC в WordPress

Кто такой «Кузнец»?

Не так давно одна из известных российских компаний оказалась под ударом хакеров. Ее корпоративный сайт стал недоступен для клиентов. Однако, эта история, описанная в материале vc.ru, не стоила бы вашего внимания, если бы жертвой DDoS-атаки не стала IT-компания. Ведь это готовый кейс. Спойлер: после многочасовой борьбы работу сайта удалось наладить, но осадок в виде экзамена на профпригодность для программистов и непредвиденных расходов остался.

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

DDoS-атака

Некто «Кузнец»

Необычная история начинается с необычного сообщения, которое пришло менеджеру по работе с клиентами в «Телеграм»:

«Кузнец» просит деньги, чтобы остановить DDoS-атаку

Писал с неизвестного аккаунта некто под псевдонимом «Кузнец» честно предупредил об атаке на сайт и попросил «выкуп» 500 USD До этого ответственные за работу и безопасность веб-страницы не считали угрозу DDoS-атак реальной в отношении простого корпоративного сайта.

Компания не торопилась выплачивать 500 USD вымогателям и попробовала сама устранить проблему. Штатный программист, который в свободное время изучает проблему хакерских атак и уязвимостей, залез в лог сервера и обнаружил там архив размером почти 1 Гб, который вмещал в себя 10 раз больше данных. Это информация о пользователях: кто они, откуда пришли на сайт и когда. Оказалось, что на наш сайт шел трафик примерно с 3 000 уязвимых сайтов на WP.

 

Атака №1. Уязвимость в WordPress

Просто не отключили XML-RPC

На каждoм сайте был включен интерфейс для удаленнoго управления платформой через Роst-запрoсы по протоколу XML-RPC, который включен по умoлчанию и используется для публикации материалов на WP сайте, когда войти в админку невозможно. Однако, по статистике, все чаще протокол используются неизвестными для DDоS-атак.

Наш хакер поступил аналогично и воспользовался уязвимостью огромного количества сайтов с включенным XML-RPC. Кузнец сделал ботнет и начал посылать запросы сайту-жертве. Работает это так: неизвестный обращается к этим сайтам, отправляя запрос на строку с адресом атакуемого сайта и после рассылки все 3 000 WordPress-сайта начинали его одновременно пинговать. Из-за чего сайт перестал отвечать на все входящие запросы и оказался недоступен. Чтобы парировать удар, команда разработчиков активировала на сервере фильтр по UserAgent WordPress.  Кузнец пошел другим путем.

Уже на этом этапе проблемы можно было избежать, если бы команда сайта заранее бы отключила протокол XML-RPC в WordPress. Залатать дыру в CMS можно с помощью плагина или кода.

 

Отключение XML-RPC с помощью бесплатного плагина Clearfy

Мы предлагаем вам повысить защиту сайта с помощью плагина Clearfy. Всего в несколько кликов. Достаточно лишь выполнить следующие шаги:

  1. Скачайте и установите бесплатный плагин Clearfy
  2. В левом боковом меню перейдите в раздел «Защита»
  3. В верхней части настроек вы увидите вкладку “Защита”, внутри «Базовые настройки»

Отключение XML-RPC в WordPress

Следует нажать кнопку «ВКЛ» в строке «Отключить XML-RPC». Теперь ваш сайт стал еще более защищенным, нежели вы бы просто установили надежный пароль.

Отключение XML RPC с помощью кода

Однако если вы не готовы пользоваться плагином и хотите самостоятельно решить проблему безопасности сайта, то добавьте код в functions.php:

add_filter( 'xmlrpc_enabled', '__return_false' );

Но тут важно помнить, что изменение параметров Вордпресса самостоятельно может иметь печальные последствия. Действуйте по принципу “Не навреди”. Вы должны понимать, что решение проблем с помощью php кода не самый лучший из приведенных нами вариантов.

 

Атака №2. Запросы со всего мира

Как лечить?

Происхождение «второй волны» атаки в компании так и не выяснили. Но было понятно по логам, что запросы направляются с сайтов которые были заражены или созданы специально для атак со всего мира. А значит с уязвимостью CMS это не имело ничего общего.

Чтобы отфильтровать их мы активировали бесплатную лицензию сервиса CloudFlare. Сервис пропускает через свое оборудование любой трафик и выделяет запросы, похожие на атаки. Услугами безопасности от CloudFlare пользуются известные компании такие как: «Uber» и «Авито».

Изначально сайт пинговали из одной страны, затем по цепочке подключались другие. Фронтендщик вручную блокировал все сомнительные источники с большим количеством запросов из-за рубежа. В их числе Индия, Индонезия, Бразилия, Албания, Румыния и др.

Помогла функция CloudFlare, которая определяет, кто хочет посетить сайт: пользователь или машина. Во время проверки, а именно сложных математических вычислений, сайт на 5 сек зависает. А на его странице появляется такая заглушка:

Заглушка CloudFlare

Если IP-адрес успешно прошел JavaScript Challenge и считается безопасным, то спустя 5 сек сервис редиректит запрос на сайт. Там же в настройках программист вводит подозрительные страны, если запросы поступившие оттуда – нелегитимные.

Программист вносит в таблицу страны с подозрительным трафиком

Когда бесплатный лимит был исчерпан, сотрудники компании приобрели премиумный тариф за 20 USD.

 

Плюсы работы с CloudFlare

До того как разработчики воспользовались инструментарием CloudFlare они пытались тушить пожар, возникший из-за включенного XML-RPC в WordPress.

Однако Кузнец отправлял и отправлял запросы. Сервер банально «ложился» из-за этого. Конечно можно было разделить нагрузку по разным серверам, но защиты бы от этого не прибавилось. Выход разработчики нашли только в сервисе, который умеет фильтровать трафик – CloudFlare.

 

Минусы работы с CloudFlare

Одновременно с победой над Кузнецом IT-компания столкнулась с новыми трудностями из-за CloudFlare:

  1. Если в браузере пользователя включен VРN, то зайти на корпоративный сайт или в его админку будет невозможно. Одна из точек входа для большей части ВПН – Румыния, через которую Кузнец вел атаку на сайт ранее.
  2. Конверсия сайта понесла значительный ущерб. Редкий посетитель будет ждать 5 сек, чтобы войти на сайт.
  3. Часть IP-адресов CloudFlare находится в реестре запрещенных Роскомнадзором и не работают в России.

 

Заключение

Отбиваясь от нескольких атак со стороны Кузнеца затраты IT-компании составили:

  • 13 часов работы троих сотрудников со ставкой 1 000 руб в час
  • 20 USD за премиум тариф -это примерно 1 300 рублей.

Итого, более 14 000 рублей, что почти в 2 раза меньше запрошенной Кузнецом суммы (500 USD=ок. 32 т.р.)

И это не считая, стресса, нервов и косых взглядов начальства. С другой стороны – сладкое чувство победы и новый опыт. Однако зачем исправлять то, чего можно было избежать?

Напомним, что XML-RPC в WordPress отключается с помощью кода или плагина Clearfy. Бесплатно!

Плюсы и минусы каждого способа вы найдете в этой статье.