Plugin firewall per WordPress: Wordfence, Cloudflare e come configurarli

Firewall Plugin per WordPress - Come configurarli

Cerchi “firewall” nel repository WordPress, installi il primo risultato, lo attivi. A questo punto molti si fermano — e il sito ha una protezione parziale che dà una falsa sensazione di sicurezza. Wordfence installato con le impostazioni di default non è Wordfence configurato correttamente. E Cloudflare aggiunto sopra senza le giuste eccezioni può rompere le scansioni di Wordfence invece di potenziarle.

Questa guida copre la configurazione operativa: Wordfence dal primo accesso fino alla protezione estesa, Cloudflare piano gratuito con le regole essenziali per WordPress, come farli lavorare insieme senza conflitti, e quando NinjaFirewall è la scelta migliore.

Setup raccomandato: installa Wordfence → attiva la modalità Protezione estesa (modifica wp-config(.)php) → abilita 2FA e reCAPTCHA sul login → aggiungi Cloudflare come proxy DNS → configura l’IP reale con l’header CF-Connecting-IP → aggiungi l’IP del server nelle IP Access Rules di Cloudflare per evitare conflitti con Bot Fight Mode → imposta le 4 regole firewall essenziali per WordPress.

Firewall endpoint vs firewall cloud: la differenza che cambia tutto

Sono due architetture diverse che operano su livelli completamente separati. Capire la differenza prima di scegliere uno strumento cambia il modo in cui si valuta cosa sta proteggendo cosa.

Firewall endpoint (Wordfence, NinjaFirewall)

Un firewall endpoint gira direttamente sul tuo server, come plugin PHP all’interno di WordPress. Quando arriva una richiesta, il firewall la intercetta e la analizza prima che WordPress la elabori. Il vantaggio è il controllo granulare: Wordfence può analizzare il contenuto delle richieste, confrontare i file con il repository ufficiale di WordPress, bloccare IP specifici e tenere un log dettagliato di ogni tentativo.

Il limite è strutturale: il traffico malevolo arriva comunque al tuo server e consuma risorse prima di essere bloccato. In caso di attacchi DDoS volumetrici, il server può saturarsi prima che il firewall riesca a intervenire.

Firewall cloud (Cloudflare, Sucuri WAF)

Un firewall cloud opera a livello DNS, prima ancora che il traffico raggiunga il tuo server. Cloudflare, nella sua versione gratuita, fa passare tutto il traffico attraverso la propria rete globale — il server non vede mai il traffico bloccato, zero consumo di risorse. Il limite è che opera su criteri più generali e non ha visibilità diretta sui file del tuo WordPress.

La combinazione ottimale per la maggior parte dei siti WordPress è Cloudflare come primo strato (blocca il traffico malevolo prima che arrivi al server) + Wordfence come secondo strato (protegge a livello applicativo e monitora l’integrità dei file). Questa combinazione richiede però una configurazione specifica per evitare conflitti — lo vediamo nella sezione dedicata.

Wordfence: configurazione ottimale passo dopo passo

Installazione e attivazione

Installa Wordfence Security direttamente dal repository WordPress (Plugin → Aggiungi nuovo → cerca Wordfence). Dopo l’attivazione, il plugin chiederà un indirizzo email per gli avvisi di sicurezza — usane uno che controlli effettivamente. Gli alert di Wordfence sono tra i più utili che riceverai: nuovi amministratori creati, file modificati, tentativi di login bloccati.

Configurazione del firewall

Vai su Wordfence → Firewall e verifica che sia in modalità “Protezione estesa” e non solo “Protezione di base”. La protezione estesa richiede una modifica al file wp-config(.)php per far caricare Wordfence prima del core di WordPress — Wordfence guida l’operazione automaticamente con un wizard. Senza questa modalità, alcuni attacchi sofisticati possono bypassare il firewall.

Nella sezione Rate Limiting, imposta limiti ragionevoli per i crawl: un crawler legittimo come Googlebot non fa migliaia di richieste al minuto. Valori consigliati: 240 richieste al minuto per crawler, 60 per esseri umani non autenticati.

Impostazioni di login security

Vai su Wordfence → Login Security e abilita:

  • Two-Factor Authentication (2FA): per tutti gli account con ruolo Amministratore. Wordfence gestisce il 2FA internamente senza bisogno di plugin aggiuntivi.
  • reCAPTCHA sulla pagina di login: riduce drasticamente i tentativi di brute force automatizzati.
  • Blocco dopo X tentativi falliti: 5 tentativi è un valore ragionevole. Abbassarlo troppo rischia di bloccare utenti legittimi che dimenticano la password.
  • Prevenzione dell’enumerazione utenti: impedisce agli attaccanti di scoprire i nomi utente tramite le API di WordPress.

Scansione malware: quando e come eseguirla

