Come proteggere un sito con un WAF

Cos'è un WAF (Web Application Firewall)
Un Web Application Firewall (WAF) è un sistema di sicurezza che filtra, monitora e blocca il traffico HTTP malevolo diretto alla tua applicazione web. A differenza di un classico firewall di rete che opera a livello di indirizzo IP e porta, un WAF comprende il protocollo HTTP e può analizzare il contenuto delle richieste - parametri dell'URL, dati POST, cookie, header HTTP e il corpo della richiesta. Questo gli permette di rilevare e bloccare attacchi che passerebbero attraverso un firewall classico.
Immagina un WAF come il personale di sicurezza all'ingresso di un ristorante che controlla ogni ospite. Un firewall classico verifica soltanto se l'ospite ha un invito (IP e porta corretti). Il WAF controlla invece se l'ospite porta con sé armi, documenti falsi o cattive intenzioni - analizza il comportamento, non solo l'identità. In un mondo in cui ogni giorno si verificano circa 2.800 attacchi informatici, un WAF è un livello di protezione fondamentale per ogni sito web.
Come funziona un WAF
Un WAF si colloca tra l'utente e il server web e analizza ogni richiesta HTTP prima che raggiunga la tua applicazione. Le decisioni vengono prese in base a regole e algoritmi predefiniti.
Modelli di rilevamento
Un WAF utilizza due modelli principali per il rilevamento degli attacchi. Il modello di sicurezza negativo (blacklisting) blocca le richieste che contengono pattern malevoli noti - stringhe di SQL injection, payload XSS, sequenze di path traversal e così via. È l'approccio più diffuso perché è più semplice da implementare, ma non riesce a rilevare attacchi nuovi e sconosciuti (zero-day). Il modello di sicurezza positivo (whitelisting) definisce ciò che è consentito e blocca tutto il resto. Questo modello è più sicuro ma richiede una configurazione dettagliata per ogni applicazione, perché bisogna definire ogni parametro, URL e formato di dati legittimo.
Da cosa protegge il WAF
Il WAF protegge dagli attacchi web più comuni definiti nella lista OWASP Top 10: SQL Injection (iniezione di codice SQL tramite moduli e parametri URL per accedere o modificare il database), Cross-Site Scripting - XSS (iniezione di codice JavaScript malevolo che viene eseguito nei browser di altri utenti), Cross-Site Request Forgery - CSRF (costringere un utente autenticato a compiere un'azione indesiderata), Local/Remote File Inclusion (caricamento di file malevoli tramite il meccanismo include di PHP), Path Traversal (accesso a file al di fuori della web root usando sequenze ../), Command Injection (esecuzione di comandi di sistema tramite un'applicazione web) e attacchi brute force sui moduli di login.
Azioni che il WAF può intraprendere
Quando il WAF rileva una richiesta sospetta, può intraprendere diverse azioni: bloccare la richiesta e restituire un errore 403 Forbidden, consentire la richiesta ma registrarla per un'analisi successiva (modalità monitoraggio), avviare un controllo CAPTCHA per determinare se l'utente è un essere umano o un bot, applicare un rate limit alle richieste provenienti da un determinato indirizzo IP, oppure bloccare temporaneamente un indirizzo IP che invia molte richieste malevole. I moderni sistemi WAF combinano queste azioni in base alla gravità della minaccia.
Tipologie di WAF
Le soluzioni WAF si differenziano per il punto in cui vengono implementate e per l'architettura.
WAF cloud-based
Un WAF cloud viene implementato modificando i record DNS - il traffico viene instradato attraverso un provider cloud che filtra le richieste malevole prima che raggiungano il tuo server. Esempi: Cloudflare WAF, Sucuri, AWS WAF, Akamai. Pro: implementazione semplice (nessuna modifica lato server richiesta), scalabilità (l'infrastruttura cloud assorbe gli attacchi DDoS), aggiornamento automatico delle regole e vantaggi della CDN (caricamento più veloce del sito). Contro: dipendenza da terze parti, potenziale latenza (un hop aggiuntivo) e costi mensili.
WAF host-based
Un WAF host-based viene installato direttamente sul server web come modulo o applicazione. L'esempio più noto è ModSecurity, che si integra con i server web Apache, Nginx e LiteSpeed. Pro: pieno controllo sulla configurazione, nessun hop di rete aggiuntivo, accesso a log dettagliati sul server e nessun costo mensile per il servizio cloud. Contro: richiede conoscenze tecniche per la configurazione e la manutenzione, consuma risorse del server per l'analisi delle richieste e l'aggiornamento delle regole è una tua responsabilità.
Approccio ibrido
La protezione migliore è una combinazione di WAF cloud e host-based. Un WAF cloud (Cloudflare) filtra gli attacchi volumetrici e le minacce note prima che raggiungano il server, mentre un WAF host-based (ModSecurity) offre un'ispezione approfondita delle richieste che superano il livello cloud. Questa strategia di difesa in profondità garantisce che, anche se un livello lascia passare un attacco, l'altro livello lo intercetta.
Cloudflare WAF - configurazione
Cloudflare è il WAF cloud più diffuso per i siti piccoli e medi grazie al suo piano gratuito che include una protezione di base e ai piani a pagamento accessibili con funzionalità WAF avanzate.
Configurazione di base
Per utilizzare Cloudflare WAF devi creare un account Cloudflare, aggiungere il tuo dominio e cambiare i nameserver con quelli di Cloudflare. Dopo la propagazione DNS (di solito 24-48 ore), tutto il traffico verso il tuo sito passa attraverso la rete Cloudflare. Il piano gratuito offre protezione DDoS, un certificato di crittografia gratuito, CDN e una protezione di base dai bot. Le regole WAF sono disponibili a partire dal piano Pro (20$/mese).
Managed Rules
Le Managed Rules di Cloudflare sono regole preconfigurate che proteggono dalle vulnerabilità note. Il Cloudflare Managed Ruleset copre gli attacchi della OWASP Top 10, il Cloudflare WordPress Ruleset è progettato specificamente per le vulnerabilità di WordPress e il Cloudflare Leaked Credentials Detection verifica se gli utenti stanno usando password compromesse. Queste regole vengono aggiornate automaticamente quando vengono scoperte nuove minacce.
Custom Rules
Oltre alle regole gestite, puoi creare regole WAF personalizzate per le esigenze specifiche del tuo sito. Per esempio: bloccare l'accesso alla pagina wp-admin a tutti tranne che al tuo indirizzo IP, limitare l'accesso a xmlrpc.php, bloccare le richieste provenienti da paesi specifici, richiedere un CAPTCHA per la pagina di login, oppure bloccare gli user agent di bot e scanner noti. Le regole personalizzate si creano tramite la dashboard di Cloudflare usando un editor visuale o la sintassi delle espressioni Wire Format.
Rate Limiting
Il Rate Limiting di Cloudflare permette di limitare il numero di richieste per indirizzo IP in un determinato intervallo di tempo. È una difesa efficace contro gli attacchi brute force e l'abuso delle API. Per esempio: limitare la pagina di login a 5 richieste al minuto per indirizzo IP, limitare gli endpoint API a 100 richieste al minuto. Le richieste che superano il limite possono essere bloccate, attivare un CAPTCHA o essere reindirizzate a una pagina di errore.
ModSecurity - configurazione
ModSecurity è un motore WAF open-source che funziona come modulo sui server Apache, Nginx e LiteSpeed. È il WAF host-based più diffuso nel settore dell'hosting.
Installazione e configurazione di base
Sui server cPanel, ModSecurity si installa tramite WHM (Web Host Manager) con un solo clic. Sui server Linux senza cPanel si installa dai pacchetti (apt install libapache2-mod-security2 su Ubuntu/Debian). Dopo l'installazione, ModSecurity funziona in modalità Detection Only - registra le richieste sospette ma non le blocca. È consigliabile farlo all'inizio per individuare i falsi positivi prima di passare alla modalità di applicazione.
OWASP Core Rule Set (CRS)
ModSecurity di per sé non contiene regole - ha bisogno di un set di regole. L'OWASP Core Rule Set (CRS) è il set di regole più utilizzato e copre le vulnerabilità della OWASP Top 10. Il CRS usa un sistema di anomaly scoring in cui ogni elemento sospetto della richiesta aggiunge punti, e una richiesta viene bloccata solo quando il punteggio totale supera la soglia (predefinita a 5). Questo riduce i falsi positivi perché un singolo elemento sospetto non è sufficiente per il blocco - devono esserci più indicatori di comportamento malevolo.
Affinamento delle regole
Le regole di ModSecurity generano spesso falsi positivi - bloccando richieste legittime. Gli esempi più comuni sono: l'editor di WordPress che invia codice HTML/CSS (che sembra XSS), i plugin firewall i cui moduli del pannello di controllo contengono termini di sicurezza, e i moduli di contatto con contenuti specifici. Per correggere i falsi positivi puoi: disabilitare una regola specifica per un determinato URL o directory, alzare la soglia dell'anomaly scoring, oppure aggiungere una regola di whitelist per le richieste sicure note. Esamina l'audit log di ModSecurity per individuare quali regole generano falsi positivi.
ModSecurity su LiteSpeed
LiteSpeed Web Server ha il supporto integrato per le regole di ModSecurity senza la necessità di un modulo esterno. LiteSpeed elabora le regole di ModSecurity più velocemente di Apache perché utilizza un motore ottimizzato, progettato per l'architettura event-driven di LiteSpeed. La configurazione è identica a quella di Apache - stesse regole, stesse direttive, ma prestazioni migliori.
WAF per WordPress - regole specifiche
I siti WordPress sono il bersaglio più frequente degli attacchi e richiedono regole WAF specifiche oltre a quelle generiche.
Protezione dell'area di amministrazione
Limita l'accesso a /wp-admin/ e /wp-login.php agli indirizzi IP noti oppure richiedi un'autenticazione aggiuntiva. Blocca l'accesso ai file sensibili: wp-config.php, xmlrpc.php, wp-cron.php (consenti solo l'accesso lato server). Impedisci l'enumerazione degli utenti bloccando le richieste con il parametro ?author= che rivela i nomi utente.
Protezione dalle vulnerabilità dei plugin
I plugin di WordPress sono il vettore di attacco più comune. Le regole WAF dovrebbero bloccare: l'accesso diretto ai file PHP nella directory wp-content/plugins/ (eccetto gli handler AJAX), il caricamento di tipi di file malevoli (.php, .phtml, .pht camuffati da immagini) e lo sfruttamento di vulnerabilità note nei plugin più popolari (Cloudflare e il CRS di ModSecurity hanno regole specifiche per le vulnerabilità dei plugin di WordPress).
Protezione dai bot
Una grande percentuale del traffico sui siti WordPress proviene dai bot - quelli buoni (Google bot, Bing bot) e quelli cattivi (scanner di vulnerabilità, content scraper, bot di brute force). Il WAF dovrebbe: consentire i bot buoni noti in base allo user agent e agli intervalli di IP, bloccare o applicare un rate limit ai bot cattivi noti, attivare un CAPTCHA per i bot sospetti e limitare la frequenza di scansione di tutti i bot affinché non sovraccarichino il server.
Monitoraggio e manutenzione del WAF
Un WAF non è una soluzione "imposta e dimentica". Richiede un monitoraggio e un'ottimizzazione costanti.
Analisi dei log
Esamina regolarmente i log del WAF per individuare: falsi positivi che bloccano utenti legittimi (e adattare le regole), pattern di attacco che possono indicare un attacco mirato, indirizzi IP o intervalli che generano molte richieste malevole, e nuovi tipi di attacco che potrebbero non essere coperti dalle regole esistenti. Cloudflare offre una dashboard visuale per l'analisi, mentre ModSecurity utilizza file di log testuali che puoi analizzare con strumenti come GoAccess o lo stack ELK.
Aggiornamento delle regole
Ogni giorno vengono scoperte nuove vulnerabilità e le regole del WAF devono essere aggiornate per coprirle. Le soluzioni WAF cloud (Cloudflare) aggiornano le regole automaticamente. Per ModSecurity con OWASP CRS, aggiorna il set di regole almeno una volta al mese. Segui i bollettini di sicurezza di WordPress, dei plugin e dei temi che utilizzi, e aggiungi regole specifiche per le vulnerabilità appena scoperte prima che sia disponibile una patch (virtual patching).
Errori comuni con il WAF
- Regole troppo aggressive: Un WAF che blocca gli utenti legittimi è peggio di nessun WAF, perché allontana visitatori e clienti. Inizia in modalità monitoraggio e irrigidisci le regole gradualmente.
- Affidarsi solo al WAF: Il WAF è un livello di protezione, non un sostituto di software aggiornato, password forti, configurazione sicura e backup. Una strategia di difesa in profondità è l'unico approccio corretto.
- Ignorare i log: I log del WAF sono oro - ti mostrano esattamente chi sta tentando cosa sul tuo sito. Ignorare i log significa perdere segnali importanti di minaccia.
- Regole obsolete: Un WAF con regole vecchie di un anno è come un antivirus con un database non aggiornato - non riconosce le nuove minacce.
- Nessun test dopo le modifiche: Ogni modifica alle regole del WAF deve essere testata per verificare che non blocchi le funzionalità legittime del sito.
Conclusione
Un WAF è un livello di protezione indispensabile per ogni sito web, soprattutto per i siti WordPress che sono il bersaglio più frequente degli attacchi. La combinazione di un WAF cloud (Cloudflare) per la protezione volumetrica e dai DDoS con un WAF host-based (ModSecurity) per l'ispezione approfondita delle richieste offre una protezione completa. Inizia in modalità monitoraggio, segui i log, ottimizza le regole per il tuo sito e aggiorna regolarmente i set di regole. In BeoHosting, tutti i piani di hosting includono un WAF ModSecurity preconfigurato con l'OWASP Core Rule Set ottimizzato per WordPress, insieme al nostro consiglio di utilizzare il piano gratuito di Cloudflare per un livello aggiuntivo di protezione e i vantaggi della CDN.
BeoHosting Team
10+ anni di esperienza — Specialisti di web hosting e infrastrutture
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Ultimo aggiornamento: