DDoS-атака на сайт tele-club.ru 17–18 сентября 2018
Хронология, цифры и факты
Филипп пишет: "Дима, а сайт не работает — это норм?"
– Вряд ли это может быть норм.
...
Действительно, не открывается. Первая мысль снова авария в дата-центре, как и за день до этого. Странность: сервер работает, на него захожу. Поддомен leningrad.tele-club.ru открывает, основной сайт нет. Думаю, что что-то обновили на хостинге и сломали.
Первые 3 часа идея про DDoS не приходит в голову (хотя все предпосылки очевидны и подтвердить это можно было несколькими простыми действиями).
Переношу сайт и контент на другой сервер, тем более уже месяц он простаивает подготовленный. Проверяю, работает, класс. Направляю домен tele-club.ru на него и жду пока обновятся настройки домена.
Новый сервер резко начал тупить, похоже дождался обновления настроек.
Домен принес вместе с собой DDoS-трафик.
Смотрю netstat / логи / текущую статистику обращений к серверу. Всё подтвердилось.
Попытка отсеить паразитные запросы на сайт в полуручном режиме, настройка правил фильтрации на сервере не сильно эффективна. Да и при текущем уровне развития интернета, террористам не составит большого труда подключить 100500 ip-адресов для этого. Нужно профессиональное решение.
У нашего хостинг-партнёра компании NetAngels – есть услуга "Anti-DDoS". Попробуем. Включаю. Жду обновления настроек. Есть 3 режима защиты: "Базовая", "Повышенная", "Параноидальная".
Начнем со средней. Все переходы на сайт пропускаются через специальную страницу, которая проверяет "человек" или "сукабот". Если есть подозрения на бота, предлагается каптча от Гугл, если нет - автоматически пропускает. На сайт такая промежуточная страница старается пропускать только человеков.
Фильтры работают. Нагрузка снизилась, на сайт можно зайти и купить билет. Проверяю основные моменты. Всё хорошо.
Пробую "Параноидальный" режим защиты. Промежуточная страница всех заставляет ставить галочку в каптче. Не очень дружелюбно. На "Базовом" режиме – фильтры не справляются, сайт открывается еле-еле, нагрузка на сервер > 300%. Вернул компромисс средний уровень защиты.
Пока ок, уже совсем ночь. Утром посмотрим, что будет.
Сначала всё было спокойно. Донастраиваем с техподдержкой хостера шифрованное соединение. Сайт работает.
Чуть позже атака возобновилась. Anti-DDoS в целом справляется. Сайт работает немного медленнее чем обычно, иногда уходит в down. Неприятно, но жить можно.
Шутим на тему, фанаты или антифанаты какого артиста за этим стоят. Егор Крид соревнуется с Dimmu Borgir.
Звонят террористы. Признаются, что это они, хотят 500$, чтобы прекратилось. Хмм, говорит спокойно, настрой серьёзный. После оплаты обещают в будущем помощь специалиста по защите за 1000-2000 руб. / в час.
Оставляют контакт для связи через Telegram... номер телефона. really? not nickname?
Говорю, что по номеру телефона в Telegram не начать диалог. Объясняет мне, что надо предварительно добавить в телефонную книгу. ээээээээээээээ, или номер левый (что вероятнее), или дилетанты (вас же найдут).
Хочется цифр, статистики и графиков про атаку. Пишу запрос в техподдержку.
Параллельно переключаем домен на Cloudflare: весь трафик на сайт будет идити через сеть доставки контента, данные кэшируются на промежуточных серверах по всему миру.
Сервис сделан бывшими хакерами и ддосниками. Ребята знают как устроен мир по другую сторону баррикад. И личный кабинет с множеством настроек, статистикой и аналитикой.
Между тем пошла новая волна атаки. Хостер прислыает уведомления, что изменился тип атаки c tcpflood на udpflood, а с этим типом они не эффективны. И действительно сайт лежит. Ок ок. Уже задействуем другие механизмы.
Сайт открывается кое-как. Обновление настроек домена займет время.
Решили опубликовать в паблике ВК ссылку на dev-копию, зеркало сайта. Там всё есть в актуальном состоянии, можно купить билет.
Проходит 30 минут, и получаю письмо от хостера:
"Наша система мониторинга зафиксировала аномальный всплеск входящего трафика на выделенный вам IP адрес ***.***.***.***: 959.1 тыс. пакетов в секунду. Вероятнее всего это сигнализирует о начале DDoS атаки типа udpflood."
Похоже обиделись атакеры, что не пишу им с вопросом куда перечислит выкуп.
Стоп. Так это IP-адрес того, запасного сервера для разработчиков. Ха-ха. Социальная инженерия. Они читают паблик Теле-клуба в ВК.
Атакеры обиделись. Начали комбинировать типы атак, атакуют по всем известным им сайтам и зеркалам.
Между тем настройки домена обновились. Трафик на сайт пошел через Cloudflare. Выбираю режим "Under Atack", настраиваю, подкручиваю.
Осталось немного. Сейчас сайт закэшируется в CDN и станет проще.
Атака нарастала. Пик был около полуночи, за 5 часов с 19:30 до 01:00 было отправлено 26млн запросов на сайт, в пике достигало 1млн в секунду. Cloudflare успешно фильтровал угрозы, остальным отдавал контент с CDN. Для людей сайт работает.
В какой-то момент атакующие начали спамить сервер напрямую по ip-адресу. Небольшие настройки сервера, выключил ресурсозатратные фичи на сайте, типа рекомендательной системы, поразвлекался ручным баном сильно активных IP-адресов, их же дублировал в правила Cloudflare.
Итого / результаты
- Сайт теперь отдаёт контент через CDN Cloudflare. Пользователи будут рады уменьшению времени загрузки сайта. Буду подключать разные фичи от Cloudflare по ускорению сайта, загрузки картинок на мобильных, AMP-страницы и прочее.
- Базовый тариф в Cloudflare бесплатный. Думаю взять за 20$ / мес тариф PRO. Оно того стоит.
- Теперь мы готовы к подобным злонамеренным выходкам. От продолжения нормальной работы сайта в случае атаки нас отделяет 2 клика в личном кабинете Cloudflare.
- Не было серьёзного провала в продажах с сайта. Спасибо нашему хостинг-партнеру NetAngels, их Anti-DDoS помог сайту продолжить работать днём 18.09.2018.
- Мне нравится статистика и аналитика атак в Cloudflare с графиками и диаграммами :) Очень интересно видеть, что происходит прямо сейчас, ну и, конечно, затем анализировать, что происходило.
- Единственное предостережение от знатоков, что адреса Cloudflare могут блокироваться Роскомнадзором, так как через него всякие казино ведут деятельность. Но, думаю, не пропустим момент. Можно проверку ежедневную сделать на наличие адреса в реестре РКН. У Cloudflare отличное управление DNS, и, в случае блокировки органами, пустить трафик с домена напрямую на ip-адрес сервера = 1 переключатель, всё работает в режиме онлайн (небольшая техническая задержка по обновлению данных).
- Так организовался хороший плюс IT-архитектуре в целом. Стало понятно, где слабые места и не досмотрел. Подтвердилось, что микросервисы решают. Сайт в дауне, а продажи билетов других местах (мобильное приложение, виджет Вконтакте) не должны останавливаться.
- Не ведите переговоров с террористами.