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

Ограничение ICMP с помощью iptables

У меня есть следующее правило, которое, как я полагаю, ограничивает пакеты icmp до 1 / с.

:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [7:988]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type any -m limit --limit 1/sec -j ACCEPT
-A INPUT -s 11.x.x.71/32 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s 11.x.x.65/32 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s 11.x.x.66/32 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT

Но когда я пингую этот хост с помощью "ping -i .001", все пакеты достигают этого компьютера и на

iptables-nvL Счетчик DROP не увеличивается. Что не так с этим правилом

Я думаю, вам нужно добавить явное правило DROP для ICMP после вашего правила ограничения скорости

-A INPUT -p icmp -m icmp --icmp-type any -m limit --limit 1/sec -j ACCEPT
-A INPUT -p icmp -j DROP

Это связано с тем, что последующие пакеты считаются УСТАНОВЛЕННЫМИ, и ваше последующее правило

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

позволяет им, прежде чем они будут отброшены политикой.

Проблема здесь в том, что вы принимаете один пакет (который неявно имеет состояние NEW, а затем пытаетесь применить правило ограничения. Предел, вероятно, работает, однако RELATED,ESTABLISHED Правило позже, вероятно, все испортит.

У вас есть два варианта:

  1. Установите связанное и установленное правило для каждого протокола.
  2. Сделать ICMP-трафик этого типа не отслеживаемым с помощью отслеживания состояния.

Учитывая, что таблицы есть прямо сейчас ...

Установите связанное и установленное правило для каждого протокола.

iptables -D INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m tcp -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m udp -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT

Сделать ICMP-трафик этого типа не отслеживаемым с помощью отслеживания состояния.

iptables -t raw -I PREROUTING -m icmp -p icmp --icmp-type any -j NOTRACK