Cambiar tema

Lista blanca de IP de origen de Cloudflare: 3 métodos para bloquear el tráfico no-CF y proteger el origen

Easton editorial illustration: security-and-delivery gateway

La filtración de la IP de origen deja la protección de Cloudflare en papel mojado. Si un atacante obtiene esa IP, puede saltarse Cloudflare y golpear el servidor directamente: DDoS al origen, escaneo de puertos y búsqueda de vulnerabilidades. Las vías son varias: sitios de consulta SSL, DNS histórico cacheado, subdominios o correo sin CDN.

Proteger el origen no basta con el proxy de Cloudflare. Hay que configurar el firewall del servidor para permitir solo las IP de retorno de Cloudflare y bloquear todo lo demás. Este artículo cubre tres métodos: panel BT (lo más simple), Nginx puro (más flexible) y certificado de origen (lo más seguro). Incluye la lista completa de IP, pasos, pruebas y problemas frecuentes.

¿Por qué limitar el tráfico no-CF? El riesgo real de filtrar la IP de origen

Primero, cómo se filtra la IP de origen. Yo también pensaba que apuntar el dominio a Cloudflare bastaba; los atacantes tienen más trucos de los que imaginas.

Vías habituales de filtración

La más típica es la consulta de certificados SSL. En sitios como myssl.com, al comprobar el certificado puedes exponer la IP real. ¿Por qué? Con CDN de Cloudflare y SSL activo, la comprobación del certificado puede mostrar la IP del origen. La primera vez que lo supe me sorprendió: es como decir «atácame aquí».

También están los registros DNS históricos. Muchos servicios cachean resoluciones; algunos dicen guardar datos para siempre. Cambias el dominio a Cloudflare hoy, pero quien consulte el historial sigue viendo la IP antigua del origen.

Los subdominios o el correo son otro agujero. Muchos ponen el sitio principal en CDN y olvidan subdominios o correo. Un ping a mail.example.com o las cabeceras de un correo pueden filtrar la IP. Conozco a alguien de ops que protegió el sitio al detalle y cayó porque localizaron la IP del servidor de correo.

Qué pasa cuando filtra

Con la IP de origen, el atacante evita Cloudflare. El DDoS llega directo y puede saturar tu ancho de banda. Además escanean puertos y buscan vulnerabilidades.

La protección de Cloudflare queda en fachada: en el panel todo parece bien y el origen ya está sufriendo. En foros como V2EX alguien comentó: «Tengo CDN pero encuentran la IP del origen rápido, ¿qué falló?» — suele ser no tener lista blanca bien configurada.

¿Dónde está la lista de IP de retorno de Cloudflare?

Para la lista blanca, primero necesitas las IP de retorno de Cloudflare. CF las publica en páginas dedicadas.

Direcciones oficiales

Cloudflare mantiene tres URLs:

Guárdalas en favoritos para futuras actualizaciones.

Rangos IPv4 actuales de Cloudflare

Hasta la fecha, los rangos IPv4 de retorno incluyen estos 15 CIDR (CIDR es una forma compacta de expresar un bloque continuo de direcciones):

173.245.48.0/20
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
141.101.64.0/18
108.162.192.0/18
190.93.240.0/20
188.114.96.0/20
197.234.240.0/22
198.41.128.0/17
162.158.0.0/15
104.16.0.0/13
104.24.0.0/14
172.64.0.0/13
131.0.72.0/22

Esos 15 bloques cubren unos 1,78 millones de direcciones.

Rangos IPv6

Si tu servidor usa IPv6, añade también estos bloques:

2400:cb00::/32
2606:4700::/32
2803:f800::/32
2405:b500::/32
2405:8100::/32
2a06:98c0::/29
2c0f:f248::/32

Importante: la lista de Cloudflare se actualiza de vez en cuando. Revisa la página oficial cada uno o dos meses. Si no, nuevas IP de CF pueden quedar bloqueadas y fallar el retorno al origen.

Método 1: lista blanca en panel BT (el más simple)

Con el panel BT (宝塔), el plugin de firewall Nginx permite configurar la lista blanca con clics, sin escribir archivos a mano.

Paso 1: instalar el plugin Nginx Firewall gratuito

En el panel BT, menú Tienda de softwareAplicaciones de tercerosNginx Firewall gratuito. Si no está instalado, instálalo; tarda segundos.

Paso 2: configurar la lista blanca de IP

