Зафильтровать UDP флуд на игровой сервер

Базовая функциональность RouterOS
notnullnet
Сообщения: 16
Зарегистрирован: 08 сен 2016, 12:36

Зафильтровать UDP флуд на игровой сервер

Сообщение notnullnet »

Здравствуйте форумчане!
Я держу игровой сервер по игре RUST.
Сервер работает на ОС Windows.
Недавно столкнулся с нерешаемой проблемой. При гигабитном DoS UDP флуде на открытый порт игры игра загружает проц на 100%. Отфильтровать лишний трафик средствами винды - невозможно. Устанавливать еще один сервер на Linux - дорого.
Было решено перекрыть внешку сервера роутером и был выбран бюджетный вариант RB2011UiAS-RM.
Хотел бы у Вас поинтересоваться каким лучше способом настроить Микротик (роутером или мостом) и какие лучше правила/скрипты использовать.
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение Chupaka »

Для начала неплохо бы определиться, с чем вы собираетесь бороться. Например, если у вас гигабитный канал к провайдеру, то при флуде шириной в весь канал нет особой разницы, какая загрузка процессора на сервере: играть всё равно будет некомфортно, если вообще возможно. Поэтому трафик флуда надо отсекать до того, как он прилетел к вам. Например, на оборудовании вашего провайдера.

Если вы просто не хотите пускать этот трафик к серверу, то надо смотреть на характер этого трафика: идёт ли он на порты сервера или на служебные порты (например, DNS 53/UDP), отвечает ли сервер на него, или трафик льётся лишь в одну сторону. В целом для данного случая можно использовать инструмент 'dst-limit' в фильтре файрвола.
notnullnet
Сообщения: 16
Зарегистрирован: 08 сен 2016, 12:36

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение notnullnet »

Трафик летит на 323 UDP порт с нескольких ботов. Общий поток 10000-15000 UDP пакетов длиной 1030 байт каждый в секунду. Иногда общий поток (игроки+дос) доходил до Гигабита на порте у меня тоже Гигабит.
Но это запущенный вариант, проблема не в канале, после 3000-4000 пакетов в секунду винда просто переставала принимать соединения, при этом провайдер мог зафильтровать айпишку атакующего после тикета.
Но так как атакуют боты, зафильтровывать через провайдера тикетами я буду бесконечно.

На самой винде я выжал максимум, убрал почти все сетевые службы и включил все возможные способы оптимизации, DNS отключен.

Для начала я настроил роутер на айпишку сервера и с локалки пробросил на него порт игры сервера, установил правило с Вашей темы http://forum.mikrotik.com/viewtopic.php?t=54607.
На проверку пытался зафлудить порт через LOIC, меня удачно забанило, при этом игроки продолжали играть.
Но с реальной атакой пока не сталкивался, будем наблюдать =)
Спасибо!


UPD: судя по адрес-банлисту поймал еще пару нарушителей, нагрузка на CPU роутера и сервера - минимальна, защита работает!

UPD2: досеры забили весь канал, но правило работает, загрузка микротика 70-80%, игроки играют ))) я в шоке
notnullnet
Сообщения: 16
Зарегистрирован: 08 сен 2016, 12:36

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение notnullnet »

Есть еще один момент.
Судя по адресным спискам ддосят с OVH облачных хостингов и используют айпишки с одной подсети.
Есть ли возможность по одной айпишке прописывать всю подсеть в бан?
Это уже походу скриптинг, попытаюсь сам сделать, напишу.
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение Chupaka »

notnullnet писал(а):Есть ли возможность по одной айпишке прописывать всю подсеть в бан?
а есть ли в этом особый смысл? всё равно если не дудосят - блокировать незачем, если начнётся атака - заблокирует

по-моему, эффектнее хостеру написать, что от них такие какахи валятся
notnullnet
Сообщения: 16
Зарегистрирован: 08 сен 2016, 12:36

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение notnullnet »

Месяц правило отбивало разнообразные атаки и наконец нащупали непонятное место в Mikrotik.
С прошлой недели как по команде роутер падает и теряет любую связь с внешним миром на 10 минут, как в правиле =)
Может быть такое что все игроки и сам сервер попадают в списки одновременно?
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение Chupaka »

notnullnet писал(а):роутер падает и теряет любую связь с внешним миром на 10 минут, как в правиле =)
и что при этом на роутере происходит? трассировка, пинги с роутера в сторону внешнего мира
notnullnet писал(а):Может быть такое что все игроки и сам сервер попадают в списки одновременно?
так происходит, или вы просто гадаете? почему бы просто не посмотреть? :)
notnullnet
Сообщения: 16
Зарегистрирован: 08 сен 2016, 12:36

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение notnullnet »

Процессор загружается на 100% из-за сетевой атаки.
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение Chupaka »

Если не секрет: вы видите мои сообщения? Почему не отвечаете на мои вопросы?

Tools -> Profile покажет, чем именно загружен процессор
notnullnet
Сообщения: 16
Зарегистрирован: 08 сен 2016, 12:36

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение notnullnet »

Простите, был занят.
TCP SYN флуд происходил.
Процессор нагружает правило Firewall DROP connection state: NEW, TCP flags: SYN rate: 400/5 burst: 4.
ИзображениеИзображение
Прилетает по 14-20 тысяч данных пакетов в секунду, на 5-6 мбит/с с 250 тысяч хостов.
Загрузка CPU с 5% подскакивает до 90%, а виновники firewall 50% и network 30% :)
Проблема так и не решена, ДЦ мне не помогает, бьюсь сам, пока проигрываю.
Я микротик свой уже низкоуровнево изучил и сделал вывод что нужно было брать CCR.

