HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ИНФО > Статьи
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 25.01.2015, 20:47
begin_end
Участник форума
Регистрация: 04.01.2007
Сообщений: 179
С нами: 10184006

Репутация: 1362
По умолчанию

Купирование DoS атаки Quake 3 сервера на Windows Server 2008

Долгие годы был расположен у меня небольшой Quake 3 Arena сервер. Использовался он для нужд местных игр да технических экспериментов с настройками и модулями этой замечательной игры.

И вот, в последнее время все чаще и чаще стал я замечать у него проблемы. То процесс приложения внезапно завершится, то процессорный ресурс выделенного, но маломощного (по причине энергосбережения) сервера исчерпан. Подумав вначале на проблему с конфигурационным файлом или log-файлом я посмотрел их и все было нормально, разве что log за годы вырос до недопустимого значения, был очищен. Перезапуск процесса quake3.exe не приводил к снижению загрузки процессора. И тогда был запущен WireShark. Сразу была обнаружена высочайшая сетевая активность в виде UDP пакетов на порт 27960, открытый quake сервером. Пакеты были протокола quake и содержали запрос getstatus. На этот запрос сервер quake должен отвечать пакетом с текущей информацией о сервере (версия сервера, имя карты, число игроков и т.д.). Размер пакета getstatus мал - 64 байта, а вот ответа на него - свыше 500 байт. То есть атакующий может используя небольшой трафик вызывать ответный, почти вдесятеро больший.



Ситуация требует принятия мер, нужно не допускать флуд-пакеты на quake сервер.

Был проведен обзор проявления проблемы на других ресурсах. Оказалось, что явление такого флуда достаточно обычно, но борются с ним - как получится. Для варианта реализации ioquake решение встроено в само приложение, но у меня обычный quake. На игровых хостингах используются некие скрипты, впрочем не выложенные, да и там linux. И вообще, все вероятные решения проблемы могли бы быть только под linux, обычный для таких серверов. А это значит, что решение следовало вывести самостоятельно.

В начале были попытки вручную блокировать атакующие IP адреса. Это оказалось бессмысленно, так как они часто изменялись с малой повторностью. Правда была подмечена одна особенность, часть атакующих использовала исходящий порт 2980, блокировка которого несколько помогла.

Вообще, блокировка входящего трафика в Windows 2008 Server проводилась следующим образом:

На интерфейсе с внешним IP...



Через фильтры входа...



Принимать все пакеты, кроме...



И добавление IP фильтра на исходную сеть (тут IP атакующего).



Неплохо бы автоматизировать эти действия. Для чего был найден эквивалент консольной команды, через средство netsh:

Код:
netsh routing ip add filter name="ИМЯ_ИНТЕРФЕЙСА"
filtertype=input srcaddr=ТУТ.ИП.АДРЕС.АТАКЕРА srcmask=255.255.255.255
dstaddr=0.0.0.0 dstmask=0.0.0.0 proto=ANY
Эта консольная команда отлично пополняет фильтр входа на Windows 2003, но на Windows 2008 требует своего выполнения командной строкой, запущенной из-под explorer.exe, иначе у netsh недоступен routing.

Но как нам автоматически добавлять IP в фильтр этой командой? Тут без программирования не обойтись.

Было разработано небольшое консольное приложение "Quake 3 flood detector". Приложение реагирует на getstatus и getinfo UDP флуд, блокируя IP флудера в течение секунды с момента начала флуда.



Можно указать порог флуда, то есть число запросов в секунду (RPS) которые считаются флудом. Так же указывается IP своегоQuake 3 сервера (для которого ищется флуд), имя BAT файла (в который вносится значение IP с последующим выполнением через explorer.exe) и список игнорируемых при флуде IP (обычно это master-сервера quake 3, которые иногда могут превысить порог RPS и быть ошибочно забанены).

Для использования приложения на Windows 2008 Server достаточно указать имя сетевого интерфейса в файлеiplock.bat, а в config.txt указать IPQuake 3 сервера, скрывать или нет консоль, свои master сервера (их IP). Если имеется более одного quake сервера, то потребуется несколько увеличить значение RPS, оно должно быть не менее числа серверов, умноженного на 4. Ярлык на q3fd.exe помещается в автозагрузку или с помощью сторонних утилит создается стандартная служба на его основе. Это зависит от того, как организуется автозапуск дополнительных серверных программ в системе, например того же quake3.exe.

Программа Quake 3 flood detector 1.0 q3flooddetect_10_exe_src.zip (44KB), вместе с конфигурационными файлами и прокомментированными файлами исходного кода (Delphi 7).
 
Ответить с цитированием
 



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.