Iptables — ограничени по количеству соединений на порт в минуту

KM
На сайте с 11.08.2011
Offline
76
1413

Здравствуйте,

Подскажите, пожалуйста, как правильней будет ограничить соединений по порту с vps на ноде. Имеем:

Ноду с 50 vps. У VPS виртуальные интерфейсы vnet. Мост реализован при помощи ebtables.

Iptables рулит сетевыми правилами на ноде, за исключением моста.

Требуется: ограничить соединение от источника (наши подсети vps) по 25 порту в 1 минуту времени.

К примеру лимит 100 соединений в минуту - если больше дроп, если меньше ограничение не срабатывает. Но если сработало, то в следующую минуту счетчик должен сброситься и все по новой. Превысил 100 - дроп, на следующую минуту сброс счетчика и так далее.

В эту минуту дропнуться.

В след минуту такой же лимит.

Средствами iptables

Пример то, что стоит сейчас:

-A FORWARD -s 11.0.0.0/8 -p tcp --dport 25 -m state --state NEW -m hashlimit --hashlimit-name BLOCK --hashlimit-mode srcip --hashlimit-above 1/m --hashlimit-burst 200 -j LOG --log-prefix "25port: " 

-A FORWARD -s 11.0.0.0/8 -p tcp --dport 25 -m state --state NEW -m hashlimit --hashlimit-name BLOCK --hashlimit-mode srcip --hashlimit-above 1/m --hashlimit-burst 300 -j DROP
-A FORWARD -p tcp --syn --dport 25 -j ACCEPT


---------- Добавлено 05.06.2018 в 09:54 ----------

Судя по всему, ответ будет:

-m hashlimit --hashlimit-name BLOCK --hashlimit-mode srcip --hashlimit-above 200/m --hashlimit-burst 200

Как мне кажется.

M
На сайте с 01.12.2009
Offline
235
#1
Но если сработало, то в следующую минуту счетчик должен сброситься и все по новой.

-hashlimit-htable-gcinterval - Очистка мусора, Может этот параметр поможет сбрасывать, блоки, srcip например указать минуту, или --hashlimit-htable-expire.

Надо тестировать ;)

Администратор Linux,Freebsd. построения крупных проектов.
KM
На сайте с 11.08.2011
Offline
76
#2
madoff:
-hashlimit-htable-gcinterval - Очистка мусора, Может этот параметр поможет сбрасывать, блоки, srcip например указать минуту, или --hashlimit-htable-expire.

Надо тестировать ;)

Да, добавил --hashlimit-htable-expire 60000 (60 секунд).

Подскажите, пожалуйста, правильное ли понимание по параметрам:

--hashlimit-above 1/m --hashlimit-burst 300

--hashlimit-above — используется по любому с --hashlimit-burst, так как если не прописать его, автоматически добавляется в правило с значением 5.

--hashlimit-above — первое условие

--hashlimit-burs — второе условие

Второе условия является неким буфером, ячейкой или "полкой для книг" в размере burst'a. То есть, у нас полка, на которую можем поставить 300 книг. Первое условие является скоростью освобождения ячейки, полки: с какой скоростью и количеством будет высвобождаться наша ячейка или полка. При значении 1/min у нас с полки будет уходить 1 книга в минуту?

В правильном ли вообще направлении иду? Или использовать какой нибудь iplimit модуль?

M
На сайте с 01.12.2009
Offline
235
#3

Да, в направлении правильном. Если вам требуется блокировать, при превышении обращений, на определённое время.

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