Я пытаюсь настроить правила брандмауэра на веб-сервере RHEL, чтобы мой веб-сервер мог обслуживать веб-страницы и одновременно загружать удаленные файлы с помощью curl/wget. Проблема, которую я испытываю, заключается в том, что я могу делать только одно или другое. Я попытался изменить настройки iptables и изолировал проблему, связанную с исходящими пакетами, потому что, если я включил все исходящие, все работает нормально.

Это то, что я использую:

iptables -A INPUT -p tcp -m tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j DROP
iptables -A OUTPUT -p tcp -m tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp -m multiport --sports 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -p udp -m udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

Может ли это быть что-то делать с ESTABLISHED, СВЯЗАННЫМИ в моем правиле ВЫХОДА для http/https?

1 ответ1

1

Вы явно отбросили все свои выходные пакеты, которые не соответствуют ни одному из правил:

iptables -P OUTPUT DROP

И в то же время вы не приняли никаких пакетов, которые составляют новые соединения, и вместо этого все ваши правила действуют только на установленных соединениях, которые фактически никогда не могут быть установлены:

iptables -A OUTPUT ... -m state --state ESTABLISHED,RELATED ...

Пожалуйста, прочтите страницу руководства для iptables и особенно часть, описывающую -m state . Тогда вы не будете создавать брандмауэры, которые явно блокируют ваши новые исходящие соединения, а затем будете удивлены, что ваши исходящие соединения блокируются.

Лично я не думаю, что это хорошая идея - использовать политику DROP в цепочках INPUT и OUTPUT и меня не волнует ее использование в цепочке FORWARD . Я всегда использую явные правила REJECT/DROP в цепочке и. REJECT обычно лучше для начала, так как он не вводит задержки и тайм-ауты.

Лучшим решением для вас, вероятно, является переключение политики OUTPUT обратно на ACCEPT и удаление правил OUTPUT .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .