На моем VPS (CentOS 7) iptables по умолчанию:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Я не могу посетить свой веб-сайт, настроенный с использованием Apache / 2.4.6 , в браузере отображается: «Соединение было сброшено».
Если я вставлю правило для принятия TCP-соединения на порт 80 в iptables с помощью «iptables -I INPUT -p tcp --dport = 80 -j ACCEPT», все будет хорошо, сайт можно посещать без проблем. Iptables:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Интересно, зачем мне добавлять правило, потому что в старых iptables третье правило - «ПРИНЯТЬ все - 0.0.0.0/0 0.0.0.0/0», что означает, что он будет принимать все подключения ко всем порты. Я что-то неправильно понял?
Да, вы упустили важную деталь. Но это не твоя вина; это очень плохо задокументировано и, по-видимому, малоизвестно.
Команда iptables
имеет существенный недостаток: она фактически не отображает полное правило брандмауэра, если вы не используете параметр командной строки -v
.
Если вы повторите команду iptables и добавите -v
, вы увидите, что это правило принимает весь трафик на интерфейсе с именем lo
, то есть весь трафик локального хоста.
target prot opt in out source destination
ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
Поскольку iptables
теперь устарел, а уязвимость существовала почти всегда, маловероятно, что это когда-нибудь изменится.