Tras instalar, abre la configuración del firewall Nginx.

  1. Configuración global en el menú lateral
  2. En Lista blanca de IP, pulsa Configurar
  3. En la ventana, añade uno a uno los rangos IPv4 de Cloudflare

Truco: BT pide IP inicial y IP final, pero tú tienes CIDR (p. ej. 173.245.48.0/20). ¿Cómo convertir?
Usa herramientas online («CIDR a rango IP»). Por ejemplo, 173.245.48.0/20 va de 173.245.48.0 a 173.245.63.255.
Convertir 15 bloques a mano cansa. A veces copio listas ya convertidas que publican otros blogs.
4. Tras añadir todos los rangos, Importar
5. Reinicia Nginx

Nota: el panel BT solo soporta IPv4 en la interfaz. Con IPv6 activo, edita Nginx a mano o usa el método 2.

Paso 3: verificar

No te vayas sin probar:

  • Con datos móviles 4G (no-CF), accede directo a la IP de origen: debe salir 403 Forbidden
  • Por dominio (vía CF) debe cargar bien

Si ves 502, revisa rangos incompletos o reglas no guardadas. Confirma que el firewall BT está activo y que añadiste todos los rangos de CF.

Método 2: lista blanca en Nginx puro (más flexible)

Sin BT, o si quieres más control, edita Nginx directamente. Soporta IPv6 y es más completo que BT.

Paso 1: crear el archivo de IP de Cloudflare

Por SSH, crea un archivo dedicado:

sudo nano /etc/nginx/cloudflare-whitelist.conf

Contenido:

# Rangos IPv4 de Cloudflare
allow 173.245.48.0/20;
allow 103.21.244.0/22;
allow 103.22.200.0/22;
allow 103.31.4.0/22;
allow 141.101.64.0/18;
allow 108.162.192.0/18;
allow 190.93.240.0/20;
allow 188.114.96.0/20;
allow 197.234.240.0/22;
allow 198.41.128.0/17;
allow 162.158.0.0/15;
allow 104.16.0.0/13;
allow 104.24.0.0/14;
allow 172.64.0.0/13;
allow 131.0.72.0/22;
# Rangos IPv6 de Cloudflare
allow 2400:cb00::/32;
allow 2606:4700::/32;
allow 2803:f800::/32;
allow 2405:b500::/32;
allow 2405:8100::/32;
allow 2a06:98c0::/29;
allow 2c0f:f248::/32;
# Rechazar el resto
deny all;

Guarda (Ctrl+O, Ctrl+X).

Clave: deny all; al final rechaza todo lo que no esté en allow. No lo omitas.

Paso 2: incluir la lista en el sitio

Edita la configuración del sitio, normalmente en /etc/nginx/sites-available/ (Debian/Ubuntu) o /etc/nginx/conf.d/ (CentOS).

sudo nano /etc/nginx/sites-available/your-site.conf

En el bloque server:

server {
    listen 80;
    server_name example.com;
    # Lista blanca Cloudflare
    include /etc/nginx/cloudflare-whitelist.conf;
    # Resto de configuración...
    root /var/www/html;
    index index.html;
}

Si escuchas 443 (HTTPS), añade la misma línea en ese bloque.

Paso 3: probar y recargar Nginx

Comprueba la sintaxis:

sudo nginx -t

Si ves syntax is ok y test is successful, recarga:

sudo systemctl reload nginx

Listo.

Ventaja: un solo archivo para actualizar IP; varios sitios pueden compartirlo. Más flexible que BT y con IPv6.

Flujo completo de lista blanca de IP de origen de Cloudflare

Pasos desde obtener la lista de IP hasta verificar la configuración, con los tres métodos: panel BT, Nginx puro y certificado de origen

Estimated time: PT20M

  1. 1

    Step 1: Obtener la lista de IP de retorno de Cloudflare

    Visita las páginas oficiales:
  2. 2

    Step 2: Método 1: panel BT (el más simple)

    Pasos:
  3. 3

    Step 3: Método 2: Nginx puro (más flexible)

    Pasos:
  4. 4

    Step 4: Método 3: certificado de origen (el más seguro)

    Pasos:
  5. 5

    Step 5: Verificar que funciona

    Con 4G (no-CF) a la IP de origen: 403 Forbidden. Por dominio (CF): normal. Si 502, revisa rangos, sintaxis y firewall. Si CF también 403, comprueba orden de deny all y lista actualizada.

Método 3: certificado de origen de Cloudflare (el más seguro)

Los dos métodos anteriores ya son sólidos. Si exiges máxima seguridad, añade validación con certificado de origen: aunque filtre la IP, el acceso directo fallará por error de certificado.

Qué es el certificado de origen de Cloudflare

Es un certificado TLS firmado por Cloudflare solo para el tráfico entre CF y tu origen. Los navegadores no lo confían (solo CF); un atacante que pegue a la IP verá error de certificado.

Junto con la lista blanca es doble capa: la lista bloquea tráfico no-CF; el certificado asegura que solo CF establece la conexión cifrada.

Paso 1: generar el certificado de origen

En Cloudflare, elige el dominio → SSL/TLSOrigen.

  1. Crear certificado
  2. Dominio a proteger (puede ser comodín, p. ej. *.example.com)
  3. Validez máxima 15 años (certificado interno de CF, más cómodo largo)
  4. Crear

CF genera:

  • Certificado de origen: PEM
  • Clave privada

Guárdalos en el servidor:

sudo nano /etc/nginx/certs/cloudflare.crt
# Pegar certificado
sudo nano /etc/nginx/certs/cloudflare.key
# Pegar clave privada

Protege la clave:

sudo chmod 600 /etc/nginx/certs/cloudflare.key

Paso 2: configurar Nginx con el certificado

En el bloque HTTPS del sitio:

server {
    listen 443 ssl http2;
    server_name example.com;
    # Certificado de origen Cloudflare
    ssl_certificate /etc/nginx/certs/cloudflare.crt;
    ssl_certificate_key /etc/nginx/certs/cloudflare.key;
    # Lista blanca de IP
    include /etc/nginx/cloudflare-whitelist.conf;
    # Resto...
}

Para validación más estricta, certificado de cliente de CF:

ssl_client_certificate /etc/nginx/certs/cloudflare-client.crt;
ssl_verify_client on;

Prueba y recarga:

sudo nginx -t && sudo systemctl reload nginx

Nota: para la mayoría basta la lista blanca de IP; esto es para escenarios muy exigentes.

Probar la configuración y resolver problemas

Configurado no significa terminado: prueba antes de darlo por bueno.

Cómo probar

Método 1: tráfico no-CF a la IP de origen
Con 4G u otra red no-Cloudflare, abre http://123.45.67.89 (tu IP). Debe mostrar 403 Forbidden.

Método 2: curl
En tu PC (no en el servidor):

curl -I http://tu-ip-de-origen

Debe devolver 403 Forbidden.

Método 3: por dominio (proxy CF)
https://example.com debe cargar. Si también da 403, algo falló en la configuración.

Problemas habituales

Problema 1: 502 tras configurar
Causas posibles:

  • Rangos incompletos, falta algún bloque de CF
  • Error de sintaxis en Nginx
    Solución:
  1. sudo nginx -t
  2. Logs: sudo tail -f /var/log/nginx/error.log
  3. Confirma los 15 IPv4 y 7 IPv6

Problema 2: 403 también vía CF
Causas:

  • deny all; antes de las reglas allow
  • IP de retorno de CF no está en la lista (CF actualizó rangos)
    Solución:
  1. allow antes de deny all;
  2. Revisa https://www.cloudflare.com/ips/

Problema 3: importación en BT sin efecto
Causas:

  • Plugin desactivado
  • Reglas no guardadas o Nginx sin reiniciar
    Solución:
  1. Plugin activo (icono verde)
  2. Reinicia Nginx en BT
  3. Revisa logs del firewall BT

Problema 4: bypass por IPv6
Causa:

  • Solo lista blanca IPv4
    Solución:
  1. Añade rangos IPv6 de CF
  2. O desactiva IPv6 en el firewall si no lo necesitas

Otras recomendaciones de seguridad

La lista blanca es el primer paso; también conviene:

  • Cambiar puerto SSH: el 22 se escanea mucho; usa otro alto
  • Actualizar el sistema: parches a tiempo
  • Ocultar versión de Nginx: server_tokens off; en nginx.conf
  • Modo Under Attack de CF: ante ataques fuertes, activa el escudo de 5 segundos

Mantenimiento de la lista de IP de Cloudflare

La lista cambia: nuevos o ajustados rangos. Sin actualizar, IP nuevas de CF pueden quedar bloqueadas.

Por qué actualizar con regularidad

Cloudflare tiene cientos de centros de datos; los rangos evolucionan con la infraestructura. No es diario, pero cada pocos meses puede haber cambios.

Con lista antigua, IP nuevas de retorno pueden quedar fuera y fallar acceso o retorno en algunas regiones.

Actualización manual

Cada 2-3 meses visita https://www.cloudflare.com/ips/ y compara rangos nuevos.
Si hay cambios:

  1. Edita el archivo de lista blanca
  2. Añade rangos nuevos
  3. sudo nginx -t
  4. sudo systemctl reload nginx

Script de actualización automática (opcional)

Ejemplo en bash:

#!/bin/bash
# Actualización automática de lista blanca Cloudflare
CF_IPV4_URL="https://www.cloudflare.com/ips-v4"
CF_IPV6_URL="https://www.cloudflare.com/ips-v6"
NGINX_CONF="/etc/nginx/cloudflare-whitelist.conf"
BACKUP_CONF="/etc/nginx/cloudflare-whitelist.conf.bak"
# Backup
cp $NGINX_CONF $BACKUP_CONF
# Nueva configuración
echo "# Cloudflare IP Whitelist - Auto-generated on $(date)" > $NGINX_CONF
echo "" >> $NGINX_CONF
# IPv4
echo "# IPv4 ranges" >> $NGINX_CONF
curl -s $CF_IPV4_URL | sed 's/^/allow /' | sed 's/$/;/' >> $NGINX_CONF
echo "" >> $NGINX_CONF
# IPv6
echo "# IPv6 ranges" >> $NGINX_CONF
curl -s $CF_IPV6_URL | sed 's/^/allow /' | sed 's/$/;/' >> $NGINX_CONF
echo "" >> $NGINX_CONF
# Denegar resto
echo "# Deny all other IPs" >> $NGINX_CONF
echo "deny all;" >> $NGINX_CONF
# Probar
if nginx -t; then
    echo "Sintaxis correcta, recargando Nginx..."
    systemctl reload nginx
    echo "✓ Lista blanca Cloudflare actualizada"
else
    echo "✗ Error en configuración, restaurando backup..."
    cp $BACKUP_CONF $NGINX_CONF
    echo "Configuración restaurada; revisa el error"
fi

Guárdalo como /root/update-cf-whitelist.sh y dale permisos:

chmod +x /root/update-cf-whitelist.sh

Cron mensual:

crontab -e

Añade:

0 3 1 * * /root/update-cf-whitelist.sh >> /var/log/cf-whitelist-update.log 2>&1

El día 1 a las 3:00 actualiza y registra en /var/log/cf-whitelist-update.log.

Consejo: ejecuta el script a mano la primera vez antes del cron. Un bug en ejecución automática puede romper la configuración.

Conclusión

En resumen: para proteger el origen, la lista blanca de Cloudflare es imprescindible.

Tres métodos:

  • Panel BT: lo más simple, con clics; solo IPv4 en la UI.
  • Nginx puro: flexible, IPv6, archivo fácil de mantener; algo de Linux ayuda.
  • Certificado de origen: máxima seguridad, doble capa; para requisitos muy altos.

Tras configurar, prueba: 4G a la IP de origen → 403; por dominio → normal.

La lista de IP de Cloudflare cambia: revisa periódicamente o automatiza. No la dejes meses sin tocar; rangos nuevos con lista vieja pueden romper el acceso.

Si te sirvió, compártelo con otros que usen Cloudflare. Orígenes bien protegidos hacen más difícil el ataque directo.

Comprueba ya si tu IP de origen filtró: myssl.com u otro comprobador SSL del certificado. Si ya salió, configura la lista blanca como en esta guía; nunca es tarde para remediar.

FAQ

¿Por qué se filtra la IP de origen? ¿Cuáles son las vías habituales?
Vías habituales de filtración de IP de origen:

1) Sitios de consulta de certificados SSL (myssl.com, etc.) exponen la IP de origen:
• Tras poner el sitio detrás del CDN de Cloudflare, al comprobar el certificado SSL puede mostrarse la IP del servidor de origen

2) Registros DNS históricos cacheados por servicios de consulta:
• Algunos proveedores almacenan los datos de forma permanente
• Aunque ahora uses Cloudflare, los registros antiguos siguen revelando la IP de origen anterior

3) Subdominios o correo sin pasar por CDN:
• Un atacante puede hacer ping a un subdominio o revisar las cabeceras originales del correo y exponer la IP de origen

