O que há de errado com minhas regras de iptables para a porta 80?

O que há de errado com minhas regras de iptables para a porta 80?

Eu só queronavegue na web e seja um servidor webmas não está funcionando.

Minhas regras são:

-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

Além disso, não tenho muita certeza sobre esses estados. Quais são inúteis no meu caso e por quê?

Muito obrigado por sua ajuda.

EDITAR

Ainda não consigo navegar na internet. Com essas regras, quero que meu servidor seja um servidor web e ao mesmo tempo possa navegar na internet a partir desta máquina (isso é apenas para praticar)

Aqui estão minhas regras atualizadas. O que há de errado com eles? (Adicionei duas linhas para a porta DNS, não tenho certeza se são úteis ou corretas)

    -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

Responder1

Parece que sua INPUTregra está tentando permitir conexões de entrada para um servidor web na máquina local. Parece que sua OUTPUTregra está tentando permitir conexões de saída da máquina local para qualquer servidor Web externo. O que você está tentando alcançar? Ambos?

De qualquer forma, você precisará ser mais permissivo em relação às regras ESTABELECIDAS E RELACIONADAS. Você deseja permitir todos os pacotes que fazem parte de conexões estabelecidas, não apenas aqueles que possuem a porta de destino 80. Em particular, as respostas do servidor web não possuem a porta de destino 80 (elas possuem a porta de origem 80) e você não os permita. Normalmente, você teria uma regra no topo de cada cadeia que permitiria todos os pacotes estabelecidos e relacionados:

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

Depois de fazer isso, basta permitir o pacote inicial que forma uma nova conexão. Para permitir acesso ao servidor web local:

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

...e para permitir acesso da máquina local a servidores web externos:

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

MASpara o segundo caso (permitindo acesso da máquina local a servidores web externos), você já pensou se é isso que você realmente deseja? Você não quer mais nada além de HTTP, nem mesmo DNS?

informação relacionada