Страница 1 из 2

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

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

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

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

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

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

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

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

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


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

UPD2: досеры забили весь канал, но правило работает, загрузка микротика 70-80%, игроки играют ))) я в шоке

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

Добавлено: 11 сен 2016, 18:17
notnullnet
Есть еще один момент.
Судя по адресным спискам ддосят с OVH облачных хостингов и используют айпишки с одной подсети.
Есть ли возможность по одной айпишке прописывать всю подсеть в бан?
Это уже походу скриптинг, попытаюсь сам сделать, напишу.

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

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

по-моему, эффектнее хостеру написать, что от них такие какахи валятся

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

Добавлено: 01 окт 2016, 07:20
notnullnet
Месяц правило отбивало разнообразные атаки и наконец нащупали непонятное место в Mikrotik.
С прошлой недели как по команде роутер падает и теряет любую связь с внешним миром на 10 минут, как в правиле =)
Может быть такое что все игроки и сам сервер попадают в списки одновременно?

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

Добавлено: 01 окт 2016, 22:39
Chupaka
notnullnet писал(а):роутер падает и теряет любую связь с внешним миром на 10 минут, как в правиле =)
и что при этом на роутере происходит? трассировка, пинги с роутера в сторону внешнего мира
notnullnet писал(а):Может быть такое что все игроки и сам сервер попадают в списки одновременно?
так происходит, или вы просто гадаете? почему бы просто не посмотреть? :)

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

Добавлено: 02 окт 2016, 06:51
notnullnet
Процессор загружается на 100% из-за сетевой атаки.

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

Добавлено: 03 окт 2016, 14:40
Chupaka
Если не секрет: вы видите мои сообщения? Почему не отвечаете на мои вопросы?

Tools -> Profile покажет, чем именно загружен процессор

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

Добавлено: 10 окт 2016, 19:45
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:

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

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

Вроде SYN-flood можно обрабатывать в таблице Raw файрвола - тогда Connection Tracking не будет грузиться этими пакетами. На практике не пробовал

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

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

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

Добавлено: 11 окт 2016, 09:40
notnullnet
прочитал про RAW firewall, по сути это фаер на стадии прероутинга без трекинга соединений, тоесть он не умеет connection state смотреть и будет весь TCP траффик рубать с SYN флагом, а мне нужно рубать только те подключения которые только устанавливаются connection state: new
пробую эту методику
ИзображениеИзображение
пока атаки нет до 100 пакетов в секунду

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

Добавлено: 11 окт 2016, 15:24
notnullnet
Поехали!
ИзображениеИзображение
Загрузка ЦП 30%, лагов в игре нет, никто даже не ощущает 17к пакетов в секунду =)
Спасибо за совет!

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

Добавлено: 11 окт 2016, 17:05
Chupaka
Я правильно вижу, что используется limit? Тогда, видимо, у текущих игроков проблем нет, а вот новые вряд ли могут подключиться. Я бы в сторону dst-limit посмотрел

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

Добавлено: 11 окт 2016, 17:38
notnullnet
Я сбрасывал кусок трафика себе на снифер, в Вайршарке мне отобразило 250 тысяч хостов, по 2 пакета с каждого. Дст лимит наверное тут нельзя.

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

Добавлено: 11 окт 2016, 17:43
Chupaka
Возможно, у этих пакетов есть какие-то другие характерные признаки...

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

Добавлено: 11 окт 2016, 19:50
notnullnet
В STEAM мне в открытую сознался один чел что "Как дела? Тебе не жить хохол е*****, сервер не встанет с колен, твою мамку я е*** и т.д." и сервер вместе с роутером опять упал :x
По сути, я узнал у ДЦ что ко мне уже летит 250к TCP SYN в секунду с 250к хостов. Это уже за гранью возможностей RB2011 :?
Пока роутер в оффлайне. Я не знаю что теперь делать.

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

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

кстати, а обратная связь с пользователями есть? может, сделать какой белый список? даже, например, "простукиванием" роутера перед игрой, чтобы с этого адреса подключения разрешались, а все остальные по умолчанию дропались

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

Добавлено: 12 окт 2016, 07:40
notnullnet
Есть pcap 17к SYN атаки.

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

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

UPD: переделал все правила фаервола, те что мог перенес в RAW, запретил все и открыл наружу только 2 игровых порта и порт PPTP, добавил правило разрешающее доступ к микротику только через локалку PPTP.

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

Добавлено: 12 окт 2016, 08:33
sova_by
На роутер через API и ssh сливай !
ну идея примерна такая , http://wiki.mikrotik.com/wiki/Use_Mikro ... n_firewall
Только обрабатывай свой скрипт.

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

Добавлено: 12 окт 2016, 14:58
Chupaka
pcap не покажете? :)

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

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

UPD: теперь атакуют комбинированно, на фильтрах Микротика 150 млн пакетов в час дропается, периодически весь TCP траф дропает, но он мне не так важен :geek:

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

Добавлено: 13 окт 2016, 07:58
notnullnet
Я чуток запутался.
В RAW фаерволе создал схему: что не разрешено то запрещено
ИзображениеИзображение
но работает как-то странно, с серверной локалки 192.168.88.0/24 не устанавливает TCP подключения в инет, хотя явно указано что с нее все пропускать
с другой стороны то что не прописано явно проходит, например подключение к локальным 3389
но забивает 200к флуда на ура, и все работает, хоть и на 99% нагрузки :)

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

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