Conceptos de Seguridad
# Detección de intrusiones
Monitoriza el tráfico sin bloquear, identifica amenazas y genera alertas para análisis posterior
# Prevención de intrusiones
Analiza el tráfico en tiempo real y bloquea actividades sospechosas inmediatamente
# Cortafuegos
Filtra conexiones mediante reglas predefinidas para prevenir accesos no autorizados
# Protección de datos internos
Restringe la transmisión de información confidencial fuera de la red interna
Arquitectura de Netfilter
El subsistema de filtrado opera en el kernel mediante netfilter, gestionado con iptables
Flujos de tráfico principales:
# Entrante: PREROUTING → Decisión enrutamiento → INPUT → Pila de protocolos
# Saliente: Pila de protocolos → OUTPUT → POSTROUTING
# Reenvío: PREROUTING → FORWARD → POSTROUTING
Cadenas de Procesamiento
Puntos de enlace en el kernel:
PREROUTING
INPUT
OUTPUT
FORWARD
POSTROUTING
Tablas de Reglas
# Principales
filter: Filtrado básico
nat: Traducción de direcciones
# Complementarias
mangle: Modificación de cabeceras
raw: Desactiva seguimiento de conexiones
security: Control de acceso obligatorio
# Consultar tablas:
iptables -t [nombre_tabla] -L
# Orden de procesamiento:
security → raw → mangle → nat → filter
Interacción Tablas-Cadenas
• filter: Opera en INPUT, OUTPUT y FORWARD
• nat: Funciona en PREROUTING, OUTPUT y POSTROUTING
• raw: Configurable en PREROUTING y OUTPUT
• mangle: Disponible en todas las cadenas
Adminisrtación con iptables
Sintaxis básica:
iptables -t TABLA ACCIÓN CADENA [Criterios] -j ACCIÓN_FINAL
Acciones principales:
-A: Añadir regla al final
-I [n]: Insertar en posición n
-D: Eliminar regla
-F: Limpiar todas las reglas
-P: Establecer política por defecto (ACCEPT/DROP)
Criterios Comunes
• Origen: -s 192.168.1.0/24
• Destino: -d 10.0.0.5
• Protocolo: -p tcp --dport 80
• Módulos especiales:
- multiport: Múltiples puertos
- state: Estados de conexión (NEW, ESTABLISHED)
- connlimit: Limitar conexiones simultáneas
Ejemplos Prácticos
# Permitir acceso web desde IP específica
iptables -A INPUT -p tcp -s 192.168.1.50 --dport 80 -j ACCEPT
# Bloquear tráfico no solicitado
iptables -A INPUT -m state --state INVALID -j DROP
# Registrar conexiones nuevas
iptables -I INPUT -p tcp --dport 22 -j LOG --log-prefix "Nueva conexión SSH"
Buenas Prácticas
1. Permitir siempre conexiones ESTABLISHED
2. Restringir conexiones entrantes NEW
3. Ordenar reglas de específicas a genéricas
4. Combinar reglas similares
5. Usar política DROP al final de la cadena
Ejemplo de estructura recomendada:
1. ESTABLISHED,RELATED
2. Reglas específicas (SSH, HTTP)
3. Reglas genéricas
4. Política DROP
Persistencia de Reglas
# Guardar configuración
iptables-save > /etc/iptables/reglas.conf
# Restaurar al inicio
systemctl enable iptables
iptables-restore < /etc/iptables/reglas.conf
Traducción de Direcciones
# SNAT (Enmascaramiento saliente)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
# DNAT (Redirección entrante)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-dest 192.168.1.10:8080
# Requiere activar IP forwarding:
sysctl -w net.ipv4.ip_forward=1