Creación/configuración de firewall usando iptables

Creación/configuración de firewall usando iptables

Quiero configurar un firewall usando iptables.

El servidor está operando el servicio httpd (httpd). El sistema operativo es Centos7, y la siguiente información es después de instalar iptables-services e iniciar iptables sin modificar nada.

[root@iptables ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

Como puede ver, en la cadena de ENTRADA, Línea número 3, parece que el servidor está abierto.

Pero el acceso a la página web a través del navegador no funciona.

¿Hay algo que tengo que configurar?

como resultado de iptables-save(tomado del comentario):

# Generated by iptables-save v1.4.21 on Thu Sep 16 13:41:53 2021
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [527:50260]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Thu Sep 16 13:41:53 2021

Respuesta1

Como sospechaba, iptables -Locultó la coincidencia adicional, pero iptables-savemostró la verdad desnuda. Su regla número 3 solo coincide con lo: una interfaz de bucle invertido. Este firewall sólo acepta conexiones a tcp/22 (SSH) desde el exterior.

La resolución más sencilla será:

iptables -I INPUT 4 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT 5 -p tcp --dport 443 -j ACCEPT

Además, puedes filtrar con conntrack y combinar ambas reglas en una sola con multipuerto:

iptables -I INPUT 4 -m conntrack --ctstate NEW -p tcp -m multiport --dports 80,443 -j ACCEPT -m comment --comment "HTTP/HTTPS service"

Observe también el comentario que agregué. Utilice comentarios paracadaregla y algún día después me agradecerás por este consejo, si tu firewall crece hasta decir más de 50 reglas.

No lo uses -m state. Esto está obsoleto. Realmente se usa -m conntrackbajo el capó, y es más transparente escribirlo así explícitamente.

No lo uses iptables -L. Como has visto, su resultado parece "más bonito", y aquí terminan las ventajas, pero tampoco presenta todos los detalles necesarios. El resultado de iptables-saveparece menos bonito, pero muestra todos los detalles más finos, así que utilice siempre este último.

información relacionada