Назад | Перейти на главную страницу

ipset iptables отбрасывает все исключаемые порты, но через ограничение скорости

У меня есть простая карта ipset для отслеживания подозрительных IP-адресов.

Эти мои команды:

ipset flush
ipset -q destroy banlists
ipset create banlists hash:ip comment family inet hashsize 2048 maxelem 1048576 timeout 300

И я говорю, что iptables удаляется при совпадении в ipset:

iptables -I INPUT 1 -m set -j DROP --match-set banlists src
iptables -I FORWARD 1 -m set -j DROP --match-set banlists src

Это работает, но я хочу

Если вы хотите разрешить порты 80 и 443, вы можете добавить еще одно правило для INPUT цепочка:

iptables -I INPUT 1 -m set -j DROP --match-set banlists src
iptables -I INPUT 1 -p tcp -m multiport --dports 80,443 -j ACCEPT

и еще одно правило для FORWARD цепочка:

iptables -I FORWARD 1 -m set -j DROP --match-set banlists src
iptables -I FORWARD 1 -p tcp -m multiport --dports 80,443 -j ACCEPT

Предыдущие правила разрешат доступ к портам 80 и 443 для всех IP-адресов. Чтобы применить ограничение скорости на ipset банлистов, вы можете использовать:

iptables -I INPUT 1 -m set --match-set banlists src -j DROP
iptables -I INPUT 1 -p tcp -m multiport --dports 80,443 -m state --state NEW -m set --match-set banlists src -m recent --update --seconds 120 --hitcount 10 -j DROP
iptables -I INPUT 1 -p tcp -m multiport --dports 80,443 -m state --state NEW -m set --match-set banlists src -m recent --set -j ACCEPT

Более простой способ (IMO) - использовать -A переключатель вместо -I. Конечно, вам нужно просмотреть полный набор правил, чтобы убедиться, что он настроен должным образом (правила проверяются по порядку). Таким образом, правила появляются в обычной последовательности, как они написаны:

iptables -A INPUT -p tcp -m multiport --dports 80,443 -m state --state NEW -m set --match-set banlists src -m recent --set -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 80,443 -m state --state NEW -m set --match-set banlists src -m recent --update --seconds 120 --hitcount 10 -j DROP
iptables -A INPUT -m set --match-set banlists src -j DROP

Те же правила необходимо применять к FORWARD цепь. Вы можете настроить recent параметры модуля по мере необходимости, а именно hitcount и seconds.