LinuxParty

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

🔐 Cómo crear chains reutilizables en iptables para una gestión de firewall más eficiente

Cuando administramos un firewall con iptables, mantener las reglas organizadas y comprensibles se vuelve esencial, especialmente a medida que el número de reglas crece. En lugar de tener una lista desordenada y difícil de mantener, podemos crear chains personalizadas reutilizables, lo que nos permite aplicar lógicas de filtrado específicas en distintos puntos del proceso.

Usar cadenas personalizadas en iptables es una práctica que facilita la gestión del firewall, especialmente en entornos con múltiples servicios y rangos IP cambiantes. Esta técnica no solo mejora la legibilidad y el mantenimiento del sistema, sino que permite una gestión más modular y segura de las reglas de red.

🎯 Objetivo del ejemplo

Supongamos un caso práctico y simplificado: tenemos un sistema Linux con un proxy escuchando en el puerto 3128 (por ejemplo, Squid), y queremos permitir el acceso remoto únicamente desde ciertos rangos de IP. Hasta ahora, la regla existente es la siguiente:

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
REJECT     tcp  --  anywhere             anywhere            tcp dpt:squid reject-with tcp-reset

❌ Problema

Agregar directamente los rangos permitidos al chain INPUT funcionaría, pero se volvería inmanejable si:

  • Aumentan los rangos de IP permitidos.

  • Se habilitan otros puertos para los mismos rangos.

Para evitar este desorden, la solución es crear una nueva cadena personalizada.


🛠️ Paso a paso

1. Crear una nueva cadena: EXTERNOS

# iptables -N EXTERNOS

Podemos verificar que se ha creado correctamente:

# iptables -L
Chain EXTERNOS (0 references)
target     prot opt source               destination

2. Añadir rangos IP permitidos

Ahora agregamos las IP o rangos autorizados en esta nueva cadena:

# iptables -A EXTERNOS -s 84.88.0.0/24 -j ACCEPT
# iptables -A EXTERNOS -s 213.55.111.66/32 -j ACCEPT

3. Añadir reglas de rechazo y caída

Agregamos un rechazo con tcp-reset para conexiones no autorizadas, y finalmente un DROP para el resto:

# iptables -A EXTERNOS -p tcp -j REJECT --reject-with tcp-reset
# iptables -A EXTERNOS -j DROP

Esto asegura que conexiones no autorizadas reciban una respuesta rápida (evitando aparecer como "filtered" en escaneos nmap) y que todo lo demás se descarte silenciosamente.


4. Sustituir la regla original en INPUT

Primero, eliminamos la regla genérica anterior:

# iptables -D INPUT -i eth0+ -p tcp --dport 3128 -j REJECT --reject-with tcp-reset

Luego, redirigimos ese tráfico a la nueva chain EXTERNOS:

# iptables -A INPUT -i eth0+ -p tcp --dport 3128 -j EXTERNOS

✅ Resultado esperado

Al ejecutar:

# iptables -L -nv

Deberías ver algo como esto:

Chain INPUT (policy ACCEPT)
 pkts bytes target     prot opt in     out     source               destination
   10   440 EXTERNOS   tcp  --  eth0+  *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3128

Chain EXTERNOS (1 references)
 pkts bytes target     prot opt in     out     source               destination
    8   336 ACCEPT     all  --  *      *       84.88.0.0/24         0.0.0.0/0
    0     0 ACCEPT     all  --  *      *       213.55.111.66        0.0.0.0/0
    2   104 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with tcp-reset
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0

💾 Guardar configuración

Para mantener las reglas tras un reinicio, guarda la configuración:

# /etc/init.d/iptables save
Saving firewall rules to /etc/sysconfig/iptables:          [  OK  ]

🔁 Ventajas de usar chains reutilizables

  • ✅ Centralizas el control de IPs autorizadas.

  • ✅ Puedes aplicar la chain EXTERNOS a otros puertos sin duplicar reglas.

  • ✅ Para añadir o eliminar IPs, solo modificas una cadena.

Ejemplo: Si mañana necesitas habilitar el puerto 22 para los mismos rangos:

# iptables -A INPUT -i eth0+ -p tcp --dport 22 -j EXTERNOS

 

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías