1

У меня есть следующие правила в ufw для iptables:

-A ufw-user-input -p tcp --dport 80 -m state --state NEW -m recent --set
-A ufw-user-input -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 120 -j ufw-user-limit
-A ufw-user-input -p tcp --dport 80 -j ufw-user-limit-accept
-A ufw-user-input -p udp --dport 80 -m state --state NEW -m recent --set
-A ufw-user-input -p udp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 120 -j ufw-user-limit
-A ufw-user-input -p udp --dport 80 -j ufw-user-limit-accept

который отклоняет соединения от IP, если есть 120 соединений в течение 60 секунд.

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

2 ответа2

1

Соответствующая часть ваших правил - «-update --seconds 60 --hitcount 120», вот что вам нужно знать:

--seconds seconds
This option must be used in conjunction with one of --rcheck or --update. When used,
this will narrow the match to only happen when the  address is in the list and was
seen within the last given number of seconds.

--hitcount hits
This option must be used in conjunction with one of --rcheck or --update. When used,
this will narrow the match to only happen when the  address is in the list and
packets had been received greater than or equal to the given value. This option may
be used along with --seconds to create an even narrower match requiring a certain
number of hits within a specific time frame. The maximum value for the hitcount
parameter  is  given  by the "ip_pkt_list_tot" parameter of the xt_recent kernel
module. Exceeding this value on the command line will cause the rule to be rejected.
0

Я боролся с этим.
Я думал, если бы это было решено так: (вы можете перенести FORWARD для INPUT)

iptables -A FORWARD -i wlp3s0 -p udp --dport 5060 -m state --state NEW -m recent --set

iptables -A FORWARD -i wlp3s0 -p udp --dport 5060 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount=10 -j REJECT --reject-with icmp-port-unreachable

Вышеописанное сработало, ограничившись 10 с / за 60 секунд. Я думал, что это работает, потому что я перестал отправлять в течение "заблокированного" периода. Однако, если продолжить отправку в течение периода блокировки, он будет заблокирован навсегда.

Когда я изменяю порядок (так, чтобы --set был после оператора hitcount ), он работал как предполагалось: после того, как "период блокировки" закончился, новые пакеты разрешены (пока они не достигают числа обращений).

iptables -A FORWARD -i wlp3s0 -p udp --dport 5060 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount=10 -j REJECT --reject-with icmp-port-unreachable

iptables -A FORWARD -i wlp3s0 -p udp --dport 5060 -m state --state NEW -m recent --set

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .