Skip to Content

Flarum

L'integrazione ufficiale di ProxyTracer per Flarum. Questa estensione porta l'intelligence IP di livello enterprise nella tua community, rilevando automaticamente VPN, proxy, datacenter e nodi Tor noti, e dandoti la possibilità di impedire loro di registrarsi, accedere o visualizzare del tutto il tuo forum Flarum.

Il codice sorgente completo è disponibile su GitHub. L'estensione è distribuita tramite Packagist.

Caratteristiche

  • Controllo granulare che consente agli amministratori di imporre la convalida dell'IP durante la registrazione di nuovi utenti, l'autenticazione degli utenti esistenti o globalmente per tutti i visitatori del sito.
  • Il caching integrato che utilizza l'API nativa Laravel Cache di Flarum memorizza le valutazioni recenti degli indirizzi IP, riducendo drasticamente le chiamate API esterne e garantendo latenza zero.
  • In caso di timeout dell'API o errore di rete, l'estensione dà priorità all'accesso degli utenti (fail-open) per prevenire blocchi generalizzati. Questo comportamento può essere modificato nelle impostazioni.
  • Supporto integrato per whitelist di indirizzi IP esatti e subnet CIDR (es. 192.168.1.0/24).

Installazione

  1. Accedi al tuo server via SSH e naviga nella directory radice di Flarum (dove si trova il tuo composer.json):
    cd /var/www/flarum
  2. Installa l'estensione tramite Composer:
    composer require proxytracer/flarum-proxytracer
  3. Svuota la cache di Flarum per compilare i nuovi asset del frontend:
    php flarum cache:clear

Configurazione:

  1. Ottieni una chiave API standard dalla Dashboard di ProxyTracer.
  2. Accedi al tuo pannello di amministrazione Flarum: Admin → Features → ProxyTracer per aprire la finestra delle impostazioni.
  3. Inserisci la tua chiave API nel campo API Key.
  4. Scegli quali azioni proteggere: Block Signups, Block Logins o Block All Site Access.
  5. Aggiungi eventuali IP o intervalli CIDR attendibili alla IP Whitelist (uno per riga).
  6. (Opzionale) Regola i limiti di timeout dell'API e di scadenza della cache (Cache Expiry) in base alle esigenze specifiche di traffico del tuo server.
  7. (Opzionale) Personalizza il messaggio di blocco (Block Message) che appare agli utenti bloccati. Ad esempio, puoi aggiungere istruzioni per contattare l'amministrazione del sito nel caso in cui ritengano che il blocco non sia giustificato e non stiano accedendo tramite proxy o VPN.

Settings Screenshot

Configurazione di Rete: Cloudflare e Reverse Proxy

Affinché ProxyTracer funzioni in modo efficace, l'applicazione Flarum deve ricevere il vero indirizzo IP del client. Se la tua infrastruttura utilizza Cloudflare o un altro reverse proxy, Flarum potrebbe registrare per impostazione predefinita l'indirizzo IP del nodo proxy (come i server edge di Cloudflare), rendendo inaffidabile il rilevamento di ProxyTracer.

Segui le linee guida di configurazione sottostanti corrispondenti all'architettura del tuo server per garantire un inoltro IP accurato.

Integrazione Diretta con Cloudflare (Installazione Standard)

Se il tuo server Flarum si collega direttamente a Internet e utilizza Cloudflare esclusivamente per DNS e proxy edge, puoi utilizzare il bypass Cloudflare integrato nell'estensione.

Nelle impostazioni di ProxyTracer per Flarum, attiva semplicemente Extract IPs from Cloudflare Headers.

ProxyTracer estrarrà automaticamente il vero IP del client dall'header proprietario CF-Connecting-IP di Cloudflare. Nota: abilita questa impostazione solo se il tuo server è direttamente esposto a Cloudflare. Abilitare questa opzione su una configurazione senza Cloudflare potrebbe consentire a utenti malintenzionati di aggirare le restrizioni falsificando i propri header IP.

Architettura Proxy Multi-Livello (Cloudflare + Reverse Proxy Locale)

Questo si applica se la tua istanza Flarum è instradata attraverso un pannello di gestione server locale o un reverse proxy (es. Nginx Proxy Manager, CloudPanel, Traefik, Plesk) posizionato dietro Cloudflare. In un'architettura di reverse proxy a più livelli (o "doppio"), la semplice opzione non è sufficiente perché il traffico viene passato a Flarum dalla tua interfaccia di rete locale e non direttamente da Cloudflare.

Devi configurare il tuo reverse proxy locale per estrarre l'IP reale del client dall'header CF-Connecting-IP, ma solo per il traffico proveniente da indirizzi IP Cloudflare attendibili. Passare ciecamente questo header senza verificare l'origine consente a utenti malintenzionati di aggirare rate limit e ban falsificando il proprio indirizzo IP.

Esempio Nginx: Per prima cosa, definisci gli intervalli IP di Cloudflare come proxy attendibili nella configurazione del blocco server (all'esterno del blocco location). Definire staticamente questi IP a livello Nginx garantisce il massimo livello di velocità e sicurezza.
# IP IPv4 di Cloudflare, vedi [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; # IP IPv6 di Cloudflare 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;

Successivamente, individua la tua direttiva location /. Grazie alla configurazione sopra, Nginx risolverà ora in modo sicuro $remote_addr verso l'IP reale del client solo se la richiesta è effettivamente passata attraverso Cloudflare. Modifica i tuoi header di inoltro IP come segue:

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

Salva la configurazione e ricarica il servizio Nginx (systemctl reload nginx).

Accesso di Emergenza

💡
Bloccato fuori? Se blocchi accidentalmente il tuo indirizzo IP durante la configurazione di ProxyTracer (ad es. sei attualmente connesso a una VPN e hai abilitato "Block All"), puoi riottenere l'accesso disabilitando l'estensione direttamente via SSH:
cd /var/www/flarum php flarum extension:disable proxytracer-proxytracer php flarum cache:clear
(Se utilizzi Docker, esegui questi comandi all'interno del tuo container PHP). In alternativa, puoi disabilitarlo tramite il database: apri la tabella settings, individua la chiave proxytracer.block_all, cambia il suo valore in 0 ed esegui php flarum cache:clear.

Licenza

Questo software è rilasciato sotto licenza GNU Affero General Public License v3.0 (AGPLv3). Consulta il file LICENSE per i dettagli completi.

Ultimo aggiornamento il