- PVSM.RU - https://www.pvsm.ru -
Давайте начнем с общих понятий. DOS - атака на вычислительную систему с целью довести ее до отказа. DDOS - распределенная DOS атака (более чем с одного хоста). Разновидностей DDOS существует довольно много, но речь пойдет о конкретной разновидности - UDP Flood. Я позиционирую данную статью как повествование истории, а не инструкцию по защите от любых нападений, поэтому с радостью выслушаю ваши комментарии и советы :)
Чем вам может повредить DDOS?
Недоступность ресурсов.
Урон вашей репутации.
Убытки и недополученный доход.
К сожалению здесь нельзя выиграть, но можно проиграть. Если вас атакуют, ваша задача - понести меньшие убытки, чем атакующий, и научиться пережидать DDOS атаки не получая ощутимого вреда.
Кто может устроить DDOS?
Хакер.
Студенты и школьники.
Да кто угодно :)
Любому пользователю интернета, доступны для покупки услуги ботнетов, которые по щелчку пальцев начнут засылать паразитный трафик на сервер жертвы. Называются эти услуги где прямо, а где завуалировано, например: стресс-тестирование, stresser. Стоимость услуг по "стресс тестированию IP-адреса" колеблется от 3000р в день до бесконечности, в зависимости от мощности атаки.
Долгое время я думал, что организации и стартапы оправдывают DDOS атаками свою некомпетентность в плане работы под нагрузкой и на самом деле атаки не так уж и страшны. Наверняка, так оно и бывает частенько, но есть нюансы!
Мы, с небольшой командой единомышленников, на протяжении двух лет разрабатывали онлайн игру. И вот в январе 2022 года мы подошли к точке релиза нашего проекта для пользователей.
Наша скромная архитектура устроена следующим образом. Все пользователи обитают на игровом сервере, который пользуется "услугами" Kubernetes и ряда серверов с архитектурой (LDAP / Mail / VPN / Samba)
Один клиент не улыбается, он недоволен сервисом!
Среди всех игроков, появился нарушитель правил, который быстро получил бан на сервере. На этом он не остановился и начал регистрировать новые аккаунты, и вместе с сообщником пытался заходить на сервер и, используя читы, мешать другим игрокам наслаждаться игровым процессом. Все попытки были своевременно остановлены администрацией.
На этом ребята не остановились, подключились к нашему дискорду и начали угрожать администрации DDOS атаками, выдвигая требования к разбану и публичному извинению администрации перед бедными нарушителями. Мы, вежливо, поблагодарили их за игру и проигнорировали угрозы.
Все началось поздно ночью: игроки начали жаловаться на проблемы с голосовым чатом и задержки в ответах сервера. По графикам сразу стала заметна аномалия по количеству входящего трафика.
Мы начали оживлять в памяти команды для работы c iptables, анализировать входящие запросы, гуглить вспомогательную информацию по борьбе с атаками и писать в саппорт
Весь следующий день был потрачен на подготовку скриптов, которые бы помогли оперативно вычислить IP-адреса ботов и побанить их через iptables. Вооружившись всем необходимым, мы начали ждать... Но кое-кто внес неожиданные корректировки в наш безупречный план... Наш
Следующей ночью началась очередная атака
Как же я удивился, когда в первые 3 минуты атаки я потерял доступ к серверу, всех игроков отключило, наступил тотальный блэкаут. Сервер упал? Что произошло?
Данное явление в Digital Ocean называется Blackhole.
Системы анализа трафика нашего хостера автоматически обнаружили DDOS атаку, и для того чтобы убрать паразитную нагрузку на гипервизор [[ВНИМАНИЕ]] отключили наш сервер от сети на 3 часа.
Продакшен сервер с онлайн игрой выключили из сети на 3 часа.
Я не могу описать свое состояние на тот момент, тот от кого я больше всего ждал поддержки, помог злоумышленнику совершить успешную атаку.
Забегая вперед, скажу, что никто не ответил ничего внятного на мои тикеты в саппорт
Было принято срочное решение о смене
В течение пары часов все необходимые ресурсы были перенесены на новый сервер (благо мы подозревали что может случиться беда и все скрипты и инструкции были в актуальном состоянии). Фаерволы настроены, компенсация для игроков заряжена, анонс в дискорд канале сделан, запуск!
Моментально срабатывает защита от DDOS от OVH, начинается фильтрация трафика, мне приходит письмо с нотификацией о том что сервер заботливо перемещен в защищенную инфраструктуру. И что же, запуская анализ трафика я вижу как боты появляются и тут же пропадают, сервер не испытывает никакой нагрузки, происходит спокойное пережидание, наступает облегчение, проблемы позади?
Куда там! Злоумышленники решили подлить денег в печку и сменить стратегию. Атаки с нескольких хостов крупными пакетами сменились на атаки поочередно с двух ботнетов по 5 000 хостов смешанными пакетами (крупными и мелкими).
Фильтр OVH начал пропускать все больше и больше ботов до сервера, но тут мы решили применить уже подготовленные ранее скрипты. Фаервол iptables начал с безумной скоростью наполняться тысячами правил с блокировкой IP-адресов ботов. CPU на сервере подпрыгнуло до заоблачных высот, игроки начали испытывать проблемы, не могли нормально общаться, снова появились задержки. Почему-же? Что снова не так?
Оказалось - я сам выстрелил себе в ногу. Тысячи DROP правил пробудили процесс ksoftirqd и он забил всё свободное CPU и начал мешать игровому серверу. Оказывается нельзя много правил держать в iptables!
iptables -I INPUT -s 1.2.3.4 -j DROP
(никогда так не делайте если IP-адресов много)
Данная проблема была решена с помощью утилиты ipset, которая специально и нужна, чтобы кормить тонны IP-адресов фаерволу в одно правило.
После переконфигурации, сервер вздохнул полной грудью. Проблемы наконец-то были решены. Игроки перестали замечать периодические DDOS атаки, а злоумышленники, поняв что все стало бесполезно, и вовсе их прекратили.
Так и стали мы жить-поживать. Наибольшую часть атаки фильтрует
Хочу поделиться с вами теми выводами, которые я сделал по результатам этого приключения.
Во-первых, как бы странно это не звучало, большое спасибо злоумышленникам, за то что заставили нас столкнуться с проблемой DDOS атак на раннем этапе нашего проекта. Мы перестали переживать на этот счет и получили порцию нового опыта.
Если ваш стартап растет в конкурентной среде, позаботьтесь о правильном
Скорее всего первая 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
Всем спасибо за внимание!
Автор: Константин Козловский
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/372509
Ссылки в тексте:
[1] хостинга: https://www.reg.ru/?rlink=reflink-717
[2] Источник: https://habr.com/ru/post/653575/?utm_source=habrahabr&utm_medium=rss&utm_campaign=653575
Нажмите здесь для печати.