Пожалуй рискну рассказать вам не очень приятную историю, которая приключилась со мной и мои товарищем неделю назад.
Воскресенье вечер, в отличной компании сижу, пью пиво, ем мясо, и у меня начинает разрываться телефон. У одного моего друга лежит сайт.
Бросаю все, захожу на сервер, включаем mytop htop и видим огромное количество висячих запросов.
Ну подумаешь бывает, школьники балуются. Добавляем ресурсы php-fpm для этого товарища, включаем кеш html страниц магазина (модуль турбо), включаем nginx базовую защиту от атак https://www.nginx.com/blog/mitigating-ddos-attacks-with-nginx-and-nginx-plus/, и спокойно возвращаюсь к мясу и пиву с чувством выполненного долга и ощущением, что этот тупой малолетка, может дальше ддосить сколько угодно. И вроде бы было все ок, если бы в понедельник, опять я не получил оборванный телефон и скрины в телеграм такого толка:
Кароче привет 90ые, нас поставили типа на счетчик. Ну и да реально выделенный сервер, не ВПС на 8 ядер и 64гб памяти лежит и валяется.
При попытке перезагрузить сервисы, они зависали тут же.
Тут мне стало очень интересно.
У меня достаточно большой опыт борьбы с подобными товарищами, но вот этот оказался очень активный и агрессивный.
Нашел магазин, у которого специфика ассортимента, когда декабрь перед новым годом, за месяц год кормит, купил ботнет и решил заработать деньжат. 200 + 30 в час - это за сутки 200 + 720 - фактически 1000 долларов, и не будь меня за спиной у нашего потерпевшего магазина, он бы их и заплатил, так как потери несопоставимы, и ведь неизвестно сколько это может длиться.
Вот вам небольшая статистика за сутки про мощность атаки:
Всего-навсего полмиллиарда запросов на веб сервер за сутки!
В пик у нас было:
28м запросов на сервер в 15 минут, у есть подозрение, что в гугл столько запросов со всей Украины не приходит за 15 минут.
Но мы чудесным образом и отбились, и еще отбили интерес у нашего школьника решившего подзаработать лезть к магазину моего товарища.
А теперь пошаговый алгоритм что было сделано.
1 - у меня есть свой скрипт антиддоса, аналогов на гитхабе миллион, ловим всплески за разные периоды времени и блочим айпи. На какой-то период этого хватает, чтобы магазин работал хоть как-то.
2 - Добавляем для вируталхоста новый не засвеченный в мир айпи. Это важно, так как атакующая сторона может работать в обход днс и слать запросы прямо на сервер с нужными заголовками.
3 - Уходим сразу очень быстро под CloudFlare, прячем новый айпи за прокси CF, и проксируем реальные айпи в php магазина и по прежнем продолжаем блочить входящие запросы.
4 - Пока меняются DNS мы не можем закрыть старый айпи, поэтому терпим, но CF направляем на новый и блочим на новом на уровне сервера любые прямые запросы кроме подсетей CloudFlare ну и там всяких офисных, сервисных и домашних айпишников.
5 - Как только http://host-tracker.ru/ показал, что процентов 90 ресурсов из мира видят сайт на ресурсах CLoudFlare блочим старый айпи, при чем желательно на уровне firewall провайдера хостинга, в нашем случае это Hetzner - там есть какой никакой файрвол работающий на уровне их сети и это просто.
6 - Пока идет вся эта котовасия у нас уже куплен платный аккаунт CloudFlare, который позволяет создавать правила для внутреннего файрвола. Первое созданное правило - заблокировать все страны кроме Украины и известных ботов. Еще было штук 10 правил - но они вторичны.
7 - Включаем в CloudFlare максимальный уровень реакции на DDOS, никаких капч никакой фигни. Только блок и все.
8 - Запасаемся попкорном и ждем пока наш упырь-мамкин-ддосер докупает и докупает еще и еще мощностей ботнета, и нифига не получается.
В конечном итоге я еще внимательней посмотрел в логи, нашел в них ошибки в серверных заголовках и с вероятностью 99.9% закрыл все обращения нашего парня. Он мог бы купить в 10 раз больше ресурсов, но с таким уровнем подготовки, все равно ничего бы не добился.
К чему эта вся статья.
Ну во первых я хвастаюсь, с момента возникновения критичных проблем с этим инцидентом, до момента решения, прошло всего порядка полутора часов (правда мониторил я его без сна потом почти сутки).
Во вторых. И это пожалуй самое важное. НИКОГДА НЕ ТОРГУЙТЕСЬ С ТЕРРОРИСТАМИ.
Даже если вам выставляют подобные угрозы, вы должны понимать, что человек, который пытается подобным образом вымогать деньги, он сам в этот момент попадает на аренду мощностей ботнетов и прокси.
Также вы должны знать, что смоделировать идеальный ддос и естественный нативный трафик очень и очень и очень сложно, практически всегда специалист найдет какой-то признак, по которому можно душить паразитные запросы.
И еще эти ддосники малолетние - они как гаишники, их цель не задушить ваш магазин, а содрать побыстрому бабла, если вы не идете на контакт и не проявляете никакой реакции - им становится неинтересно, так как мимо проезжает еще много машин, с которых можно состричь и есть еще много сайтов, на которых можно заработать. Любое потраченное время на холостой проект - это минус деньги. Если любому гаишнику обьяснить, что протокол он будет составлять два часа, потому что вы будете думать над каждой буквой объяснения - по закону имеете право, скорее всего он вас отпустит. Если мамкин ддосер будет сразу понимать что он нифига не получит - он пойдет дальше. Даже если ваш магазин заказали конкуренты, это все будет происходить ровно до истечения абонплаты. А если еще вы вовремя среагировали и отбились - то мамкин ддосер со своих вернет деньги за заказ, потратившись за аренду ботнета и прокси серверов.
Вот такая вам новогодняя сказочка.
Дальше больше!
UPD1: Запомните, сравнивать бесплатный Cloudflare, который просто может проксировать ваш трафик и спрятать айпи и платные пакеты - это как сравнивать одноногую косоглазую Бритни Спирс с молодой Памелой Андерсон. Вобщем бесплатный сервис CloudFlare - это просто ничего, и как бы вам не рассказывали тупые саппорты хостеров и специалисты начального уровня с форума и фриланса, он вам НИЧЕМ НЕ ПОМОЖЕТ в случае ддоса!
UPD2: Пишу я этот текст не для того, чтобы при любой проблеме вы бежали ко мне, скорее всего если вы придете с улицы с просьбой помочь вы получите отказ. В последнее время очень сильно активизировались различные менеджеры среднего звена и любите поклевать мозг холостыми разговорами. В связи с этим, без рекомендаций от моих друзей или уважаемых участников сообщества, я практически не иду на контакт по каким-либо реализациям. Да я опух, потерял берега, цены себе не могу сложить и так далее, вобщем, называйте как хотите, мне все равно.
Данный пост имеет исключительно общеобразовательную миссию, и не является коммерческим предложением или иной рекламой тех или иных моих реализаций!
UPD3: Вы спросите - а что нам делать - у нас шаред хостинг за три копейки? Ну тут друзья - я вам не виноват что у вас в 2021 году шаред хостинг, во вторых, очень быстро можно купить какой-нибудь cloud сервер или на хетцнере или на digital ocean, сделать его публичным прокси вашего магазина, скрыть его за CloudFlare и с точно таким же цинизмом, как имея выделенный наблюдать, как корчатся в конвульсиях мамкины ддосеры. Чуть дольше на час-два, но никааааааааких проблем!