Что не так с моими правилами iptables для порта 80?

Что не так с моими правилами iptables для порта 80?

я всего-лишь хочупользоваться интернетом и быть веб-серверомно это не работает.

Мои правила таковы:

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

-A INPUT -p tcp --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

Также я не совсем уверен насчет этих состояний. Какие из них бесполезны в моем случае и почему?

Большое спасибо за вашу помощь.

РЕДАКТИРОВАТЬ

Я все еще не могу пользоваться интернетом. С этими правилами я хочу, чтобы мой сервер был веб-сервером и в то же время имел возможность пользоваться интернетом с этой машины (это просто для практики)

Вот мои обновленные правила. Что с ними не так? (Я добавил две строки для порта DNS, не уверен, полезны ли они или правильны)

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

    -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    -I OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
    -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

    -A OUTPUT -p tcp --dport 53 -j ACCEPT
    -A INPUT -p tcp --dport 53 -j ACCEPT

решение1

Ваше INPUTправило выглядит так, будто оно пытается разрешить входящие соединения с веб-сервером на локальной машине. Ваше OUTPUTправило выглядит так, будто оно пытается разрешить исходящие соединения с локальной машины на любой внешний веб-сервер. Чего вы пытаетесь добиться? И того, и другого?

В любом случае, вам нужно будет быть более терпимым в отношении правил ESTABLISHED,RELATED. Вы хотите разрешить все пакеты, которые являются частью установленных соединений, а не только те, которые имеют порт назначения 80. В частности, ответы от веб-сервера не имеют порта назначения 80 (они имеют порт источника 80), и вы не разрешаете их. Обычно у вас будет правило в верхней части каждой цепочки, которое разрешает все установленные и связанные пакеты:

-I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-I OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

После того, как вы это сделали, вы можете просто разрешить начальный пакет, который формирует новое соединение. Для разрешения доступа к локальному веб-серверу:

-A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

...и для разрешения доступа с локальной машины к внешним веб-серверам:

-A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

НОдля второго случая (разрешение доступа с локальной машины к внешним веб-серверам), вы думали о том, действительно ли это то, что вы хотите? Вы хотите, чтобы ничего, кроме HTTP, не проходило, даже DNS?

Связанный контент