Cuando te sientes detrás de Cloudflare, debes solo Permitir el tráfico procedente de los rangos de IP de Cloudflare en los puertos 80 y 443. Cloudflare actualiza periódicamente estos rangos, por lo que las reglas de UFW deben actualizarse automáticamente. El script de cloudflare-ufw, de Paul Reed, hace precisamente eso.
1. Descarga el script y hazlo ejecutable
bashsudo wget -O /usr/local/bin/cloudflare-ufw.sh \
https://raw.githubusercontent.com/Paul-Reed/cloudflare-ufw/refs/heads/master/cloudflare-ufw.sh
sudo chmod +x /usr/local/bin/cloudflare-ufw.sh
2. Revisar las normas actuales de la UFW (antes de los cambios)
bashsudo ufw status verbose
Probablemente verás algo como:
textoAcción De
-- ------ ----
22/tcp PERMITIR Desde cualquier lugar
80/tcp PERMITIR Desde cualquier lugar
443 PERMITIR Desde cualquier lugar
...
3. Eliminar las reglas 80/443 excesivamente permisivas
Estas normas permiten actualmente cualquiera Direcciones IP que acceden a los puertos de tu web. Las sustituiremos por reglas exclusivas de Cloudflare.
bashsudo ufw delete allow 80/tcp
sudo ufw delete allow 443/tcp
Si UFW solicita una confirmación, escribe y y pulsa Intro.
Comprueba el estado de nuevo:
bashsudo ufw status verbose
Ya no deberías ver 80/tcp o 443 con PERMITIR de En cualquier lugar.
4. Ejecuta el script Cloudflare‑UFW
bashsudo /usr/local/bin/cloudflare-ufw.sh
Qué hace el script:
- Recupera los rangos IPv4 e IPv6 más recientes de Cloudflare desde
https://www.cloudflare.com/ips-v4y.../ips-v6. - Elimina cualquier regla de UFW existente para los puertos 80 y 443 que permita
En cualquier lugar. - Añade nuevo
PERMITIRnormas solo para cada rango de direcciones IP Cloudflare en los puertos 80 (HTTP) y 443 (HTTPS). - Opcionalmente, se reinicia UFW para que las nuevas reglas surtan efecto de inmediato.
Una vez finalizado, comprueba lo siguiente:
bashsudo ufw status verbose
Ahora deberías ver varias líneas como estas:
textoAcción De
-- ------ ----
80/tcp ALLOW 173.245.48.0/20
80/tcp ALLOW 103.21.244.0/22
...
443 PERMITIR 173.245.48.0/20
443 PERMITIR 103.21.244.0/22
...
El resto de direcciones IP tienen el acceso denegado de forma implícita a los puertos 80 y 443.
5. Automatizar las actualizaciones diarias con cron
Cloudflare puede modificar sus rangos de IP en cualquier momento. Para mantener tu cortafuegos actualizado, programa la ejecución diaria del script (por ejemplo, a las 03:00).
Edita el archivo crontab de root:
bashsudo crontab -e
Si se te solicita, elige tu editor preferido (por ejemplo, nano).
Añade la siguiente línea al final:
text0 3 * * * /usr/local/bin/cloudflare-ufw.sh >> /var/log/cloudflare-ufw.log 2>&1
Esto hace lo siguiente:
- Ejecuta el script todos los días a las 03:00, hora del servidor.
- Añade la salida y los errores a
/var/log/cloudflare-ufw.logpara la auditoría.
Guarda y sal del editor.
6. Comprueba la tarea programada
Muestra el crontab de root para comprobarlo:
bashsudo crontab -l
Deberías ver la nueva línea.
Si lo prefieres, ejecuta el proceso de inmediato y comprueba el registro:
bashsudo /usr/local/bin/cloudflare-ufw.sh
sudo tail -n 20 /var/log/cloudflare-ufw.log
7. Mantenimiento continuo
Para actualizar manualmente las reglas en cualquier momento:
bashsudo /usr/local/bin/cloudflare-ufw.sh
Para consultar el registro:
bashsudo less /var/log/cloudflare-ufw.log
Si alguna vez necesitas volver a la configuración “permitir en cualquier lugar” (no recomendado en entornos de producción):
bashsudo ufw delete allow from any to any port 80 proto tcp sudo ufw delete allow from any to any port 443 proto tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp
Con esta configuración, tu cortafuegos UFW solo aceptará tráfico HTTP/HTTPS procedente de los rangos de IP actuales de Cloudflare, lo que reducirá drásticamente la superficie de ataque y garantizará que tus sitios web sigan siendo accesibles a través de Cloudflare.
Deja una respuesta