Skip to Content

Flarum

L'intégration officielle de ProxyTracer pour Flarum. Cette extension apporte une intelligence IP de niveau entreprise à votre communauté, détectant automatiquement les VPN, proxys, datacenters et nœuds Tor connus, et vous offrant la possibilité de les empêcher de s'inscrire, de se connecter ou de consulter entièrement votre forum Flarum.

Le code source complet est disponible sur GitHub. L'extension est distribuée via Packagist.

Fonctionnalités

  • Contrôle granulaire permettant aux administrateurs d'imposer la validation IP lors des inscriptions de nouveaux utilisateurs, de l'authentification des utilisateurs existants, ou globalement pour tous les visiteurs du site.
  • La mise en cache intégrée utilisant l'API Cache Laravel native de Flarum stocke les évaluations récentes des adresses IP, réduisant considérablement les appels API externes et garantissant une latence nulle.
  • En cas de timeout de l'API ou de défaillance réseau, l'extension privilégie l'accès des utilisateurs (fail-open) pour éviter les blocages massifs. Ce comportement peut être modifié dans les paramètres.
  • Prise en charge intégrée de la liste blanche par IP exacte et sous-réseau CIDR (ex. : 192.168.1.0/24).

Installation

  1. Accédez à votre serveur via SSH et naviguez vers le répertoire racine de Flarum (où se trouve votre composer.json) :
    cd /var/www/flarum
  2. Installez l'extension via Composer :
    composer require proxytracer/flarum-proxytracer
  3. Videz le cache de votre Flarum pour compiler les nouveaux assets frontend :
    php flarum cache:clear

Configuration

  1. Procurez-vous une clé API standard depuis le Tableau de bord ProxyTracer.
  2. Naviguez vers votre panneau d'administration Flarum : Admin → Features → ProxyTracer pour ouvrir la fenêtre de paramètres.
  3. Saisissez votre clé API dans le champ API Key.
  4. Activez les paramètres de protection en basculant Block Signups, Block Logins et/ou Block All Site Access.
  5. Ajoutez toutes les IP de confiance ou plages CIDR à la liste IP Whitelist (une par ligne).
  6. (Optionnel) Ajustez les limites de timeout de l'API et d'expiration du cache en fonction des besoins spécifiques de trafic de votre serveur.
  7. (Optionnel) Personnalisez le message de blocage qui apparaît aux utilisateurs bloqués. Par exemple, vous pouvez ajouter des instructions pour contacter l'administration du site au cas où ils estiment que le blocage n'est pas justifié et qu'ils n'accèdent pas au site via un proxy ou VPN.

Settings Screenshot

Configuration réseau : Cloudflare et reverse proxys

Pour que ProxyTracer fonctionne efficacement, l'application Flarum doit recevoir la véritable adresse IP du client. Si votre infrastructure utilise Cloudflare ou un autre reverse proxy, Flarum peut par défaut enregistrer l'adresse IP du nœud proxy (comme les serveurs edge de Cloudflare), rendant ainsi le travail de ProxyTracer peu fiable.

Veuillez suivre les directives de configuration ci-dessous correspondant à l'architecture de votre serveur pour garantir un transfert précis des adresses IP.

Directement derrière Cloudflare

Si votre serveur Flarum se connecte directement à Internet et utilise Cloudflare exclusivement pour le DNS et le proxying edge, vous pouvez utiliser le contournement Cloudflare intégré de l'extension.

Dans les paramètres ProxyTracer de Flarum, activez simplement Extract IPs from Cloudflare Headers.

ProxyTracer extraira automatiquement la véritable IP du client à partir de l'en-tête propriétaire CF-Connecting-IP de Cloudflare. Note : N'activez ce paramètre que si votre serveur fait directement face à Cloudflare. Activer ceci sur une configuration non-Cloudflare pourrait permettre aux utilisateurs malveillants de contourner les restrictions en usurpant leurs en-têtes IP.

Architecture de proxy multi-couches (Cloudflare + reverse proxy local)

Ceci s'applique si votre instance Flarum est routée via un panneau de gestion de serveur local ou un reverse proxy (par ex. Nginx Proxy Manager, CloudPanel, Traefik, Plesk) qui se trouve derrière Cloudflare. Dans une architecture reverse proxy multi-couches (ou 'double'), la simple bascule n'est pas suffisante car le trafic est remis à Flarum par votre interface réseau locale, et non directement par Cloudflare.

Vous devez configurer votre reverse proxy local pour extraire la véritable IP cliente depuis l'en-tête CF-Connecting-IP, mais uniquement pour le trafic provenant d'adresses IP Cloudflare approuvées. Transmettre cet en-tête aveuglément sans vérifier la source permet aux utilisateurs malveillants de contourner les limites en usurpant leur adresse IP.

Exemple Nginx: Tout d'abord, définissez les plages IP de Cloudflare comme des proxys approuvés dans la configuration de votre bloc serveur (en dehors de votre bloc location). Le codage en dur de ces IP au niveau de Nginx offre le plus haut niveau absolu de vitesse et de sécurité.
# IPv4 Cloudflare IPs, see [https://www.cloudflare.com/ips/](https://www.cloudflare.com/ips/) set_real_ip_from 173.245.48.0/20; 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 141.101.64.0/18; set_real_ip_from 108.162.192.0/18; set_real_ip_from 190.93.240.0/20; set_real_ip_from 188.114.96.0/20; set_real_ip_from 197.234.240.0/22; set_real_ip_from 198.41.128.0/17; set_real_ip_from 162.158.0.0/15; set_real_ip_from 104.16.0.0/13; set_real_ip_from 104.24.0.0/14; set_real_ip_from 172.64.0.0/13; set_real_ip_from 131.0.72.0/22; # IPv6 Cloudflare IPs set_real_ip_from 2405:b500::/32; set_real_ip_from 2405:8100::/32; set_real_ip_from 2803:f800::/32; set_real_ip_from 2c0f:f248::/32; set_real_ip_from 2a06:98c0::/29; real_ip_header CF-Connecting-IP;

Ensuite, localisez votre directive location /. Grâce à la configuration ci-dessus, Nginx résoudra désormais en toute sécurité $remote_addr à la véritable IP cliente uniquement si la requête est réellement passée par Cloudflare. Modifiez vos en-têtes de transfert IP comme suit :

location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ... }

Enregistrez la configuration et rechargez votre service Nginx (systemctl reload nginx).

Accès d'urgence

💡
Verrouillé à l'extérieur? Si vous bloquez accidentellement votre propre adresse IP lors de la configuration de ProxyTracer (par exemple, vous êtes actuellement connecté à un VPN et avez activé "Tout bloquer"), vous pouvez retrouver l'accès en désactivant l'extension directement via SSH :
cd /var/www/flarum php flarum extension:disable proxytracer-proxytracer php flarum cache:clear
(Si vous utilisez Docker, exécutez ces commandes à l'intérieur de votre conteneur PHP). Alternativement, vous pouvez le désactiver via la base de données : ouvrez votre table settings, localisez la clé proxytracer.block_all, changez sa valeur à 0, et exécutez php flarum cache:clear.

Licence

Ce logiciel est sous licence GNU Affero General Public License v3.0 (AGPLv3). Consultez le fichier LICENSE pour plus de détails.

Last updated on