IPTables es una herramienta robusta para gestionar el filtrado de paquetes en Linux. Un aspecto crucial de su configuración es establecer reglas de seguridad para bloquear tráfico sospechoso que pueda amenazar la red. A continuación, se describen dos configuraciones de reglas IPTables, sus diferencias, y en qué situaciones puede ser más conveniente usar cada una.
Primera Configuración: Bloqueo General
Este conjunto de reglas se enfoca en detectar y bloquear patrones comunes de tráfico malicioso sin entrar en demasiados detalles. Su simplicidad la hace adecuada para redes donde se busca una protección básica sin incurrir en un alto consumo de recursos.
# Bloqueo de paquetes fragmentados
-A INPUT -f -j DROP
# Bloqueo de paquetes TCP con combinaciones sospechosas de banderas
-A INPUT -p tcp -m tcp --tcp-flags ALL FIN,PSH,URG -j DROP
-A INPUT -p tcp -m tcp --tcp-flags ALL NONE -j DROP
# Bloqueo de paquetes de conexiones inválidas
-A INPUT -p tcp -m conntrack --ctstate INVALID -j DROP
Descripción:
- Paquetes fragmentados: Se bloquean porque suelen ser utilizados en ataques de fragmentación para evadir firewalls.
- Banderas TCP sospechosas:
FIN,PSH,URG
: Esta combinación activa simultáneamente no ocurre en tráfico legítimo.NONE
: Paquetes TCP sin banderas activas ("nulos") pueden ser usados en escaneos furtivos de puertos.
- Conexiones inválidas: Bloquea paquetes que no pertenecen a una conexión existente o válida.
Primera configuración:
- Bloqueo general:
-A INPUT -f -j DROP
: Bloquea cualquier paquete fragmentado. Los paquetes fragmentados pueden ser utilizados para evadir detecciones en firewalls.
- Bloqueo de paquetes TCP con banderas sospechosas:
--tcp-flags ALL FIN,PSH,URG
: Filtra paquetes con estas banderas activas simultáneamente, algo que normalmente no ocurre en tráfico legítimo.--tcp-flags ALL NONE
: Bloquea paquetes TCP sin ninguna bandera activa, conocidos como "paquetes nulos", que pueden ser usados para escanear puertos.
- Bloqueo de conexiones inválidas:
-m conntrack --ctstate INVALID
: Bloquea paquetes que no forman parte de ninguna conexión válida o reconocida.
Segunda Configuración: Bloqueo Detallado
Esta configuración incluye reglas adicionales para bloquear patrones más específicos y sofisticados de tráfico malicioso. Es ideal para entornos donde se necesita un nivel más exhaustivo de protección.
# Bloqueo de paquetes TCP con todas las banderas activas
-A INPUT -p tcp -m tcp --tcp-flags ALL FIN,SYN,RST,PSH,ACK,URG -j DROP
# Bloqueo de combinaciones específicas de banderas TCP
-A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
# Bloqueo de paquetes de conexiones inválidas
-A INPUT -m conntrack --ctstate INVALID -j DROP
Descripción:
- Todas las banderas activas: Un paquete TCP con todas las banderas activas (
FIN,SYN,RST,PSH,ACK,URG
) es anómalo y no debería existir en tráfico legítimo. - Combinaciones específicas de banderas TCP:
SYN,RST
: Combinación imposible en tráfico legítimo, a menudo generada por herramientas de escaneo o ataques de spoofing.FIN,SYN
: Similarmente inválida en protocolos estándar.
- Conexiones inválidas: Igual que en la primera configuración.
Segunda configuración:
- Bloqueo más detallado de combinaciones de banderas TCP:
--tcp-flags ALL FIN,SYN,RST,PSH,ACK,URG
: Bloquea paquetes con todas las banderas activas, algo que no tiene sentido en un tráfico TCP legítimo.--tcp-flags SYN,RST SYN,RST
: Filtra paquetes con las banderas SYN y RST activas al mismo tiempo, algo anómalo y potencialmente malicioso.--tcp-flags FIN,SYN FIN,SYN
: Bloquea paquetes con FIN y SYN activas simultáneamente, lo cual es otro patrón inválido.
- Bloqueo de conexiones inválidas:
- Similar a la primera configuración, usa
-m conntrack --ctstate INVALID
.
- Similar a la primera configuración, usa
Comparativa entre ambas configuraciones
Característica | Primera Configuración | Segunda Configuración |
---|---|---|
Nivel de detalle | Básico | Avanzado |
Combinaciones de banderas TCP | Menos reglas específicas | Más reglas específicas |
Consumo de recursos | Bajo | Moderado |
Idoneidad para entornos | Redes pequeñas o menos críticas | Redes críticas o expuestas |
Por qué usar una u otra configuración:
- Primera configuración: Es más generalista y efectiva para bloquear patrones comunes de ataque sin un nivel de granularidad avanzado.
- Segunda configuración: Es más detallada y específica para bloquear combinaciones adicionales de banderas TCP que se consideran anómalas, proporcionando una protección más exhaustiva contra intentos sofisticados de escaneo o evasión.
Recomendación de uso
- Usa la primera configuración si buscas una protección general, rápida de implementar, y no necesitas analizar combinaciones avanzadas de tráfico.
- Opta por la segunda configuración si tienes un entorno donde el tráfico puede incluir patrones más sofisticados de ataque, como intentos avanzados de evasión o escaneo.
Ambas configuraciones son personalizables y se pueden ajustar a las necesidades de tu red para lograr un balance óptimo entre seguridad y rendimiento.
Conclusión
La elección entre estas configuraciones depende del nivel de amenaza percibida y la complejidad del entorno de red. Si bien la primera configuración es más ligera y sencilla, la segunda proporciona una cobertura más amplia contra un rango mayor de patrones maliciosos. Implementa estas reglas en tu firewall y evalúa su impacto según las características de tu infraestructura.