Configuración de Iptables: Reglas y ejemplos prácticos para tu firewall

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 5,18 KB

Configuración de Iptables: Reglas y ejemplos prácticos

A continuación, se presentan ejemplos de configuración de iptables para un firewall, incluyendo el borrado de reglas existentes, el establecimiento de políticas por defecto y la configuración de reglas específicas para diferentes escenarios.

Borrado de reglas

Para empezar, es importante limpiar cualquier configuración previa. Los siguientes comandos borran todas las reglas existentes en las tablas filter y nat:

  • iptables -F
  • iptables -X
  • iptables -Z
  • iptables -t nat -F

Estableciendo políticas por defecto permisivas

Inicialmente, se establecen políticas permisivas para evitar bloquear el tráfico accidentalmente. Estas políticas permiten todo el tráfico entrante, saliente y de reenvío:

  • iptables -P INPUT ACCEPT
  • iptables -P OUTPUT ACCEPT
  • iptables -P FORWARD ACCEPT
  • iptables -t nat -P PREROUTING ACCEPT
  • iptables -t nat -P POSTROUTING ACCEPT

Filtrado de tráfico

Una vez establecidas las políticas por defecto, se pueden añadir reglas para filtrar el tráfico no deseado. A continuación, se muestran algunos ejemplos:

  • Bloquear el tráfico en la interfaz de loopback (lo):
    iptables -P INPUT -i lo -j DROP

Redireccionamiento de puertos

El redireccionamiento de puertos (DNAT) permite dirigir el tráfico entrante a una máquina interna específica. Los siguientes ejemplos redirigen el tráfico de los puertos 80 y 443 a la máquina interna 192.168.3.2:

  • Redirigir el puerto 80:
    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.3.2:80
  • Redirigir el puerto 443:
    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 192.168.3.2:80

También se puede redirigir un puerto externo a un puerto diferente en la misma máquina. El siguiente ejemplo redirige el puerto 22222 al puerto 22:

  • Redirigir el puerto 22222 al 22:
    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22222 -j REDIRECT --to-port 22

Permitir tráfico específico

Es importante permitir el tráfico necesario para el funcionamiento correcto del sistema y la red:

  • Permitir el tráfico en la interfaz de loopback:
    iptables -A INPUT -i lo -j ACCEPT
  • Permitir el acceso al firewall desde la red local:
    iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT

Enmascaramiento (MASQUERADE)

El enmascaramiento permite que las máquinas en la red local y la DMZ salgan a internet utilizando la dirección IP del firewall:

  • Enmascarar el tráfico de la red local:
    iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
  • Enmascarar el tráfico de la DMZ:
    iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE

Además, es necesario activar el IP forwarding para permitir que el firewall reenvíe el tráfico:

  • Activar IP forwarding:
    echo 1 > /proc/sys/net/ipv4/ip_forward

Reglas de reenvío (FORWARD)

Las reglas de reenvío controlan el tráfico que pasa a través del firewall entre diferentes redes:

  • Permitir el acceso de la DMZ a una base de datos en la LAN:
    iptables -A FORWARD -s 192.168.3.0/24 -p tcp --dport 5432 -d 192.168.10.0/24 -j ACCEPT
    iptables -A FORWARD -s 192.168.10.0 -p tcp --dport 5432 -d 192.168.3.0/24 -j ACCEPT
  • Permitir el acceso al Terminal Server (3389) desde la LAN:
    iptables -A FORWARD -s 192.168.10.0/24 -p tcp --dport 3389 -d 192.168.3.2 -j ACCEPT
    iptables -A FORWARD -s 192.168.3.2 -p tcp --sport 3389 -d 192.168.10.0/24 -j ACCEPT
  • Cerrar el acceso de la DMZ a la LAN:
    iptables -A FORWARD -s 192.168.3.0/24 -d 192.168.10.0/24 -j DROP
  • Cerrar el acceso de la DMZ al propio firewall:
    iptables -A INPUT -s 192.168.3.0/24 -i eth2 -j DROP

Seguridad adicional

Se pueden añadir reglas para mejorar la seguridad del firewall:

  • Permitir el acceso del administrador desde una IP específica:
    iptables -A INPUT -i eth0 -s 88.56.96.13 --dport 22
  • Cerrar el rango de puertos bien conocidos (1-1024):
    iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP
    iptables -A INPUT -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP
  • Cerrar el puerto de gestión Webmin (10000):
    iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 10000 -j DROP
  • Evitar el envío de pings:
    iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
    iptables -A INPUT -p icmp --icmp-type echo-reply -j DROP

Entradas relacionadas: