En este artículo, exploraremos un archivo de configuración de iptables diseñado para proteger un servidor frontend permitiendo el acceso exclusivamente a través de los proxies de Cloudflare. Esta configuración se adapta a cualquier aplicación web o servicio que funcione como frontend, asegurando que sólo las solicitudes válidas y provenientes de Cloudflare puedan alcanzar el servidor.
Descripción del Archivo de Configuración
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
# Bloqueos generales
-A INPUT -f -j DROP
-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
-A INPUT -m conntrack --ctstate INVALID -j DROP
# Aceptar trafico local
-A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
# Permitir conexiones establecidas y relacionadas
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# Permitir SSH desde la red interna
-A INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
# Permitir trafico HTTP/HTTPS para Cloudflare
-A INPUT -s 173.245.48.0/20 -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 103.21.244.0/22 -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 103.22.200.0/22 -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 103.31.4.0/22 -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 141.101.64.0/18 -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 108.162.192.0/18 -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 190.93.240.0/20 -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 188.114.96.0/20 -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 197.234.240.0/22 -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 198.41.128.0/17 -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 162.158.0.0/15 -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 104.16.0.0/13 -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 104.24.0.0/14 -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 172.64.0.0/13 -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 131.0.72.0/22 -p tcp -m multiport --dports 80,443 -j ACCEPT
COMMIT
Explicación de la Configuración
Políticas Predeterminadas
- INPUT DROP: Bloquea por defecto todo el tráfico entrante.
- FORWARD DROP: Impide el reenvío de paquetes entre interfaces.
- OUTPUT ACCEPT: Permite todo el tráfico saliente desde el servidor.
Bloqueos Generales
- Fragmentos de paquetes: Se descartan paquetes fragmentados para prevenir ataques.
- Paquetes con flags sospechosos: Se bloquean paquetes con combinaciones de flags no válidas o vacías.
- Conexiones inválidas: Se descartan paquetes que no corresponden a conexiones válidas.
Excepciones Permitidas
- Tráfico local: Acepta comunicaciones locales (loopback).
- Conexiones establecidas: Permite paquetes de conexiones ya existentes o relacionadas.
- SSH: Permite acceso SSH solo desde una red interna (en este caso,
192.168.10.0/24
).
Restricción a Proxies de Cloudflare
Cada rango de direcciones IP especificado corresponde a los proxies de Cloudflare. Las reglas permiten tráfico HTTP y HTTPS (puertos 80 y 443) desde estos rangos, bloqueando cualquier otra solicitud directa al servidor. Esto asegura que todas las conexiones se gestionen a través de Cloudflare, lo que ofrece beneficios como:
- Protección contra DDoS.
- Cacheo de contenido estático.
- Filtrado de solicitudes maliciosas.
Ventajas de Esta Configuración
- Seguridad Mejorada: Al bloquear el acceso directo y depender de los proxies de Cloudflare, el servidor queda protegido contra ataques directos.
- Simplicidad: Las reglas son claras y eficientes, evitando configuraciones innecesarias.
- Compatibilidad: Esta configuración funciona con cualquier servicio frontend que utilice HTTP/HTTPS.
Consideraciones Adicionales
- Actualización de IPs de Cloudflare: Cloudflare actualiza periódicamente sus rangos de IP. Es importante sincronizar estos cambios regularmente.
- Monitorización: Utilizar herramientas como
fail2ban
ologwatch
para supervisar posibles intentos de conexión bloqueados.
Con esta configuración, su servidor frontend estará bien protegido y operará de manera eficiente con los servicios de Cloudflare como intermediario seguro.