У меня есть следующее правило, которое, как я полагаю, ограничивает пакеты 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
Правило позже, вероятно, все испортит.
У вас есть два варианта:
Учитывая, что таблицы есть прямо сейчас ...
Установите связанное и установленное правило для каждого протокола.
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