Vai su Wordfence → Scansione e avvia una scansione completa. Wordfence confronta ogni file del sito con il repository ufficiale e segnala discrepanze, firme malware note e file sospetti. La scansione e rimozione del malware è un processo separato — se la scansione trova qualcosa, la guida alla rimozione del malware copre la procedura completa. Nella versione gratuita, pianifica una scansione manuale settimanale.

Cloudflare piano gratuito: cosa protegge davvero

Il piano gratuito di Cloudflare offre protezione reale, non una versione castrata del prodotto. Include proxy DNS con filtraggio del traffico malevolo, protezione DDoS di base, CDN globale che accelera il caricamento del sito, e 5 regole firewall personalizzabili. Per un sito WordPress standard è più che sufficiente.

Attivare Cloudflare su un sito WordPress

La procedura richiede la modifica dei nameserver del dominio per puntare a Cloudflare. Crea un account su cloudflare.com, aggiungi il tuo dominio — Cloudflare importa automaticamente i record DNS esistenti, verificali prima di salvare. Aggiorna i nameserver presso il tuo registrar. La propagazione richiede da pochi minuti a 24 ore.

Dopo l’attivazione, verifica che WordPress riconosca correttamente gli IP reali dei visitatori: senza configurazione aggiuntiva, tutti sembrano provenire dagli IP di Cloudflare. Aggiungi in wp-config(.)php il codice per leggere l’header CF-Connecting-IP, oppure installa il plugin ufficiale Cloudflare che gestisce questa configurazione automaticamente.

Regole firewall essenziali per WordPress

Con le 5 regole disponibili nel piano gratuito, queste sono le priorità:

  • Blocca accesso diretto a wp-login.php da tutti gli IP eccetto i tuoi — oppure aggiungi una sfida JavaScript per verificare che sia un browser reale.
  • Blocca le richieste che contengono xmlrpc.php nell’URL se non usi applicazioni che ne richiedono l’accesso (Jetpack, app mobile WordPress).
  • Blocca le richieste con user agent vuoto o sospetto — la maggior parte dei bot malevoli non invia un user agent valido.
  • Limita il rate sulle richieste POST verso wp-login.php — massimo 5 richieste per minuto per IP.
  • Blocca per paese se hai un pubblico esclusivamente italiano e noti attacchi concentrati da aree geografiche specifiche.

Bot Fight Mode e il problema con Wordfence

Problema tecnico documentato

La modalità “Bot Fight Mode” di Cloudflare interferisce con le scansioni di Wordfence e con i cron job di WordPress. Wordfence usa richieste HTTP interne per completare le scansioni, e Bot Fight Mode le identifica come traffico bot — bloccandole.

La soluzione è aggiungere l’IP del tuo server nelle IP Access Rules di Cloudflare con azione “Allow”, prima di qualsiasi altra regola. L’IP del server lo trovi nel pannello del tuo hosting. Se dopo questa configurazione Wordfence mostra ancora errori di connettività nella sezione Diagnostics → Connectivity, disattiva temporaneamente Bot Fight Mode per verificare che sia la causa.

Questo è uno di quei problemi che la documentazione ufficiale di Cloudflare menziona ma che quasi nessuna guida italiana spiega chiaramente — e che fa perdere ore a chi lo incontra per la prima volta.

Usare Wordfence e Cloudflare insieme: la configurazione corretta

La combinazione Wordfence + Cloudflare è il setup raccomandato per siti WordPress che vogliono protezione a doppio strato senza costi aggiuntivi. Perché funzioni senza problemi:

  • Cloudflare deve essere configurato in modalità proxy (nuvola arancione) — non solo DNS.
  • Wordfence deve essere impostato per leggere l’IP reale dall’header CF-Connecting-IP, non dall’IP della connessione che sarebbe l’IP di Cloudflare.
  • Bot Fight Mode di Cloudflare deve avere l’eccezione per l’IP del server come descritto sopra.
  • Le regole di rate limiting di Wordfence e Cloudflare non devono sovrapporsi su wp-login.php — scegline uno per gestire quel limite specifico, non entrambi.

Se hai configurato SSL tramite Cloudflare, verifica anche la compatibilità con le impostazioni SSL di WordPress — un argomento coperto in dettaglio nella guida al certificato SSL su WordPress.

NinjaFirewall: quando ha senso sceglierlo

NinjaFirewall è lo strumento più tecnico dei tre e quello meno conosciuto al grande pubblico — ma ha una caratteristica unica che lo rende superiore agli altri in scenari specifici. A differenza di Wordfence, che gira come plugin PHP all’interno di WordPress, NinjaFirewall si posiziona prima del core di WordPress stesso, tramite la direttiva auto_prepend_file in php.ini o .htaccess.

Questo significa che anche se un attaccante compromette un plugin o un tema, NinjaFirewall può comunque intercettare le richieste malevole prima che il codice compromesso venga eseguito. È la scelta corretta per ambienti con requisiti di sicurezza avanzati, hosting condiviso ad alto rischio, o siti che hanno già subito attacchi ripetuti nonostante Wordfence.

