Manual de Introducción a Seguridad Informática con IPTABLES
Este manual proporciona una introducción básica al diseño, configuración, administración y gestión de la seguridad informática utilizando IPTABLES en sistemas Linux.
Introducción a la Seguridad Informática
La seguridad informática es el conjunto de medidas y prácticas destinadas a proteger los sistemas, redes y datos contra accesos no autorizados, ataques y vulnerabilidades. Uno de los componentes clave de la seguridad en sistemas Linux es el uso de firewalls, y una de las herramientas más utilizadas para este fin es IPTABLES.
¿Qué es IPTABLES?
IPTABLES es una herramienta de firewall en sistemas Linux que permite filtrar, modificar y redirigir el tráfico de red. Funciona mediante reglas que definen cómo se manejan los paquetes de red (aceptar, rechazar o descartar).
Conceptos Básicos de IPTABLES
Tablas: IPTABLES organiza las reglas en tablas. Las tablas más comunes son:
- filter: Para filtrar paquetes (aceptar, rechazar o descartar).
- nat: Para traducción de direcciones de red (NAT).
- mangle: Para modificar paquetes (por ejemplo, cambiar el TTL).
Cadenas: Cada tabla tiene cadenas predefinidas que representan puntos de decisión:
- INPUT: Paquetes destinados al sistema local.
- OUTPUT: Paquetes generados por el sistema local.
- FORWARD: Paquetes que se enrutarán a través del sistema.
- PREROUTING y POSTROUTING: Para NAT y mangle.
Reglas: Son las instrucciones que definen qué hacer con los paquetes. Cada regla tiene:
- Un criterio de coincidencia (por ejemplo, dirección IP, puerto, protocolo).
- Una acción (ACCEPT, DROP, REJECT).
Argumentos:
-A <CHAIN>: Añade regla a la cadena especificada-D <CHAIN>: Eliminar Regla-s <SOURCE>: Fuente, IP de procedencia-j <ACTION>: (jump) - Salto (ACCEPT, DROP or REJECT)-p <protocol>: Protocolo--dport <port>: Destination Port--sport: <port>: Puerto fuente,-i:interfaz entrante-o:interfaz saliente-s:dirección IP origen-d:dirección IP destino
Diseño de un Firewall con IPTABLES
- Definir políticas por defecto: Establece qué hacer con el tráfico que no coincide con ninguna regla.
# Rechazar todo el tráfico entrante por defecto). (-P: policy)
iptables -P INPUT DROP- Permitir tráfico necesario: Abre solo los puertos y servicios esenciales.
# Permitir SSH (Puerto 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Permitir HTTP (80) y HTTPS (443)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT- Bloquear tráfico no deseado: Bloquea direcciones IP o rangos sospechosos.
# Bloquea una dirección específica:
iptables -A INPUT -s 192.168.1.100 -j DROP- Habilitar NAT (si es necesario):
# Para permitir que los dispositivos internos accedan a Internet.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEConfiguración Básica de IPTABLES
- Listar reglas existentes:
iptables -L -v -n- Agregar una regla: Permitir tráfico HTTP (puerto 80):
iptables -A INPUT -p tcp --dport 80 -j ACCEPT- Agregar una regla: Permitir tráfico HTTP (puerto 80) y HTTPS (443)
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT- Eliminar una regla: Eliminar la regla de HTTP:
iptables -D INPUT -p tcp --dport 80 -j ACCEPTt. Guardar reglas:
- En sistemas basados en Debian/Ubuntu:
iptables-save > /etc/iptables/rules.v4- En sistemas basados en RedHat/CentOS:
service iptables saveAdministración y Gestión de IPTABLES
- Monitoreo del tráfico:
- Usa
iptables -L -v -npara ver el tráfico que coincide con las reglas.
- Bloquear ataques:
Limitar el número de conexiones por IP para evitar ataques DDoS:
bashiptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute -j ACCEPT
- Reglas persistentes:
- Asegúrate de que las reglas se guarden y se carguen al reiniciar el sistema.
- Logging:
- Registrar tráfico sospechoso:bash
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH Attempt: "
Ejemplo de Configuración Básica
# Establecer políticas por defecto
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Permitir tráfico local
iptables -A INPUT -i lo -j ACCEPT
# Permitir tráfico HTTP y HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Permitir SSH desde una IP específica
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.50 -j ACCEPT
# Habilitar NAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Guardar reglas
iptables-save > /etc/iptables/rules.v4
# Permitir tráfico en el Loopback (Localhost)
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Fundamental para que los servicios internos se comuniquen entre sí.Anatomía de un Comando
Si quieres construir tus propias reglas, sigue esta estructura:
iptables [−t tabla] comando cadena [match] −j target
# -A: Añadir (Append) al final de la lista.
# -p: Protocolo (tcp, udp, icmp).
# -s / -d: Origen (source) / Destino (destination).
# --dport: Puerto de destino.
# -i / -o: Interfaz de entrada (input) / salida (output), ej: eth0.Consejos de Seguridad
- Minimizar la exposición: Abre solo los puertos necesarios.
- Actualizar regularmente: Mantén tu sistema y aplicaciones actualizados.
- Monitorear registros: Revisa los logs para detectar actividades sospechosas.
- Usar herramientas adicionales: Combina IPTABLES con herramientas como Fail2Ban para mayor seguridad.
Ejercicios:
1. Permitir SSH solo desde una red local específica:
Mostrar solución
iptables -A INPUT -p tcp -s 10.0.0.0/24 --dport 22 -j ACCEPT-s 10.0.0.0/24: Define el origen como todo el rango de red (máscara 24).--dport 22: Puerto estándar de SSH.-j ACCEPT: Permite el acceso solo si la IP viene de ese rango interno.
2. Redirección de Puertos (NAT)
Redirige el tráfico del puerto 80 al 8080 (útil para apps en Node.js, Java, etc.).
Mostrar solución
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080