Managing IP request rate limits in Discourse

Discourse implementa limiti di frequenza globali per IP per proteggere i siti da traffico eccessivo e abusi. Tuttavia, ci sono scenari legittimi in cui è necessario consentire l’elenco di IP specifici per bypassare questi limiti di frequenza. Questa guida spiega come configurare eccezioni per il rate limiting nelle installazioni self-hosted di Discourse.

Aggiunta di indirizzi IP all’elenco consentiti

Quando è necessario aumentare i limiti di frequenza globali per IP per IP o intervalli di IP specifici, è necessario modificare il file di configurazione del container (app.yml) aggiungendo la variabile d’ambiente DISCOURSE_MAX_REQS_PER_IP_EXCEPTIONS.

Attenzione: Ricorda che anche se la variabile dice “IP”, in realtà significa “bucket”, quindi potrebbe essere un IP, un utente, o qualcos’altro se un nuovo tipo di classificazione viene aggiunto da un plugin.

Aggiunta di un singolo indirizzo IP

Per aggiungere un singolo indirizzo IP al tuo elenco consentiti:

DISCOURSE_MAX_REQS_PER_IP_EXCEPTIONS: 192.168.1.100

Ciò esenterà l’indirizzo IP 192.168.1.100 dalle regole standard di rate limiting.

Aggiunta di più indirizzi IP o intervalli CIDR

Per più IP o intervalli di IP utilizzando la notazione CIDR, utilizzare il formato multilinea con la sintassi YAML >-:

DISCOURSE_MAX_REQS_PER_IP_EXCEPTIONS: >-
  10.0.0.0/24
  172.16.10.0/16
  192.168.1.50
  2001:db8:c0:ffee::/64

Questa configurazione esenta:

  • l’intera rete 10.0.0.0/24 (256 indirizzi IP)
  • l’intera rete 172.16.10.0/16 (65.536 indirizzi IP)
  • il singolo indirizzo IP 192.168.1.50
  • l’intera rete 2001:db8:c0:ffee::/64 (IPv6)

:warning: Assicurati una corretta formattazione YAML, in particolare quando utilizzi la sintassi multilinea con >-.

Ricostruzione

Dopo aver modificato la configurazione del container, dovrai ricostruire il container affinché le modifiche abbiano effetto:

cd /var/discourse
./launcher rebuild app

Considerazioni sulla sicurezza

Sii cauto quando aggiungi indirizzi IP all’elenco consentiti. Ogni IP o intervallo esentato bypassa la protezione integrata di Discourse contro abusi e traffico eccessivo.

Migliori pratiche:

  • Consenti l’elenco solo agli IP che hanno una legittima necessità aziendale (ad esempio, servizi di monitoraggio, integrazioni API, partner fidati).
  • Utilizza gli intervalli IP più specifici possibili anziché reti ampie.
  • Rivedi regolarmente il tuo elenco consentiti e rimuovi gli IP che non richiedono più un’esenzione.

Ricorda: un elenco consentiti eccessivamente permissivo può esporre il tuo sito ad abusi potenziali o scenari di negazione del servizio.

Risoluzione dei problemi

Se continui a riscontrare errori di rate limiting nonostante la configurazione delle eccezioni:

  1. verifica che vengano utilizzati gli indirizzi IP corretti nella tua configurazione.
  2. controlla che il container sia stato ricostruito correttamente dopo la modifica della configurazione.
  3. esamina i log di Discourse per messaggi di rate limiting relativi agli IP in questione.
  4. se stai utilizzando un proxy/load balancer, assicurati che stia inoltrando correttamente l’IP originale del client.
5 Mi Piace