Dans ce tutoriel, je vais vous expliquer comment avoir l’adresse IP réelle des visiteurs en utilisant les services CloudFlare et un serveur web Nginx.
Ce que je vais vous expliquer dans ce tutoriel est valable quand Nginx est utilisé comme serveur Web frontale ou en tant que reverse proxy.
Par défaut, quand on utilise CloudFlare en mode Proxy, l’adresse IP vue par le serveur Web est l’adresse du serveur CloudFlare qui a été utilisé et donc niveau des logs Nginx, on se retrouve avec les IPs des serveurs CloudFlare.
Cette situation est gênante quand :
- On exploite les logs pour générer des statistiques
- On utilise une solution de protection comme Crowdsec ou Fail2ban, car on bloque le serveur CloudFlare et non « l’attaquant ».
Récupérer l’adresse IP réelle du visiteur
Pour récupérer l’adresse IP du visiteur, nous allons modifier le fichier de configuration /etc/nginx/nginx.conf
.
Commencer par sauvegarder le fichier /etc/nginx/nginx.conf
:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak001
Maintenant on va créer dans le dossier /etc/nginx un fichier nommer CloudfFare qui contenir les paramètres :
Créer le fichier :
sudo touch /etc/nginx/cloudflare
Éditer le fichier :
sudo nano /etc/nginx/cloudflare
Coller le contenu ci-dessous, qui va permettre de modifier l’IP de CloudFlare par l’IP du visiteur :
Maintenant ouvrir le fichier /etc/nginx/nginx.conf
pour indiquer d’inclure le fichier cloudflare
.
sudo nano /etc/nginx/nginx.conf
Dans la section http{ ... }
ajouter :
# Cloudflare Real IP visitors
include /etc/nginx/cloudflare;
Vérifier la configuration de Nginx :
sudo nginx -t
S’il n’y a pas d’erreur redémarrer Nginx pour la prise en compte :
sudo systemctl restart nginx
Vérifier maintenant les logs (access), l’ip réel du visiteur doit être capturée.
Pour récupérer les adresses IP de Cloudflare, elles sont disponibles ici :
- IPv4 : https://www.cloudflare.com/ips-v4
- IPv6 : https://www.cloudflare.com/ips-v6