Tras la filtración, el atacante puede saltarse Cloudflare, enviar DDoS directo al origen, escanear puertos y buscar vulnerabilidades.
¿Dónde obtener la lista de IP de origen de Cloudflare? ¿Cómo mantenerla actualizada?
Cloudflare mantiene tres direcciones oficiales:
• Lista completa: https://www.cloudflare.com/ips/
• Lista IPv4: https://www.cloudflare.com/ips-v4
• Lista IPv6: https://www.cloudflare.com/ips-v6

Rangos actuales:
• IPv4: 15 bloques CIDR (unos 1,78 millones de IP)
• IPv6: 7 bloques

Recomendaciones de actualización:
• La lista cambia de vez en cuando
• Revisa la página oficial cada 2-3 meses por si hay rangos nuevos
• O usa un script automatizado (cron) para actualizar cada mes

Si no actualizas a tiempo, nuevas IP de CF pueden quedar bloqueadas por el firewall y provocar fallos de acceso en algunas regiones.
¿En qué se diferencian los tres métodos? ¿Cuál elegir?
1) Lista blanca en panel BT:
• Lo más simple, configuración con clics, ideal para principiantes
• Solo IPv4; IPv6 hay que configurarlo a mano

2) Configuración Nginx pura:
• Más flexible, soporta IPv6
• Archivo de configuración aparte, fácil de actualizar
• Varios sitios pueden compartirlo
• Para quien tenga algo de base en Linux

3) Validación con certificado de origen:
• Lo más seguro: doble protección (lista blanca + certificado)
• Aunque filtre la IP, el acceso directo fallará por error de certificado
• Para escenarios con requisitos de seguridad muy altos

Recomendación: para la mayoría, la lista blanca de IP basta; en entornos críticos añade el certificado de origen.
¿Cómo configurar la lista blanca en Nginx? ¿Cuáles son los pasos clave?
Pasos de configuración:

1) Crear el archivo de configuración:
• sudo nano /etc/nginx/cloudflare-whitelist.conf
• Añadir reglas allow para todos los rangos IPv4 e IPv6 de CF
• Al final, obligatorio: deny all para rechazar el resto
• Clave: deny all debe ir después de las reglas allow

2) Editar la configuración del sitio:
• /etc/nginx/sites-available/your-site.conf
• En el bloque server añadir: include /etc/nginx/cloudflare-whitelist.conf
• Tanto en HTTP como en HTTPS

3) Probar y recargar:
• Probar: sudo nginx -t para confirmar la sintaxis
• Recargar: sudo systemctl reload nginx

El archivo va aparte; para actualizar IP solo editas cloudflare-whitelist.conf.
¿Cómo verificar que funciona? ¿Cómo resolver problemas habituales?
Verificación:
1) Con datos móviles 4G (tráfico no-CF) accede directo a la IP de origen: debe verse 403 Forbidden
2) Por dominio (vía proxy CF) debe cargar con normalidad

Problemas habituales:

1) Error 502:
• Comprueba que los rangos estén completos (los 15 IPv4 y 7 IPv6)
• Sintaxis correcta (sudo nginx -t)
• Firewall activo

2) CF también recibe 403:
• deny all en el lugar correcto (después de allow)
• Lista de IP al día (https://www.cloudflare.com/ips/)

3) Bypass por IPv6:
• Añade los rangos IPv6 de CF a la lista blanca
• O desactiva IPv6 en el firewall
¿Cómo automatizar la actualización de la lista de IP de Cloudflare?
Puedes usar un script bash para obtener la lista más reciente y actualizar la configuración.

Flujo del script:
1) Respaldar la configuración actual
2) Obtener listas IPv4 e IPv6 desde las URLs oficiales de CF
3) Generar nuevo archivo (allow + deny all)
4) Probar sintaxis de Nginx; si es correcta, recargar; si no, restaurar el backup

Configuración:
• Guardar como /root/update-cf-whitelist.sh
• Permisos: chmod +x
• Cron (crontab -e) el día 1 de cada mes a las 3:00:
0 3 1 * * /root/update-cf-whitelist.sh >> /var/log/cf-whitelist-update.log 2>&1

Ejecuta el script a mano la primera vez antes de programar el cron.

10 min de lectura · Publicado el: 21 nov 2025 · Actualizado el: 21 ago 2026

Comentarios

Inicia sesión con GitHub para dejar un comentario

Easton BlogEaston Blog