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

Как работают политики iptables?

Я добавил несколько основных правил:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Затем закройте все остальные порты командой:

iptables -A INPUT -j DROP

И он отлично работает, я тестировал его с помощью:

% telnet x.x.x.x 81                                
Trying x.x.x.x...
telnet: connect to address x.x.x.x: Operation timed out
telnet: Unable to connect to remote host

Но когда я перечисляю правила, я вижу policy ACCEPT:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
DROP       all  --  anywhere             anywhere

Я знаю, как это изменить с помощью iptables -P INPUT DROP, тогда это становится:

Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
DROP       all  --  anywhere             anywhere

Но я не понимаю разницы, потому что работает как раньше. я прочел этот статья, в которой предлагается изменить политику на DROP, но зачем мне это делать? В чем разница в моих приведенных выше iptables?

Политика DROP iptables эквивалентна iptables -A INPUT -j DROP (Правило DROP) в конце цепочки. Но это правило должен оставаться в конце цепочки, любое правило после него никогда не будет затронуто ни одним пакетом.

Если вы используете правило DROP, вы больше не можете использовать iptables -A (добавить), вы можете использовать только iptables -I nr (вставьте, номер - номер последнего правила) и вставьте правила перед последним. И для того, чтобы эта вставка работала, вы должны знать номер вашего последнего правила, которое, конечно же, изменится, поэтому становится сложнее писать скрипт. Вы можете избавить вас от некоторых трудностей, используя политику DROP.

И, наконец, imho, это делает все намного более читаемым, если я с самого начала знаю, как будут обрабатываться пакеты, не соответствующие ни одному правилу.

Есть еще мысли по этому поводу?