IPtables, защита от DoS атаки

M
На сайте с 16.09.2009
Offline
278
#11
zexis:
Разработчик игры сам может выбрать протокол, который использовать.

Звучит как "вы сами выбираете Вселенную, в которой жить". Увы, это не так. Физическая реальность устроена именно так и не иначе - и от этого не уйти.

Точно также и выбор протокола транспортного уровня - совершенно объективный и однозначный процесс. Он зависит от характера игры, а не от прихотей разработчиков.

Pantograph:
Можете объяснить как работают

Посмотрите, пожалуйста, man iptables - раздел hashlimit. У этого модуля много опций и вам не имеет смысл объяснять в отдельности "как работает" та или иная. Либо вы составите для себя представление как работает "оно все" - либо будете и дальше забивать магические цифирки.

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
P
На сайте с 04.02.2012
Offline
2
#12

man я перечитал, но все равно сложно понять как это устроено. По этому прошу, если это не сложно, объяснить по подробнее.

zexis
На сайте с 09.08.2005
Offline
388
#13
Pantograph:
Можете объяснить как работают:

--hashlimit-above 1/second

--hashlimit-burst 20

Если объяснять по простому.

Скорость пропускания пакетов с одного IP не более 1-го в секунду, но будут пропускаться кратковременные всплески пакетов с одного IP с любой интенсивностью длиной до 20 пакетов.

Если более детально, то реализовано это так.

Создается массив системных счетчиков целого типа.

Каждый элемент массива хранит счетчик пакетов для одного IP.

который каждую секунду уменьшается на 1, если он больше 0.

Каждый пакет проходящий через это правило, увеличивает соответствующий элемент массива счетчиков на 1.

Если при поступлении очередного пакета системный счетчик меньше 20, то пакет не соответствует правилу, если больше 20 то применяется действие DROP.

P
На сайте с 04.02.2012
Offline
2
#14

Значит поступив по хитрому, и сделав так:

iptables -A INPUT -p udp --dport *** -m state ! --state NEW -m hashlimit --hashlimit-above 150/second --hashlimit-burst 150 --hashlimit-mode srcip --hashlimit-name GAME -j DROP

У нас вместимость хранилища будет 150 пакетов, и каждую секунду будет очищаться. И тогда ни кто не сможет отправить в чат, пару тысяч сообщений в секунду.

Остается методом тыка узнать сколько в секунду пользователи шлют пакетов, дабы не лишить игры всех остальных:).

zexis
На сайте с 09.08.2005
Offline
388
#15

Проанализируйте с помощью tcpdump интенсивность и тип пакетов злоумышленника.

Определите тип и интенсивность легитимных пакетов, и тогда уже придумывайте правила, как фильтровать.

По ключу iptables –v можете смотреть статистику забаненных пакетов каждым правилом.

---------- Добавлено 09.02.2012 в 01:24 ----------

Pantograph:
Значит поступив по хитрому, и сделав так:
iptables -A INPUT -p udp --dport *** -m state ! --state NEW -m hashlimit --hashlimit-above 150/second --hashlimit-burst 150 --hashlimit-mode srcip --hashlimit-name GAME -j DROP

Бред какой то написали. Протокол UDP не имеет состояний и опции

-m state ! --state NEW

к нему нельзя применять.

P
На сайте с 04.02.2012
Offline
2
#16

Ну вот, узнал кое что новое). Так и приходится учиться:).

iptables -A INPUT -p udp --dport *** -m hashlimit --hashlimit-above 150/second --hashlimit-burst 150 --hashlimit-mode srcip --hashlimit-name GAME -j DROP

Так, я полагаю, будет правильно?

P
На сайте с 04.02.2012
Offline
2
#17

Нашел кое что интересное.

rmmod ipt_recent # Сносим модуль

modprobe ipt_recent ip_pkt_list_tot=70 ip_list_tot=200 # Включаем сного устанавливая свои параметры.

В итоге при помощи модуля recent я могу достичь своей цели.

Бред какой то написали. Протокол UDP не имеет состояний и опции
-m state ! --state NEW
к нему нельзя применять.

Перечитал доки iptables, конкретно про udp. Там сказано, что пакеты этого протокола могут иметь состояния, NEW & ESTABLISHED.

Ещё опробовал свой пример с -m state. Работает.

zexis
На сайте с 09.08.2005
Offline
388
#18
Pantograph:

Перечитал доки iptables, конкретно про udp. Там сказано, что пакеты этого протокола могут иметь состояния, NEW & ESTABLISHED.
Ещё опробовал свой пример с -m state. Работает.

Где вы такое нашли? Дайте ссылку или приведите цитату из документации.

I
На сайте с 23.12.2010
Offline
25
#19
zexis:


Где вы такое нашли? Дайте ссылку или приведите цитату из документации.

предположим вы отсылаете UDP пакет с какого-то адреса и порта. логично предположить что вам кто-то ответит UDP пакетом на этот адрес и порт и ваш фаревол должен пропустить этот ответ. вот когда он пропустит этот пакет, соединение приобретает статус ESTABLISHED. если вам пошлют еще один пакет, то фаревол его пропустит, т.к. статус ESTABLISHED

zexis
На сайте с 09.08.2005
Offline
388
#20
iopiop:
предположим вы отсылаете UDP пакет с какого-то адреса и порта. логично предположить что вам кто-то ответит UDP пакетом на этот адрес и порт и ваш фаревол должен пропустить этот ответ. вот когда он пропустит этот пакет, соединение приобретает статус ESTABLISHED. если вам пошлют еще один пакет, то фаревол его пропустит, т.к. статус ESTABLISHED

Не знал о такой возможности. Спасибо, буду знать.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий