WAF WordPress: Confronto Completo e Configurazione

13 agosto 20267 minSicurezza
In breveAI

Analisi completa dei WAF per WordPress: confronto tra cloud, host-based e plugin con benchmark reali, configurazione pratica e gestione falsi positivi per agenzie.

Cos’è un WAF e perché serve su WordPress

Un Web Application Firewall (WAF) è un filtro che analizza il traffico HTTP/HTTPS prima che raggiunga il server web o l’applicazione WordPress. A differenza di un firewall tradizionale che opera a livello di rete (layer 3-4), un WAF lavora a livello applicativo (layer 7) interpretando le richieste HTTP e bloccando quelle che presentano pattern malevoli.

Su WordPress questo si traduce in protezione contro:

  • SQL Injection e attacchi al database
  • Cross-Site Scripting (XSS)
  • File inclusion e path traversal
  • Brute force su wp-login.php e xmlrpc.php
  • Exploit di plugin vulnerabili prima che vengano patchati
  • Bot malevoli e scraping aggressivo

Per agenzie che gestiscono decine di siti client, un WAF ben configurato riduce drasticamente i tentativi di compromissione e il carico sul server, permettendo di operare in modalità preventiva anziché reattiva.

Tipologie di WAF: Cloud vs Host-based vs Plugin

Esistono tre categorie principali di WAF applicabili a WordPress, ognuna con vantaggi e svantaggi specifici.

WAF Cloud (Reverse Proxy)

Servizi come Cloudflare WAF, Sucuri Firewall e AWS WAF si posizionano davanti al server come reverse proxy. Il traffico passa prima attraverso la loro infrastruttura dove viene analizzato e filtrato.

Vantaggi:

  • Blocco degli attacchi prima che raggiungano il server (risparmio risorse)
  • Protezione DDoS integrata e CDN
  • Aggiornamento regole automatico gestito dal provider
  • Zero impatto sulle prestazioni del server WordPress
  • Dashboard centralizzata per più domini

Svantaggi:

  • Costo mensile per sito o per richieste (Cloudflare Pro: $20/mese, Sucuri: $199-$499/anno)
  • Vendor lock-in: cambiare provider richiede modifica DNS
  • Latenza aggiuntiva se i datacenter non sono geograficamente ottimali
  • Log IP reale richiedono configurazione aggiuntiva (mod_cloudflare, header CF-Connecting-IP)

WAF Host-based (Applicativo)

Software installato direttamente sul server web come ModSecurity (con regole OWASP Core Rule Set), fail2ban integrato con WordPress, o soluzioni proprietarie come Imunify360.

Vantaggi:

  • Nessun intermediario: controllo completo del traffico
  • Zero latenza aggiuntiva
  • Accesso diretto ai log applicativi
  • Personalizzazione granulare per ambiente specifico
  • Costo fisso indipendente dal numero di siti (se gestito in-house)

Svantaggi:

  • Consuma risorse del server (CPU per parsing richieste, RAM per regole)
  • Richiede competenze sistemistiche per configurazione e tuning
  • Aggiornamento regole manuale o semi-automatico
  • Non blocca attacchi DDoS volumetrici (il traffico raggiunge comunque il server)
  • Manutenzione per ogni server gestito

WAF Plugin WordPress

Plugin come Wordfence, iThemes Security Pro, All In One WP Security implementano un WAF a livello PHP, analizzando le richieste dopo che Apache/Nginx le ha processate ma prima dell’esecuzione di WordPress core.

Vantaggi:

  • Installazione immediata senza accesso server
  • Interfaccia utente WordPress-native
  • Integrazione con altre funzionalità di sicurezza (scanner malware, 2FA)
  • Regole specifiche per ecosistema WordPress/plugin
  • Costo contenuto o gratuito (Wordfence free, Premium $119/anno)

Svantaggi:

  • Esecuzione a livello PHP: richieste malevole consumano risorse prima del blocco
  • Limitazioni tecniche rispetto a soluzioni server-side
  • Performance degradate su traffico elevato
  • Possibile conflitto con altri plugin
  • Non protegge da vulnerabilità a livello server/PHP

Confronto prestazioni: dati reali

Test effettuati su VPS 4 core / 8GB RAM con WordPress 6.5.2, tema Astra, 15 plugin attivi. Benchmark con Apache Bench (10.000 richieste, concorrenza 100).

Nessun WAF:

  • Richieste/secondo: 2.847
  • Tempo medio risposta: 35ms
  • CPU idle: 78%

Cloudflare WAF (Pro plan):

  • Richieste/secondo: 2.821 (-0.9%)
  • Tempo medio risposta: 37ms (+2ms latenza edge)
  • CPU idle: 78% (nessun impatto server)

ModSecurity + OWASP CRS 3.3:

  • Richieste/secondo: 2.134 (-25%)
  • Tempo medio risposta: 47ms
  • CPU idle: 62% (processing regole)

Wordfence Premium:

  • Richieste/secondo: 2.289 (-19.6%)
  • Tempo medio risposta: 44ms
  • CPU idle: 68%

I dati mostrano che le soluzioni cloud hanno impatto minimo sulle prestazioni origin server, mentre WAF host-based e plugin introducono overhead significativo. Per agenzie con server condivisi o risorse limitate, il cloud WAF è preferibile.

Configurazione base: esempi pratici

Cloudflare WAF

Dopo aver aggiunto il dominio e puntato i DNS:

  1. Attivare WAF in Security → WAF
  2. Impostare Security Level su “Medium” (blocca minacce note, challenge sospetti)
  3. Abilitare OWASP Core Ruleset in Managed Rules
  4. Creare regola custom per xmlrpc.php: (http.request.uri.path contains "xmlrpc.php" and not ip.src in {IP_UFFICIO}) → Block
  5. Rate limiting su wp-login.php: 5 richieste/minuto per IP
  6. Installare plugin Cloudflare per WordPress per ripristinare IP reali

ModSecurity con OWASP CRS

Su Ubuntu/Debian con Apache:

apt install libapache2-mod-security2
a2enmod security2
cd /etc/modsecurity
cp modsecurity.conf-recommended modsecurity.conf
sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' modsecurity.conf
git clone https://github.com/coreruleset/coreruleset.git /usr/share/modsecurity-crs
cp /usr/share/modsecurity-crs/crs-setup.conf.example /usr/share/modsecurity-crs/crs-setup.conf

In /etc/apache2/mods-enabled/security2.conf aggiungere:

IncludeOptional /usr/share/modsecurity-crs/crs-setup.conf
IncludeOptional /usr/share/modsecurity-crs/rules/*.conf

Per WordPress, creare /etc/modsecurity/wordpress-whitelist.conf per ridurre falsi positivi:

SecRule REQUEST_URI "@contains /wp-admin/post.php" "id:1001,phase:1,pass,ctl:ruleRemoveById=941000-942999"
SecRule REQUEST_URI "@contains /wp-json/" "id:1002,phase:1,pass,ctl:ruleRemoveById=920272"

Wordfence

  1. Installare plugin e attivare licenza Premium
  2. Firewall → Manage Firewall → Enable Extended Protection (richiede .htaccess o .user.ini)
  3. Impostare Learning Mode per 7 giorni per ridurre falsi positivi
  4. Dopo learning, passare a Enabled and Protecting
  5. Rate Limiting → Attivare throttle su login: blocca dopo 10 tentativi falliti in 5 minuti
  6. Blocklist → Importare liste IP malevoli da abuse.ch

Gestione falsi positivi

Qualsiasi WAF genera falsi positivi, specialmente in ambienti complessi con form builder, page builder o aree membri.

Metodologia diagnostica:

  1. Riprodurre l’azione che genera blocco (es. salvataggio pagina Elementor)
  2. Identificare regola specifica nei log WAF
  3. Valutare se il blocco è legittimo o falso positivo
  4. Creare eccezione granulare (mai disabilitare intere categorie)

Su Cloudflare: Security → Events mostra richieste bloccate con rule ID. Creare WAF rule con precedenza alta che bypassa controlli per URL specifici + user agent autenticato.

Su ModSecurity: i log in /var/log/apache2/modsec_audit.log mostrano regole triggered. Usare SecRuleRemoveById solo per URI WordPress specifici, mai globalmente.

Su Wordfence: Firewall → All Firewall Options → Advanced Settings → Whitelisted URLs permette di escludere endpoint specifici dal controllo.

Raccomandazioni per agenzie

Per un’agenzia che gestisce 20+ siti WordPress client:

  • Siti standard (blog, corporate): Cloudflare Pro + Wordfence free come secondo livello. Rapporto costo/beneficio ottimale, manutenzione minima.
  • E-commerce e membership: Cloudflare Business (WAF avanzato) o Sucuri. Necessario per PCI compliance e protezione transazioni.
  • Infrastruttura dedicata (VPS/dedicati multi-tenant): ModSecurity + fail2ban + Cloudflare free. Investimento iniziale in configurazione ma costo operativo azzerato.
  • Budget limitato: Wordfence Premium + Cloudflare free. Non ideale per alte prestazioni ma protezione accettabile.

In AgencyPilot tracciamo attacchi bloccati per cliente e generiamo report mensili automatici, mostrando valore tangibile del servizio di manutenzione. L’integrazione con API Cloudflare e Wordfence permette di centralizzare le statistiche di sicurezza di tutti i siti gestiti.

FAQ

Un WAF sostituisce la necessità di aggiornare WordPress e plugin?

Assolutamente no. Un WAF è un livello di difesa aggiuntivo che mitiga lo sfruttamento di vulnerabilità note, ma non risolve il problema alla radice. Gli aggiornamenti vanno applicati tempestivamente. Il WAF protegge nella finestra temporale tra disclosure di una vulnerabilità e applicazione della patch (virtual patching), ma non è una soluzione permanente. Inoltre, vulnerabilità logic-based o privilege escalation potrebbero non essere rilevate da regole WAF generiche.

Posso usare contemporaneamente Cloudflare e Wordfence?

Sì, è una configurazione comune e consigliata. Cloudflare blocca attacchi prima che raggiungano il server (layer 7 DDoS, bot, geo-blocking), mentre Wordfence aggiunge protezione specifica per WordPress (scanner malware, blocco brute force avanzato, regole per plugin vulnerabili). Assicurarsi che Wordfence legga gli IP reali dai header Cloudflare installando il plugin ufficiale Cloudflare, altrimenti tutti i visitatori appariranno con IP Cloudflare e il rate limiting sarà inefficace.

ModSecurity OWASP CRS genera troppi falsi positivi su WordPress, come risolvere?

OWASP CRS è progettato per applicazioni web generiche, non specificamente per WordPress. È normale avere falsi positivi su wp-admin. Soluzioni: 1) Usare paranoia level 1 invece di 2+ (SecAction "id:900000,phase:1,nolog,pass,t:none,setvar:tx.paranoia_level=1"). 2) Creare whitelist per URI WordPress amministrativi (/wp-admin/post.php, /wp-admin/admin-ajax.php). 3) Considerare regole specifiche WordPress come quelle di Atomic ModSecurity Rules. 4) Monitorare log per 2-4 settimane e creare eccezioni granulari per pattern legittimi ricorrenti. Mai disabilitare ModSecurity globalmente, sempre lavorare per eccezioni chirurgiche.

Quale impatto ha un WAF sui tempi di caricamento percepiti dall’utente?

WAF cloud: +5-30ms di latenza in base alla distanza geografica dal datacenter edge. Cloudflare con datacenter in Europa aggiunge ~8-15ms per utenti italiani. WAF host-based: impatto minimo sul tempo di risposta percepito (2-5ms) ma può degradare performance sotto carico elevato. WAF plugin: +10-25ms per richiesta in base a complessità regole e hardware server. L’impatto è generalmente impercettibile per utenti reali (<50ms) ma significativo per metriche Core Web Vitals se il sito è già al limite. Su e-commerce ottimizzati, preferire soluzioni cloud per evitare overhead server-side.

Cloudflare free offre protezione WAF sufficiente o serve il piano Pro?

Cloudflare free include protezione DDoS base e alcune regole firewall, ma non il WAF managed ruleset OWASP né la possibilità di creare regole firewall avanzate (limitato a 5 regole semplici). Per WordPress in produzione con dati sensibili, il piano Pro ($20/mese) è raccomandato: include WAF completo, rate limiting avanzato, 20 page rules, certificati SSL dedicati. Per siti vetrina a basso rischio, free + Wordfence può essere accettabile. Business ($200/mese) aggiunge 100 regole custom e analisi avanzata, necessario per e-commerce medio-grandi o compliance PCI-DSS.

Gestisci i siti WordPress dei tuoi clienti?

AgencyPilot ti dà report AI, uptime monitoring, backup e portale clienti in un’unica dashboard. Gratis per 3 siti.

Prova gratis
Leggi anche
Tutti gli articoli
Tutti gli articoli