Прошу еще раз прощения если что не так написал, это мой первый микротик. :oops:
Последний раз редактировалось notnullnet 11 окт 2016, 09:57, всего редактировалось 1 раз.
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение Chupaka »

С чего вдруг такая догадка, что именно это правило нагружает процессор? :) Правил с connection-limit нет?

Вроде SYN-flood можно обрабатывать в таблице Raw файрвола - тогда Connection Tracking не будет грузиться этими пакетами. На практике не пробовал
notnullnet
Сообщения: 16
Зарегистрирован: 08 сен 2016, 12:36

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение notnullnet »

connection-limit нет
догадка такая потому что я его disable - умирает серв, enable - нагружает роутер =)
Raw файрвола? а где почитать можно про эту фичу?
notnullnet
Сообщения: 16
Зарегистрирован: 08 сен 2016, 12:36

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение notnullnet »

прочитал про RAW firewall, по сути это фаер на стадии прероутинга без трекинга соединений, тоесть он не умеет connection state смотреть и будет весь TCP траффик рубать с SYN флагом, а мне нужно рубать только те подключения которые только устанавливаются connection state: new
пробую эту методику
ИзображениеИзображение
пока атаки нет до 100 пакетов в секунду
notnullnet
Сообщения: 16
Зарегистрирован: 08 сен 2016, 12:36

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение notnullnet »

Поехали!
ИзображениеИзображение
Загрузка ЦП 30%, лагов в игре нет, никто даже не ощущает 17к пакетов в секунду =)
Спасибо за совет!
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение Chupaka »

Я правильно вижу, что используется limit? Тогда, видимо, у текущих игроков проблем нет, а вот новые вряд ли могут подключиться. Я бы в сторону dst-limit посмотрел
notnullnet
Сообщения: 16
Зарегистрирован: 08 сен 2016, 12:36

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение notnullnet »

Я сбрасывал кусок трафика себе на снифер, в Вайршарке мне отобразило 250 тысяч хостов, по 2 пакета с каждого. Дст лимит наверное тут нельзя.
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение Chupaka »

Возможно, у этих пакетов есть какие-то другие характерные признаки...
notnullnet
Сообщения: 16
Зарегистрирован: 08 сен 2016, 12:36

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение notnullnet »

В STEAM мне в открытую сознался один чел что "Как дела? Тебе не жить хохол е*****, сервер не встанет с колен, твою мамку я е*** и т.д." и сервер вместе с роутером опять упал :x
По сути, я узнал у ДЦ что ко мне уже летит 250к TCP SYN в секунду с 250к хостов. Это уже за гранью возможностей RB2011 :?
Пока роутер в оффлайне. Я не знаю что теперь делать.
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение Chupaka »

Chupaka писал(а):Возможно, у этих пакетов есть какие-то другие характерные признаки...
есть pcap атакующих пакетов?

кстати, а обратная связь с пользователями есть? может, сделать какой белый список? даже, например, "простукиванием" роутера перед игрой, чтобы с этого адреса подключения разрешались, а все остальные по умолчанию дропались
notnullnet
Сообщения: 16
Зарегистрирован: 08 сен 2016, 12:36

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение notnullnet »

Есть pcap 17к SYN атаки.

Обратную связь могу организовать через скрипты, при подключении собирать IP и сливать на сайт в БД.
А вот как принять этот список на роутере?

Да, и вчера ДЦ таки мной заинтересовался, написали что ограничат у себя на оборудовании... ждемс :?

UPD: переделал все правила фаервола, те что мог перенес в RAW, запретил все и открыл наружу только 2 игровых порта и порт PPTP, добавил правило разрешающее доступ к микротику только через локалку PPTP.
Последний раз редактировалось notnullnet 12 окт 2016, 10:14, всего редактировалось 1 раз.
sova_by
Сообщения: 21
Зарегистрирован: 06 окт 2016, 08:43

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение sova_by »

На роутер через API и ssh сливай !
ну идея примерна такая , http://wiki.mikrotik.com/wiki/Use_Mikro ... n_firewall
Только обрабатывай свой скрипт.
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение Chupaka »

pcap не покажете? :)
notnullnet
Сообщения: 16
Зарегистрирован: 08 сен 2016, 12:36

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение notnullnet »

http://dropmefiles.com/sBkjV
короче я отпустил SYN flood дальше на сервер, винда его схавала и не подавилась :lol:
а микротик даже RAW фаерволом задыхался на фильтрации
я думаю все дело в процессоре, на сервере у меня i7

UPD: теперь атакуют комбинированно, на фильтрах Микротика 150 млн пакетов в час дропается, периодически весь TCP траф дропает, но он мне не так важен :geek:
notnullnet
Сообщения: 16
Зарегистрирован: 08 сен 2016, 12:36

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение notnullnet »

Я чуток запутался.
В RAW фаерволе создал схему: что не разрешено то запрещено
ИзображениеИзображение
но работает как-то странно, с серверной локалки 192.168.88.0/24 не устанавливает TCP подключения в инет, хотя явно указано что с нее все пропускать
с другой стороны то что не прописано явно проходит, например подключение к локальным 3389
но забивает 200к флуда на ура, и все работает, хоть и на 99% нагрузки :)
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Зафильтровать UDP флуд на игровой сервер

Сообщение Chupaka »

Катастрофически неудобно читать правила файрвола с картинки. Пользуйтесь "/ip firewall export" ("/ip firewall export file=blabla") в Терминале