Una de las cosas que tienes que tener en cuenta cuando conectas tu dominio a Cloudflare y tienes instalado un Firewall en tu servidor, por ejemplo CSF, es que este firewall puede empezar a bloquear las conexiones de Cloudflare como un loco. Y es algo que podemos evitar con cierta facilidad configurando listas blancas en el firewall para que se ignoren las IP de Cloudflare. Te voy a contar cómo hacerlo.
En primer lugar, te cuento que tengo instalado el firewall CSF en un servidor Rocky Linux 9 junto con un sistema LAMP. Esto es importante por lo que te voy a contar a continuación.
¿Qué pasa si activas Cloudflare en tu servidor VPS y no tienes configurado mod_remoteip? Pues que no vas a ver las IP de tus visitantes, al pasar por el proxy de Cloudflare, solo las direcciones IP de este servicio online… y eso puede llevar a que te pongas a bloquear como un loco sus direcciones. Así que, lo primero que tendrías que hacer, es instalar mod_remoteip en tu servidor para que tu sistema reconozca esas direcciones sin problema y el firewall se ponga a bloquear las IP correctas. Después, tienes que hacer lo siguiente.
- Te puede interesar: Cómo bloquear bots, SPAM y tráfico malicioso con el firewall CSF y LFD
Añadimos las IP de Cloudflare al Firewall CSF
Tienes que consultar las IP de Cloudflare. Ya te adelanto que no cambian mucho. Puede que cada uno o dos años, quiten o pongan alguna. Te lo comento, porque cada cierto tiempo deberás revisar que tienes todas las IP de Cloudflare bien configuradas en CSF.
En junio de 2024, son las siguientes (IPv4 e IPv6):
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
2400:cb00::/32
2606:4700::/32
2803:f800::/32
2405:b500::/32
2405:8100::/32
2a06:98c0::/29
2c0f:f248::/32
Cuando tienes este listado, te vas a CSF y tienes que meterlo en dos archivos. Esa es la clave. No solo en un archivo… ¡En DOS!
Primero en /etc/csf/csf.allow (puedes hacerlo también mediante la GUI):
###############################################################################
# Copyright 2006-2018, Way to the Web Limited
# URL: http://www.configserver.com
# Email: [email protected]
###############################################################################
# The following IP addresses will be allowed through iptables.
# One IP address per line.
# CIDR addressing allowed with a quaded IP (e.g. 192.168.254.0/24).
# Only list IP addresses, not domain names (they will be ignored)
#
# Advanced port+ip filtering allowed with the following format
# tcp/udp|in/out|s/d=port|s/d=ip
# See readme.txt for more information
#
# Note: IP addressess listed in this file will NOT be ignored by lfd, so they
# can still be blocked. If you do not want lfd to block an IP address you must
# add it to csf.ignore
#Cloudflare
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
2400:cb00::/32
2606:4700::/32
2803:f800::/32
2405:b500::/32
2405:8100::/32
2a06:98c0::/29
2c0f:f248::/32
Con esto consigues que el firewall CSF permita las aciones de las IP de Cloudflare. Básicamente, evitas que las bloquee. Guarda el archivo.
El problema es que muchas guías online, solo te comentan este paso. Y te quedas corto para evitar problemas como los famosos errores de Cloudflare 520 y 522, que entre otras razones, suelen aparecer porque un firewall está evitando que las conexiones se realicen correctamente entre tu web y este proxy.
CSF tiene un complemento que se llama LFD: lfd (Login Failure Daemon) es un componente importante de CSF (ConfigServer Security & Firewall). Se encarga de monitorear los registros de tu servidor para detectar intentos fallidos de inicio de sesión y otros patrones. Cuando lfd detecta un comportamiento que parece un ataque, como múltiples intentos fallidos de inicio de sesión, puede tomar acciones como bloquear la dirección IP del atacante. Y puede bloquear a Cloudflare porque este realizando muchas conexiones simultáneas (dependerá mucho de tu configuración).
¿Qué pasa? Que hay que meter las IP de Cloudflare en otro archivo relacionado con LFD: /etc/csf/csf.ignore:
###############################################################################
# Copyright 2006-2018, Way to the Web Limited
# URL: http://www.configserver.com
# Email: [email protected]
###############################################################################
# The following IP addresses will be ignored by all lfd checks
# One IP address per line
# CIDR addressing allowed with a quaded IP (e.g. 192.168.254.0/24)
# Only list IP addresses, not domain names (they will be ignored)
#
#Cloudflare
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
2400:cb00::/32
2606:4700::/32
2803:f800::/32
2405:b500::/32
2405:8100::/32
2a06:98c0::/29
2c0f:f248::/32
Al meter estas IP en este archivo, conseguimos que las direcciones IP sean ignoradas por todos los controles de lfd. Guarda el archivo.
Ahora ya lo tenemos configurado correctamente CSF y LFD para llevarse bien con Cloudflare: evitarás muchos errores de conectividad.
Reinicia CSF y LFD con:
sudo csf -ra
- ¡Oye! ¿Y qué pasa con la configuración de CSF que está pensada expresamente para Cloudflare? Efectivamente, hay un apartado en CF_ENABLE que está con un valor igual cero (desactivada por defecto). Pero esto sirve para otra cosa: para comunicar CSF con Cloudflare: Cloudflare proporciona una función de firewall y pueden añadir reglas para bloquear, desafiar o incluir en la lista blanca de direcciones IP. Usando la API de Cloudflare, esta función de CSF añade y elimina las IP de ese firewall. Puedes activarlo o no. No es imprescindible. Es interesante activarla si tienes instalado en tu servidor el WAF mod_security.