Il tuo sito WordPress è un bersaglio. Ogni giorno, migliaia di tentativi di attacco colpiscono installazioni non protette. Noi lo vediamo nei progetti che ci arrivano: form senza protezione, credenziali in chiaro, backup mai configurato. Se non hai preso misure, non è questione di 'se' verrai attaccato, ma di 'quando'. Ma c'è una buona notizia: una protezione solida non richiede un budget da banca. Richiede metodo, costanza e qualche decisione tecnica ben ponderata.
Noi, di Meteora Web, seguiamo aziende dal 2017: dal dominio al fatturato, un unico interlocutore. E siamo partiti dalla contabilità, non dal codice. Questo significa che quando parliamo di sicurezza, ragioniamo in termini di costo del downtime, di margini persi, di valore dei dati. Non solo di firewall. Questa guida pillar ti dà tutto quello che serve per mettere in sicurezza un CMS WordPress, Joomla o Drupal — ma il 90% del traffico globale dei CMS è WordPress, quindi è lì che ci concentriamo.
Hardening di WordPress: la checklist essenziale
L'hardening è il punto di partenza. Non serve un plugin da 200 euro: serve togliere le porte aperte. Ecco le mosse che applichiamo su ogni installazione nuova.
wp-config.php: il cuore blindato
Il file wp-config.php contiene chiavi e parametri vitali. Aggiungere queste righe fa la differenza:
// Disabilita la modifica dei file dal pannello admin
define('DISALLOW_FILE_EDIT', true);
// Forza SSL per login e admin
define('FORCE_SSL_ADMIN', true);
// Limita le revisioni post per evitare gonfiamenti
define('WP_POST_REVISIONS', 5);
// Disabilita la generazione automatica di dimensioni immagini (se non serve)
define('MEDIA_TRASH', true);
Inoltre, sposta il file sopra la root di WordPress (se il server lo permette) e proteggi l'accesso via .htaccess o nginx.conf.
Sponsored Protocol
Rimuovi le informazioni non necessarie
Il meta tag generator dice a un attaccante che versione usi. Toglilo dal tema. Disabilita XML-RPC se non serve (spesso è un vettore di attacchi brute force). Noi usiamo sempre un plugin o una regola nginx per bloccarlo.
Disabilita l'enumerazione utenti
Blocca la possibilità di scandire ?author=1 per ottenere username. Aggiungi nel .htaccess:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^author=([0-9]*)
RewriteRule .* - [F]
Questa singola regola ferma una marea di attacchi automatici.
Protezione dagli attacchi brute force
La prima cosa che un bot prova è /wp-login.php con username 'admin' e password deboli. Noi non permettiamo nemmeno che inizi la festa.
Cambia il prefisso delle tabelle del database
Il prefisso predefinito wp_ è noto a tutti. Cambialo in mioPrefisso_ durante l'installazione o con un plugin come WP-CLI. Non è infallibile, ma alza il costo dell'attacco.
Blocca IP dopo tentativi falliti
Wordfence o un semplice script in nginx possono bannare un IP dopo 5 tentativi. Un approccio minimalista? Aggiungi al .htaccess del login:
<Files wp-login.php>
Order Deny,Allow
Deny from all
Allow from 123.45.67.89 # solo il tuo IP
</Files>
Ma per un sito con più redattori serve un approccio più flessibile: usa un plugin di limitazione o Cloudflare WAF (ne parliamo dopo).
Usa autenticazione a due fattori (2FA)
Anche se la password viene rubata, il secondo fattore blocca l'attacco. Plugin come Google Authenticator o Wordfence offrono 2FA gratis. Obbligalo per tutti gli utenti con ruolo 'amministratore'.
Plugin di sicurezza: Wordfence, Sucuri e alternative
Tutti i CMS hanno plugin di sicurezza. Ma attenzione: ogni plugin aggiunge superficie d'attacco. Noi scegliamo quelli con una solida storia di patch e ridondanza.
Sponsored Protocol
Wordfence
Il più diffuso. Include firewall a livello applicativo, scansione malware, limitazione login, e regole di blocking. La versione gratuita copre l'80% dei casi. Ma attenzione: può essere pesante su server condivisi – noi lo abbassiamo in modalità 'Performance' e scheduliamo la scansione di notte.
Sucuri Security
Meno invasivo, più focalizzato su audit e hardening. Include anche il monitoraggio dell'integrità dei file core. Per chi vuole un approccio leggero, Sucuri è la scelta.
Alternative minimali
Esistono plugin come iThemes Security (molto configurabile) o All In One WP Security (gratuito). Il nostro consiglio: installane uno solo. Troppi plugin di sicurezza spesso litigano tra loro e rallentano il sito.
Aggiornamenti: la strategia che non rompe il sito
Il 90% degli attacchi riusciti sfrutta vulnerabilità già patchate. Ma aggiornare un plugin in produzione può rompere tutto. Come si fa in sicurezza?
Ambiente di staging obbligatorio
Prima di toccare il sito live, clona tutto su un sottodominio o su un ambiente locale. Applica gli aggiornamenti, testa le funzionalità critiche (carrello, form, login). Poi sposta in produzione. Noi usiamo WP-CLI per applicare aggiornamenti in staging:
wp plugin update --all --quiet --path=/path/to/staging
Auto-aggiornamenti selettivi
Per i plugin critici (WooCommerce, Elementor, un page builder), meglio non attivare gli aggiornamenti automatici. Per plugin minori e versioni minori di sicurezza, sì. Imposta in wp-config.php:
define('WP_AUTO_UPDATE_CORE', 'minor');
Monitoraggio delle vulnerabilità dei plugin
Iscriviti a feed come WPScan per ricevere notifiche CVE. Noi abbiamo un sistema interno che controlla ogni settimana le versioni installate rispetto al database WPScan. Se un plugin ha una vulnerabilità critica, lo aggiorniamo in emergenza (con backup preventivo, ovviamente).
Sponsored Protocol
Backup: l'ultima linea di difesa
Il backup non è un optional. Se il sito viene infettato o cancellato, il backup è l'unica cosa che ti separa dalla perdita totale di fatturato.
Regola 3-2-1
Tre copie, due supporti diversi, una offsite. Noi usiamo UpdraftPlus per backup automatici giornalieri su cloud (S3 o Google Drive) e un backup settimanale su un server separato. Per i clienti con budget ridotto, un backup giornaliero su Dropbox + una copia manuale mensile è già un enorme passo avanti.
Test del backup
Fare backup è inutile se non li provi. Almeno una volta al mese, ripristina su un ambiente di test e verifica che tutto funzioni. Ci è capitato di vedere backup corrotti o incompleti – meglio scoprirlo prima del disastro.
Malware: riconoscere e rimuovere un'infezione
Non è questione di 'se' ma di 'quando' toccherà. Quando succede, la fretta porta a errori. Noi seguiamo un protocollo preciso.
Segnali di un'infezione
Il sito rallenta, Google mostra avvisi 'This site may be hacked', compaiono pagine strane nei risultati di ricerca. A livello tecnico: file sconosciuti in wp-content/uploads, script eval() nascosti in index.php, o iframe caricati da domini esterni. Strumenti come Sucuri SiteCheck danno un primo responso.
Piano di bonifica
- Isola il sito: mettilo in manutenzione, blocca l'accesso pubblico con un IP whitelist.
- Backup forense: scarica tutti i file e il database per analisi (serve per capire l'attacco).
- Ripristina da backup pulito: se hai un backup antecedente all'infezione, è la soluzione più rapida.
- Scansiona e pulisci: se non hai backup, usa Wordfence o un'analisi manuale. Cerca file modificati di recente con
find /path -mtime -7. - Cambia tutte le password: admin, database, FTP, hosting. E ruota le chiavi di wp-config.
- Riapri solo dopo hardening: prima di rimettere online, applica le misure di sicurezza che mancavano.
GDPR e conformità
La sicurezza non è solo tecnica, è anche legale. Se tratti dati personali (cookie, form, iscrizioni), devi adeguarti al GDPR. Non serve un plugin magico, ma alcune precauzioni.
Sponsored Protocol
Cookie policy e consenso
Usa un plugin come Cookiebot o Complianz per gestire il consenso. Ma attenzione: alcuni plugin caricano script di terze parti prima del consenso, violando la norma. Verifica con un tool di audit.
Protezione dei dati nei form
I form devono usare HTTPS (ovvio), ma anche la trasmissione dei dati deve essere crittografata. Il plugin di contatto deve salvare i messaggi in modo sicuro (non in chiaro nel database). Per approfondire, leggi la nostra guida sulla crittografia.
Registro dei dati
WordPress di default tiene traccia di revisioni, commenti, utenti. Se non ti servono, disabilitali o anonimizza gli IP. Noi consigliamo sempre di pulire il database periodicamente con uno script.
WAF per WordPress: Cloudflare e protezione applicativa
Il Web Application Firewall (WAF) è un filtro tra il visitatore e il tuo server. Blocca richieste malevole prima che arrivino a WordPress. Cloudflare offre un WAF gratuito con regole predefinite, come la protezione da SQL injection e XSS. Noi lo attiviamo su ogni sito che gestiamo.
Sponsored Protocol
Configurazione base Cloudflare
- Nella dashboard, attiva 'Under Attack Mode' durante un attacco DDoS.
- Imposta le regole WAF per bloccare IP anomali (es. traffico da paesi non target).
- Usa la regola 'Browser Integrity Check' per fermare bot semplici.
- Attiva la protezione 'Rate Limiting' per limitare login falliti.
Attenzione: Cloudflare può causare falsi positivi con alcuni plugin. Testa le regole in modalità log per qualche giorno prima di attivare il blocco.
Alternative WAF
Sucuri offre un WAF cloud a pagamento (con backup incluso). Wordfence ha un firewall a livello applicativo integrato. La scelta dipende dal budget e dalla complessità del sito.
Monitoraggio continuo
La sicurezza non è una tantum. Noi monitoriamo i siti con strumenti come UptimeRobot per il downtime e Wordfence per i tentativi di login falliti. In più, riceviamo avvisi via email per ogni file modificato nel wp-content. Se vuoi un approccio avanzato, leggi la nostra guida OSINT e Penetration Testing per capire come un attaccante ti vede.
In sintesi — cosa fare adesso
- Verifica il tuo wp-config.php: aggiungi le costanti DISALLOW_FILE_EDIT e FORCE_SSL_ADMIN.
- Blocca l'enumerazione utenti: aggiungi la regola .htaccess sopra.
- Attiva un plugin di sicurezza: Wordfence o Sucuri. Non più di uno.
- Configura backup giornalieri + test mensile: usa UpdraftPlus o ManageWP.
- Metti in sicurezza il login: cambia il prefisso, limita i tentativi, attiva 2FA.
- Non aggiornare mai senza staging: clona il sito, testa, poi pubblica.
Un sito sicuro è un sito che vende. Se hai bisogno di supporto, contattaci. Noi, di Meteora Web, mettiamo la stessa cura che mettiamo nei bilanci: niente fumo, solo numeri e risultati.