Давайте начнем с общих понятий. DOS - атака на вычислительную систему с целью довести ее до отказа. DDOS - распределенная DOS атака (более чем с одного хоста). Разновидностей DDOS существует довольно много, но речь пойдет о конкретной разновидности - UDP Flood. Я позиционирую данную статью как повествование истории, а не инструкцию по защите от любых нападений, поэтому с радостью выслушаю ваши комментарии и советы :)  Чем вам может повредить DDOS? Недоступность ресурсов. Урон вашей репутации. Убытки и недополученный доход. К сожалению здесь нельзя выиграть, но можно проиграть. Если вас атакуют, ваша задача - понести меньшие убытки, чем атакующий, и научиться пережидать DDOS атаки не получая ощутимого вреда.  Кто может устроить DDOS? Хакер. Студенты и школьники. Да кто угодно :) Любому пользователю интернета, доступны для покупки услуги ботнетов, которые по щелчку пальцев начнут засылать паразитный трафик на сервер жертвы. Называются эти услуги где прямо, а где завуалировано, например: стресс-тестирование, stresser. Стоимость услуг по "стресс тестированию IP-адреса" колеблется от 3000р в день до бесконечности, в зависимости от мощности атаки. Долгое время я думал, что организации и стартапы оправдывают DDOS атаками свою некомпетентность в плане работы под нагрузкой и на самом деле атаки не так уж и страшны. Наверняка, так оно и бывает частенько, но есть нюансы!  Мы, с небольшой командой единомышленников, на протяжении двух лет разрабатывали онлайн игру. И вот в январе 2022 года мы подошли к точке релиза нашего проекта для пользователей.  Наша скромная архитектура устроена следующим образом. Все пользователи обитают на игровом сервере, который пользуется "услугами" Kubernetes и ряда серверов с архитектурой (LDAP / Mail / VPN / Samba)  Один клиент не улыбается, он недоволен сервисом! Среди всех игроков, появился нарушитель правил, который быстро получил бан на сервере. На этом он не остановился и начал регистрировать новые аккаунты, и вместе с сообщником пытался заходить на сервер и, используя читы, мешать другим игрокам наслаждаться игровым процессом. Все попытки были своевременно остановлены администрацией.  На этом ребята не остановились, подключились к нашему дискорду и начали угрожать администрации DDOS атаками, выдвигая требования к разбану и публичному извинению администрации перед бедными нарушителями. Мы, вежливо, поблагодарили их за игру и проигнорировали угрозы. Все началось поздно ночью: игроки начали жаловаться на проблемы с голосовым чатом и задержки в ответах сервера. По графикам сразу стала заметна аномалия по количеству входящего трафика. Мы начали оживлять в памяти команды для работы c iptables, анализировать входящие запросы, гуглить вспомогательную информацию по борьбе с атаками и писать в саппорт хостинга. За этим занятием атака и кончилась, злоумышленники видимо "проверяли" свои возможности. Атака в 800 Mb/s - довольно слабая, да и участие принимало около 30 ботов. Тем не менее, игнорировать это нельзя, атака повлияла на игровой процесс в отрицательную сторону. Весь следующий день был потрачен на подготовку скриптов, которые бы помогли оперативно вычислить IP-адреса ботов и побанить их через iptables. Вооружившись всем необходимым, мы начали ждать... Но кое-кто внес неожиданные корректировки в наш безупречный план... Наш хостинг Digital Ocean. Следующей ночью началась очередная атака Как же я удивился, когда в первые 3 минуты атаки я потерял доступ к серверу, всех игроков отключило, наступил тотальный блэкаут. Сервер упал? Что произошло? Данное явление в Digital Ocean называется Blackhole. Системы анализа трафика нашего хостера автоматически обнаружили DDOS атаку, и для того чтобы убрать паразитную нагрузку на гипервизор [[ВНИМАНИЕ]] отключили наш сервер от сети на 3 часа.  Продакшен сервер с онлайн игрой выключили из сети на 3 часа.  Я не могу описать свое состояние на тот момент, тот от кого я больше всего ждал поддержки, помог злоумышленнику совершить успешную атаку. Забегая вперед, скажу, что никто не ответил ничего внятного на мои тикеты в саппорт хостинга, стандартные ответы что так и должно быть, мне не нужно переживать и сервер автоматически вернется в сеть через 3 часа и так далее. Естественно, как только сервер вернулся в сеть через 3 часа, злоумышленник вновь активировал DDOS и сервер провалился в blackhole снова. Было принято срочное решение о смене хостинга. После анализа доступных вариантов и консультаций со знающими коллегами, был выбран хостинг OVH, который предоставляет услуги защиты от DDOS и даже игровой фаервол. В течение пары часов все необходимые ресурсы были перенесены на новый сервер (благо мы подозревали что может случиться беда и все скрипты и инструкции были в актуальном состоянии). Фаерволы настроены, компенсация для игроков заряжена, анонс в дискорд канале сделан, запуск! Моментально срабатывает защита от DDOS от OVH, начинается фильтрация трафика, мне приходит письмо с нотификацией о том что сервер заботливо перемещен в защищенную инфраструктуру. И что же, запуская анализ трафика я вижу как боты появляются и тут же пропадают, сервер не испытывает никакой нагрузки, происходит спокойное пережидание, наступает облегчение, проблемы позади? Куда там! Злоумышленники решили подлить денег в печку и сменить стратегию. Атаки с нескольких хостов крупными пакетами сменились на атаки поочередно с двух ботнетов по 5 000 хостов смешанными пакетами (крупными и мелкими). Фильтр OVH начал пропускать все больше и больше ботов до сервера, но тут мы решили применить уже подготовленные ранее скрипты. Фаервол iptables начал с безумной скоростью наполняться тысячами правил с блокировкой IP-адресов ботов. CPU на сервере подпрыгнуло до заоблачных высот, игроки начали испытывать проблемы, не могли нормально общаться, снова появились задержки. Почему-же? Что снова не так?  Оказалось - я сам выстрелил себе в ногу. Тысячи DROP правил пробудили процесс ksoftirqd и он забил всё свободное CPU и начал мешать игровому серверу. Оказывается нельзя много правил держать в iptables! Данная проблема была решена с помощью утилиты ipset, которая специально и нужна, чтобы кормить тонны IP-адресов фаерволу в одно правило. После переконфигурации, сервер вздохнул полной грудью. Проблемы наконец-то были решены. Игроки перестали замечать периодические DDOS атаки, а злоумышленники, поняв что все стало бесполезно, и вовсе их прекратили. Так и стали мы жить-поживать. Наибольшую часть атаки фильтрует хостер, а с остатками разбираемся мы сами, в автоматизированном режиме. Хочу поделиться с вами теми выводами, которые я сделал по результатам этого приключения. Во-первых, как бы странно это не звучало, большое спасибо злоумышленникам, за то что заставили нас столкнуться с проблемой DDOS атак на раннем этапе нашего проекта. Мы перестали переживать на этот счет и получили порцию нового опыта. Если ваш стартап растет в конкурентной среде, позаботьтесь о правильном хостинге для своих ресурсов, даже такие гиганты как Digital Ocean могут слиться в самый неподходящий момент.  Скорее всего первая DDOS атака для вас будет неожиданной и достигнет цели. Когда сервер проседает по ресурсам, вы попросту можете потерять доступ по SSH и сделать ничего не сможете. Если вас атакуют по доменному имени (боты резолвят IP-адрес), вы можете схитрить и подменить A-запись на другой IP-адрес, что временно (пока злоумышленник не заметит) может увести атаку в другую сторону :)) И небольшой рецепт, который сработал в моем случае: Определите список всех IP-адресов, подключенных к атакуемому порту Уберите из этого списка легальных клиентов (если это возможно) ipset -N DDOS0201 iphash xargs < bad-addresses.txt -n 1 ipset -A DDOS0201 iptables -A INPUT -m set --match-set DDOS0201 dst -j DROP Всем спасибо за внимание! Руководитель Разработки