Почему я не могу получить доступ к своему веб-сайту, если порт 80 не заблокирован?

На моем 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», что означает, что он будет принимать все подключения ко всем порты. Я что-то неправильно понял?

1
задан 13 September 2020 в 06:50
1 ответ

Да, вы упустили важную деталь. Но это не твоя вина; это очень плохо задокументировано и, по-видимому, малоизвестно.

Команда 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 теперь устарел, а уязвимость существовала почти всегда, маловероятно, что это когда-нибудь изменится.

1
ответ дан 13 September 2020 в 04:37

Теги

Похожие вопросы