LinuxParty
🔐 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
A vueltas con el viejo tema... "Facturar sin ser autónomo" un lector nos manda este artículo... ¿Tenemos que hacernos autónomos para facturar si escribimos en un blog? ¿Cómo pueden facturar los diseñadores gráficos, escritores en blogs, traductores y demás pequeños colaboradores que ingresan una pequeña cantidad mensual?
Esta es la pregunta que todos los que tenemos un blog o hemos participado en otras actividades relacionadas nos hemos hecho alguna vez. Empezamos a escribir para otros y ganamos una pequeña cantidad de dinero, por la cual no compensa hacerse autónomo ya que el pago de esta cuota es superior a lo que ingresamos, o nos dejaría con apenas beneficio.
Cierto es que los juegos no abundan en Linux, pero también es verdad que de vez en cuando salen algunos a ser tomados muy en cuenta. Es el caso de Planeshift, un MMORPG al estilo World of Warcraft que hará las delicias de los más “viciaos”.
Este juego se ha desarrollado con licencia GPL en casi todo su código, con lo que es casi libre en su totalidad. Lo único que conserva con licencias privativas son el arte gráfico, los textos de la página web y el contenido del juego en forma de diálogos, nombres de personajes etc.
1. Sentencias de E/S
2. printf
3. Caracteres de Escape
4. Utilizar variables en los programas
5. scanf
* Más sentencias de E/S
1. gets
2. puts
3. getch
4. putch
5. getche
6. getchar
Indicarle que, cada programa es un conjunto de sentencias, y cada sentencia es una instrucción (o más de una) para el equipo, que es una colección de constantes, variables, operadores y declaraciones.
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:
Aunque el cifrado de disco ha existido durante muchos años, muchos de nosotros no lo aprovechamos. El concepto básico es que los documentos, archivos y datos están revueltos hasta que proporcione una contraseña para desbloquearlas. Por lo tanto, si se roba un PC o portátil, el ladrón no será capaz de leer los datos, protegiendo cualquier información confidencial que pueda almacenar.





