Configuración de mod_remoteip con Apache y Cloudflare

Actualizada:

Una de las cosas que nadie te cuenta cuando pones en marcha Cloudflare en tus dominios, es que al actuar como Proxy, dejas de ver las IP de tus visitantes en los logs de Apache y solo pasas a ver las IP de Cloudflare, por lo que se hace complicado gestionar bloqueos en el Firewall y otras muchas cosas. La dirección IP original del visitante aparece en un encabezado HTTP adjunto llamado CF-Connecting-IP.

Hasta hace unos años, Cloudflare te ofrecía la posibilidad de instalar un módulo de Apache llamado mod_cloudflare, pero actualmente ya no funciona (no es soportado de manera oficial) y tenemos que utilizar un módulo que suele ver activo por defecto en las instalaciones de Apache: mod_remoteip. Si usabas mod_cloudflare, tienes que desactivarlo.

Si tienes tu Dominio con el DNS en Cloudflare y el Proxy Status de tus registros A y AAA tiene una nube naranja, tienes que configurar lo que te cuento a continuación:

Dominio con DNS en Cloudflare y el proxy activo

Te voy a contar cómo lo puedes configurar en unos sencillos pasos para que funcione con Cloudflare y puedas ver de nuevo las IP reales de tus visitantes.

  • ¡Ojo! Muchos plugins de seguridad que podemos instalar en WordPress, como Wordfence o Patchstack, lo que hacen es consultar directamente la cabecera CF-Connecting-IP para conocer la IP real de tus visitantes. Comprueba su correcta configuración en tu instalación si usas esos complementos. Lo que yo te cuento, sirve para arreglar el tema en el ámbito del servidor.
  • ¡Ojo! Si tienes activo un Firewall en tu servidor, acuérdate de meter las IP de Cloudflare en una lista blanca para que no se produzcan bloqueos. Te puede interesar: Cómo evitar que CSF bloquee IPs de Cloudflare.

Todo esto que te voy a contar lo he probado en un servidor Rocky Linux 9 con una instalación LAMP. Sirve exactamente igual para Alma Linux o CentOS.

1.-Compruebas que el módulo mod_remoteip está activo en Apache

sudo httpd -M | grep remoteip

El resultado te tienes que dar algo así: remoteip_module (shared)

¿No está activo? Puedes activarlo de dos maneras diferentes.

Lo activas añadiendo lo siguiente:

#Editamos el archivo de configuración de Apache
sudo vi /etc/httpd/conf/httpd.conf

#Ponemos la siguiente linea
LoadModule remoteip_module modules/mod_remoteip.so

También puedes navegar a /ect/httpd/conf.modules.d y editar:

sudo vi /ect/httpd/conf.modules.d/00-base.conf

Deberías de comprobar que la línea LoadModule remoteip_module modules/mod_remoteip.so no está comentada. Si está comentada con #, lo quitas y guardas.

2.-Configurar mod_remoteip

Ahora que ya hemos revisado que está activo el módulo, solo tenemos que crear un archivo .conf en el directorio conf.d (verifica que no han cambiado las IP de Cloudflare en https://www.cloudflare.com/ips/):

Configurar mod_remoteip en apache en archivo /etc/httpd/conf.d/remoteip.conf
#Creamos el archivo
sudo vi /etc/httpd/conf.d/remoteip.conf

#Ponemos lo siguiente

# Configurar la cabecera que contiene la IP original del cliente proporcionada por Cloudflare (comprueba las IP en https://www.cloudflare.com/es-es/ips/ cada cierto tiempo)
RemoteIPHeader CF-Connecting-IP

# Definir los proxies de confianza (IPs de Cloudflare)
RemoteIPTrustedProxy 103.21.244.0/22
RemoteIPTrustedProxy 103.22.200.0/22
RemoteIPTrustedProxy 103.31.4.0/22
RemoteIPTrustedProxy 104.16.0.0/12
RemoteIPTrustedProxy 108.162.192.0/18
RemoteIPTrustedProxy 131.0.72.0/22
RemoteIPTrustedProxy 141.101.64.0/18
RemoteIPTrustedProxy 162.158.0.0/15
RemoteIPTrustedProxy 172.64.0.0/13
RemoteIPTrustedProxy 173.245.48.0/20
RemoteIPTrustedProxy 188.114.96.0/20
RemoteIPTrustedProxy 190.93.240.0/20
RemoteIPTrustedProxy 197.234.240.0/22
RemoteIPTrustedProxy 198.41.128.0/17
RemoteIPTrustedProxy 2400:cb00::/32
RemoteIPTrustedProxy 2405:8100::/32
RemoteIPTrustedProxy 2405:b500::/32
RemoteIPTrustedProxy 2606:4700::/32
RemoteIPTrustedProxy 2803:f800::/32
RemoteIPTrustedProxy 2c0f:f248::/32
RemoteIPTrustedProxy 2a06:98c0::/29

Guardamos y salimos del archivo.

¡Ojo! Si te fijas en las instrucciones de configuración que ofrece Cloudflare, también meten RemoteIPHeader CF-Connecting-IP en el archivo 000-default.conf (el archivo de configuración de apache2 en Debian, Ubuntu) además de en remoteip.conf. No hace falta poner esta configuración dos veces. Con que la pongas en el archivo remoteip.conf que hemos creado es suficiente. No tienes que meterlas en la configuración de Apache de cada uno de tus dominios. Mejor tenerlo todo configurado en un único archivo. Es más fácil de mantener en el futuro.

3.-Configurar el formato de los logs

El formato de los logs de Apache cambia un poco: Busca las líneas de LogFormat en httpd.conf y reemplaza %h con %a para que los logs reflejen la IP original del cliente:

Busca las líneas de LogFormat en httpd.conf y reemplaza %h con %a para que los logs reflejen la IP original del cliente
#editamos los logs
sudo vi /etc/httpd/conf/httpd.conf

#Buscas lo siguiente y lo cambias (ya he cambiado la LogFormat "%h %l %u %t \"%r\" %>s %b" por %a en el ejemplo inferior
 LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%a %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
        # You need to enable mod_logio.c to use %I and %O
        LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

4.-Comprueba que la configuración es correcta y reinicias Apache

sudo apachectl configtest #si todo es correcto saldra: Syntax OK
sudo systemctl restart httpd

Puedes comprobar como han quedado los logs con el cambio después de la instalación de mod_remoteip en:

sudo tail -f /var/log/httpd/access_log

O donde tengas tus logs de acceso a Apache. Verás que aparecen las IP reales de tus visitantes y no las de Cloudflare.


Descubre más desde algoentremanos.com

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Foto del autor

Ivan Benito

Apasionado de la lectura y los viajes, experto en tecnología e informática y fan de la privacidad online. Desde el año 2007 me he dedicado al SEO, a escribir y a crear páginas web con WordPress sobre todo tipo de temáticas. Si tienes alguna duda y necesitas ayuda... ¡Pregúntame!

Si tienes preguntas, quieres que hagamos una review de una app, programa o producto, simplemente mándanos un e-mail mediante nuestro formulario de contacto. Te contestaremos en el menor tiempo posible. ¡Muchas gracias y salU2! Algoentremanos realiza reviews de manera profesional y en muchas ocasiones recibimos compensación de las compañías cuyos productos revisamos. Probamos cada producto a fondo y otorgamos altas calificaciones solo a los mejores. La propiedad de Algoentremanos.com es independiente y las opiniones expresadas aquí son solo nuestras. Algunos enlaces del artículo son afiliados: pueden generar un beneficio a algoentremanos.com. Saber más.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.