LinuxParty
Lee este post:
/foros/viewtopic.php?f=10&t=73&p=145#p145
Los sistemas operativos Linux, han sido considerados menos vulnerables que los sistemas Windows durante muchos años – pero el mito de que son “inmunes” al ataque de virus es completamente falso. La temprana supervivencia de las plataformas Linux, se debió principalmente a la falta de acceso administrativo - root - requerido para que el malware se infiltre en el sistema, la habilidad de la comunidad Linux para reparar vulnerabilidades rápidamente y la baja tasa de adopción de Linux en las redes corporativas. Esto convierte a Linux en un objetivo de menor prioridad para los creadores de malware. Sin embargo, esta prioridad está cambiando rápidamente a la vez que la popularidad de las plataformas Linux crece en las empresas.
🔐 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
EXTERNOSa 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
Las tres tablas principales son:
- filter: Se trata de la tabla por defecto para el filtrado de paquetes. Sus hooks (chains desde el punto de vista de iptables) son:
Más que nada lo digo porque cuando hablamos de ataques de fuerza bruta, solemos dar prioridad (obviamente) a servicios como ssh con soluciones como fail2ban o DenyHosts tal y como reseño en esa entrada pero ¿qué pasa por ejemplo con el FTP u otros tan sensibles como el correo?
Ahí es donde entra en escena BFD, una herramienta más de los creadores de APF Firewall (que por cierto, su trabajo es impresionante, mirad la lista, tengo que probar LSM, Linux Socket Monitor)
Quienes hayan instalado algún sistema de CMS o foros en servidores Apache, seguramente lo escucharon nombrar. El archivo .htaccess permite fijar configuraciones especiales para directorios y subdirectorios de una web, sin requerir acceso de administrador o editar la configuración global. Y, encima, ni siquiera hace falta un reinicio para aplicar los cambios.
-
Seguridad
- Utilizar ssh sin contraseña con ssh-keygen y ssh-copy-id
- Configuración paso a paso de una NAT con los iptables
- Snort para Windows, detección de Intrusos y seguridad.
- Detectar ROOTKITS en Linux
- 20 Ejemplos IPTables para nuevos Administradores de Sistemas
- IPTABLES para evitar ataques de Denegación de Servicio (DDoS)
- mod_security y mod_evasive en Linux para CentOS / RedHat
- Un Windows XP sin protección y conectado a Internet: el experimento que demuestra por qué no deberías hacerlo
- Contraseñas Aleatorias en Internet: Cómo Crear Claves Seguras Sin Complicarte
- DuckDuckGo ahora te permite ocultar imágenes generadas por IA en los resultados de búsqueda
- El analizador de protocolos de red de código abierto Wireshark 4.4.8 actualiza la compatibilidad de protocolos
- GNU Screen para los que les gustan la Paranoia del logeo.