Per i siti WordPress standard, Wordfence + Cloudflare rimane la combinazione ottimale per rapporto semplicità/protezione.

Qual è il setup giusto per il tuo sito?

Dipende da tre cose: quanto traffico hai, quanto è sensibile il sito, e quanta complessità vuoi gestire.

  • Sito vetrina o blog con traffico basso: Wordfence gratuito con protezione estesa attiva è sufficiente. Aggiungi Cloudflare gratuito se vuoi CDN e protezione DDoS senza costi.
  • E-commerce WooCommerce o sito con area riservata: Cloudflare gratuito + Wordfence gratuito configurati correttamente come descritto in questa guida. Valuta Wordfence Premium per il feed delle minacce in tempo reale.
  • Sito già attaccato in passato: dopo il ripristino post-attacco, implementa obbligatoriamente entrambi i livelli di protezione con la configurazione descritta qui.
  • Sito ad alto traffico o con requisiti tecnici avanzati: NinjaFirewall + Cloudflare Pro o Sucuri WAF.

Se la configurazione del firewall ti sembra complessa, se Wordfence e Cloudflare creano conflitti sul tuo sito, o se vuoi avere la certezza che tutto sia configurato in modo ottimale, contattami: lavoro in modo diretto e risolvo il problema nel minor tempo possibile.

Servizio di Assistenza WordPress

In sintesi

Wordfence installato con le impostazioni di default non è Wordfence configurato. La differenza sta nella modalità Protezione estesa — che richiede una modifica al wp-config(.)php e che la maggior parte delle guide salta perché aggiunge un passaggio — e nelle impostazioni di login security, che di default sono tutte disattivate. Senza 2FA e senza il blocco dei tentativi falliti, il firewall protegge i file ma lascia il login esposto.

Cloudflare gratuito aggiunge uno strato di difesa che Wordfence da solo non può offrire: blocca il traffico prima che arrivi al server, assorbe gli attacchi DDoS e accelera il sito via CDN. Il problema è Bot Fight Mode — che Cloudflare attiva di default e che rompe le scansioni di Wordfence. La soluzione è una riga nelle IP Access Rules, ma non la trova quasi nessuno da solo.

NinjaFirewall entra in gioco quando Wordfence non basta. Non perché sia migliore in assoluto — è più complesso da configurare e meno intuitivo. Ma si posiziona prima del core di WordPress, il che significa che funziona anche se il sito è già parzialmente compromesso. Per ambienti ad alto rischio o siti che hanno già subito attacchi ripetuti, è la scelta giusta.

Sul setup: sito vetrina → Wordfence gratuito con protezione estesa. E-commerce o sito con dati sensibili → Wordfence + Cloudflare configurati insieme come descritto qui. Sito già attaccato → obbligatoriamente doppio strato, nessuna eccezione.

Domande frequenti (FAQ)

Per la maggior parte dei siti WordPress, Wordfence Free con la configurazione corretta è sufficiente. La versione Premium aggiunge il feed delle minacce in tempo reale (le regole firewall vengono aggiornate istantaneamente invece che con 30 giorni di ritardo) e la reputazione degli IP in tempo reale. Vale la pena per e-commerce o siti che trattano dati sensibili. Per siti vetrina o blog, Free è più che adeguato.

In generale no — due plugin di sicurezza che gestiscono il firewall e le scansioni creano conflitti e rallentano il sito. Wordfence + Cloudflare funziona perché operano su livelli diversi (applicativo vs DNS). Ma Wordfence + Sucuri Plugin, o Wordfence + iThemes Security, sono combinazioni che causano quasi sempre problemi di performance e conflitti nelle regole.

Al contrario — Cloudflare accelera il sito tramite la sua CDN globale, servendo i file statici dal datacenter più vicino al visitatore. L’unico scenario in cui Cloudflare può rallentare è una configurazione errata della cache, ad esempio se la cache di Cloudflare e quella di WordPress si sovrappongono in modo incoerente. La soluzione è escludere le pagine dinamiche (carrello, checkout, area riservata) dalla cache di Cloudflare.

Può succedere se le regole di rate limiting sono impostate troppo aggressivamente. Wordfence ha una whitelist automatica per i principali crawler legittimi, ma riconosce Googlebot tramite reverse DNS lookup — se il rate limiting scatta prima del lookup, il blocco avviene. La soluzione è aumentare la soglia di rate limiting per i crawler (240 richieste al minuto è un valore sicuro) e verificare nella sezione Blocked IPs di Wordfence che nessun IP di Google sia in lista.

Wordfence mostra nella dashboard il numero di attacchi bloccati nelle ultime 24 ore e 30 giorni. Se il contatore è a zero da giorni, probabilmente il firewall non è in modalità Protezione estesa o c’è un conflitto con Cloudflare che impedisce a Wordfence di intercettare le richieste. Vai su Wordfence → Diagnostics → Connectivity per un controllo automatico. Per Cloudflare, il pannello Analytics mostra il traffico bloccato in tempo reale.