¿Qué hay de malo con mis reglas de iptables para el puerto 80?

¿Qué hay de malo con mis reglas de iptables para el puerto 80?

Solo quieronavegar por la web y ser un servidor webpero no funciona.

Mis reglas son:

-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

Además, no estoy muy seguro acerca de esos estados. ¿Cuáles son inútiles en mi caso y por qué?

Muchas gracias por tu ayuda.

EDITAR

Todavía no puedo navegar por Internet. Con estas reglas quiero que mi servidor sea un servidor web y al mismo tiempo pueda navegar por internet desde esta máquina (esto es sólo para practicar)

Aquí están mis reglas actualizadas. ¿Que hay de malo con ellos? (Agregué dos líneas para el puerto DNS, no estoy seguro si son útiles o correctas)

    -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

Respuesta1

Parece que su INPUTregla está intentando permitir conexiones entrantes a un servidor web en la máquina local. Parece que su OUTPUTregla está intentando permitir conexiones salientes desde la máquina local a cualquier servidor web externo. ¿Cuál estás tratando de lograr? ¿Ambos?

En cualquier caso, deberá ser más permisivo con sus reglas ESTABLECIDAS Y RELACIONADAS. Desea permitir todos los paquetes que forman parte de las conexiones establecidas, no solo los que tienen el puerto de destino 80. En particular, las respuestas del servidor web no tienen el puerto de destino 80 (tienen el puerto de origen 80) y usted no les permitas. Normalmente, tendría una regla en la parte superior de cada cadena que permite todos los paquetes establecidos y relacionados:

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

Una vez que haya hecho eso, puede permitir que el paquete inicial forme una nueva conexión. Para permitir el acceso al servidor web local:

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

...y para permitir el acceso desde la máquina local a servidores web externos:

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

PEROPara el segundo caso (permitir el acceso desde la máquina local a servidores web externos), ¿ha pensado si eso es lo que realmente desea? ¿No quieres que pase nada más que HTTP, ni siquiera DNS?

información relacionada