Manuel Roccon

ICT & Cyber Security Specialist

Plesk e CloudFlare – IP Reale, Mod Security e Fail2Ban

Cos’è Cloudflare ?

Cloudflare è un servizio che permette di ottimizzare l’efficienza e la sicurezza di un sito Web.

È un reverse proxy, il che significa che una volta che il suo sito inizia a utilizzare CloudFlare, il traffico che riceve viene incanalato dalla rete di CloudFlare non facendo apparire tre cui IP pubblico del vostro sito o applicazione, utilizzato molte volte per sferrare attacchi.

Cloudflare fornisce un piano gratuito con le seguenti funzioni:

  • messa in cache del contenuto statico di un sito: il vostro server farà uscire meno traffico quindi sarà meno soggetto a congestionamenti
  • minificazione del codice HTML, CSS e Javascript, in questo modo il visitatore impiegherà meno tempo a recuperare il contenuto “compresso”
  • protezione anti-DDoS di base e filtraggio traffico: il visitatore non saprà mail IP del vostro server, hacker o bot che volessero scansione il vostro IP alla ricerca di porte aperte, non farà altro che effettuarlo sui sistemi di cloudflare, inoltre verranno limitati e bloccati gli attacchi DDOS.

Inoltre cloudflare ha numerosi servizi aggiuntivi premium che aumentano la sicurezza e la velocità del sito, è necessario però sottoscrivere un piano:

https://www.cloudflare.com/plans/

La configurazione è molto semplice. Occorre creare un nuovo account, aggiungere il dominio da proteggere e cambiare i dns dal vostro provider pubblico con quelli indicati in fase di configrazione.

Dopo un piccolo periodo di aggiornamento, CloudFlare gestirà i vostri dns e applicherà la protezione ai vostri siti web.

Attenzione: i siti protetti effettivamente da Cloud Flare e sottoposti a reverse proxy sono quelli impostati come “PROXY” sulla configurazione (gli altri saranno gestiti con il vostro IP reale), inoltre sono disponibili solo alcune porte che potete usare per far visualizzare contenuto, esclusivamente con protocollo http/https.

https://support.cloudflare.com/hc/en-us/articles/200169156-Identifying-network-ports-compatible-with-Cloudflare-s-proxy

Log…

Ora sorge un problema, dato che il reverse proxy trasferisce tutto il traffico http/https al vostro IP reale, i server web non vedranno “nativamente” il vero IP del visitatore, cioè chi naviga il vostro sito, ma gli IP di CloudFlare.

Questo renderà impossibile ai vostri server web di identificare chi visita le pagine ed eseguire statistiche.

Ora CloudFlare ha messo a disposizione una guida per configurare il vostro server web per far riconoscere i log:

https://support.cloudflare.com/hc/en-us/articles/200170786-Restoring-original-visitor-IPs-Logging-visitor-IP-addresses-with-mod-cloudflare-

Per quanto riguarda Ples, la cosa è un pò piu complessa, essendo che utilizza sia Nginx che Apache, utilizzabili assieme o separatamente (solo Nginx), per elaborare il vostro contenuto Web.

Purtroppo non ci sono delle guide ufficiali per Plesk, e in particolare in Obsidian è stato rimossa l’apposita estensione.

Come visibile Plesk riconoscerà gli IP di CloudFlare sia per Apache che Nginx.

Per ripristinare il funzionamento, in questo caso è necessario per ogni dominio andare in:

Plesk Panel >> Domain >> Apache & nginx e aggiungere queste direttive nella sezione NGINX:

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 199.27.128.0/21;
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;

# use any of the following two
real_ip_header CF-Connecting-IP;
#real_ip_header X-Forwarded-For;

A questo punto sia NGINX che APACHE riconosceranno correttamente ip del visitatore (Nginx passerà l’IP corretto ad Apache qualora voleste usarli assieme).

Un altra possibilità è inserire questa direttiva nelle configurazioni globali di tutti i siti (tramite SSH) che vi evita di inserire le direttive in ciascun dominio, però dovete chiaramente usare CloudFlare in tutti i domini.

Per fare ciò create un file con il nome cloudflare.conf in /etc/nginx/conf.d e inserite le direttive indicate sopra.

Dato che gli IP di CloudFlare potrebbero cambiare, è necessario verificare ulteriori modifiche al link sopra indicato.

Altri aspetti da considerare: ModSecurity e Fail2ban

Come già discusso nei precedenti articoli, questi 2 componenti, ModSecurity (Web Application Firewall che blocca le richieste http/https anomale) e Fail2Ban (applicazione che blocca gli IP che generano richieste anomale) utilizzano rispettivamente i log di apache/nginx e IP reale passato nella richiesta per contrastare attacchi web.

Senza queste configurazioni smetterebbero di funzionare correttamente creando non pochi problemi, in quanto riconoscerebbero unicamente IP proveniente da CloudFlare andando a bloccarle totalmente il traffico e quindi la navigazione per tutti.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.