
я всего-лишь хочупользоваться интернетом и быть веб-серверомно это не работает.
Мои правила таковы:
-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?