Cloudflare et logs - Afficher vraie IP

Si vous utilisez CloudFlare les adresses IP de votre serveur ainsi que celles de vos utilisateurs seront masquées dans les logs. Cependant Cloudflare inclut l’adresse IP d’origine des visiteurs dans les en-têtes X-Forwarded-For et CF-Connecting-IP et ces dernières peuvent restaurer l’IP d’origine des visiteurs ou les inclure dans les logs avec l’utilisation du mod mod_cloudflare.

Configuration NGINX

Module pour obtenir l’IP des en-têtes

Le module ngx_http_realip_module récupère l’adresse IP et le port envoyé·es dans l’entête HTTP. Pour vérifier s’il est installé, il suffit de lancer la commande nginx -v. Le résultat n’est pas facile à lire mais vous devriez trouver une ligne correspondant à --with-http_realip_module

# nginx -V
...
--with-http_realip_module

Utilisation

Directives :

Syntax: 	set_real_ip_from address | CIDR | unix:;
Default: —
Context: http, server, location

Configuration

Dans le fichier /etc/nginx/nginx.conf, il suffit de rajouter dans le bloc http{} la liste des adresses/plages IP sur lesquelles ont souhaite récupérer les Headers afin de récuperer les vraies adresses IP ainsi que l’un des deux en-tête suivant real_ip_header CF-Connecting-IP ou real_ip_header X-Forwarded-For.

La liste des préfixes IP doit être vérifié régulièrement car elle est susceptible de changer : https://www.cloudflare.com/ips/. Et enfin pour inclure l’adresse IP d’origine des visiteurs dans les logs, il faudra ajouter les variables $http_cf_connecting_ip et $http_x_forwarded_for dans la directive log_format.

# ----------------------------------------------------------
# Afficher la vraie adresse IP depuis les sources souvantes
# ----------------------------------------------------------
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;

real_ip_header CF-Connecting-IP;
#real_ip_header X-Forwarded-For;

Configuration Apache

@TODO
https://support.cloudflare.com/hc/fr-fr/articles/360029696071-Restaurer-l-adresse-IP-d-origine-des-visiteurs-Option-2-Installer-mod-remoteip-avec-Apache

Documentation

https://support.cloudflare.com/hc/fr-fr/articles/200170786-Restaurer-l-adresse-IP-d-origine-du-visiteur-Enregistrer-les-adresses-IP-des-visiteurs-avec-mod-cloudflare-
https://danielmiessler.com/blog/getting-real-ip-addresses-using-cloudflare-nginx-and-varnish/
https://www.cloudflare.com/ips/
http://nginx.org/en/docs/http/ngx_http_realip_module.html
https://docs.nginx.com/nginx/admin-guide/monitoring/logging/
https://www.cyberciti.biz/faq/linux-unix-nginx-access-file-log-real-ip-address-of-visitor/

> Partager <