iptables - правила - обьясните

Рейтинг: 2Ответов: 1Опубликовано: 17.05.2023

Обьясните как это работает и почему после внесения этих правил, замедляется ответ от сервера к примеру при заходе на сайт идёт как-бы задержка, если убрать, все более менее работает быстро.

-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
-A INPUT -p tcp ! --syn -m state --state NEW -j DROP
-A INPUT -p icmp -m icmp --icmp-type 5 -j DROP

Ответы

▲ 2

Смотрим man itables-extensions:

limit

This module matches at a limited rate using a token bucket filter. A rule using this extension will match until this limit is reached. It can be used in combination with the LOG target to give limited logging, for example.

xt_limit has no negation support - you will have to use -m hashlimit ! --hashlimit rate in this case whilst omitting --hashlimit-mode.

  • --limit rate[/second|/minute|/hour|/day] -- Maximum average matching rate: specified as a number, with an optional /second, /minute, /hour, or /day suffix; the default is 3/hour.

  • --limit-burst number -- Maximum initial number of packets to match: this number gets recharged by one every time the limit specified above is not reached, up to this number; the default is 5.

Markdown скопирован из этого ответа.


Более подробная документация тут в limit match extensions.

Там же дан пример и указан график на превдографике на примере борьбы с DDOS акатами, собственно, вполне логичное применение. Если идёт непонятный интенсивный траффик, то он будет резаться по скорости, снизится нагрузка на сервер.

У вас лимиты стоят на icmp (Ping requests) и tcp. Всё что будет идти по udp резаться по скорости не будет.

Флаги FIN, SYN , RST, ACK подробно объяснены здесь:

Флаг Значение
FIN Указывает на то, что соединение разрывается. И отправитель, и получатель посылают пакеты FIN для изящного завершения соединения.
SYN Пакеты, которые используются для инициирования соединения.
RST Сигнализируют о разрыве соединения или о том, что служба не принимает запросы.
ACK Пакеты, которые используются для подтверждения того, что пакеты данных были получены, также используются для подтверждения запроса на инициирование и запроса на разрыв соединения.