Vai al contenuto
BeoHosting
BeoHosting
WordPress

Impostazioni di sicurezza di WordPress che devi conoscere

BeoHosting Team··12 min read di lettura
Impostazioni di sicurezza di WordPress che devi conoscere

Perché la sicurezza di WordPress è fondamentale

Il CMS più usato alimenta più del 43% di tutti i siti su internet, il che lo rende il bersaglio più frequente degli hacker. Ogni giorno si verificano circa 90.000 attacchi ai siti WordPress. Gli hacker usano strumenti automatizzati che scansionano internet alla ricerca di siti con vulnerabilità note: non devi essere un bersaglio di alto profilo per essere attaccato. Basta un plugin obsoleto o una password debole.

La buona notizia è che puoi prevenire la maggior parte degli attacchi applicando alcune impostazioni di sicurezza di base. Non devi essere un programmatore o un esperto di sicurezza: tutto ciò che devi fare è seguire i passaggi collaudati di questa guida e applicarli al tuo sito.

Proteggere il file wp-config.php

wp-config.php è il file più importante del tuo sito WordPress. Contiene le credenziali del database, le chiavi di sicurezza, il prefisso delle tabelle e altre configurazioni fondamentali. Se un attaccante ottiene l'accesso a questo file, ha il controllo totale del tuo sito.

Spostare wp-config.php

WordPress cerca automaticamente wp-config.php nella directory immediatamente superiore alla root web. Questo significa che puoi spostare questo file da public_html/ alla directory superiore, dove non è accessibile tramite un browser web. È una delle misure di protezione più semplici ma più efficaci. Se il tuo hosting non consente l'accesso alla directory sopra public_html, contatta il supporto di cPanel.

Chiavi di sicurezza e salt

wp-config.php contiene 8 chiavi di sicurezza (AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY e le rispettive coppie SALT) che vengono usate per cifrare cookie e sessioni. Se queste chiavi sono quelle predefinite o sono vuote, le sessioni utente sono vulnerabili. Genera chiavi univoche dalla pagina WordPress.org Secret Key API e incollale in wp-config.php. Ruota periodicamente queste chiavi: in questo modo verranno automaticamente disconnessi tutti gli utenti e invalidati i cookie esistenti.

Disabilitare la modifica dei file

WordPress ha un editor integrato che permette di modificare i file PHP del tema e dei plugin direttamente dal pannello di amministrazione. È un enorme rischio per la sicurezza: se un attaccante ottiene l'accesso a un account amministratore, può iniettare codice malevolo direttamente tramite l'editor. Disabilitalo aggiungendo la riga define('DISALLOW_FILE_EDIT', true); a wp-config.php. Questo non impedisce gli aggiornamenti di plugin e temi, disabilita solo la modifica diretta del codice.

La modalità debug in produzione

Non lasciare mai WP_DEBUG attivo su un sito in produzione. La modalità debug mostra gli errori e gli avvisi PHP ai visitatori, rivelando informazioni sulla struttura del sito, sui percorsi dei file e sulle versioni del software. Imposta define('WP_DEBUG', false); in produzione. Se hai bisogno delle informazioni di debug, usa define('WP_DEBUG_LOG', true); insieme a define('WP_DEBUG_DISPLAY', false);, in modo che gli errori vengano registrati in un file anziché mostrati ai visitatori.

Permessi dei file

I permessi corretti dei file sono la prima linea di difesa a livello di server. Permessi sbagliati consentono agli attaccanti di leggere, modificare o eseguire i file sul tuo server.

Permessi consigliati

WordPress raccomanda i seguenti permessi: le directory dovrebbero essere 755 (il proprietario può leggere, scrivere ed eseguire; il gruppo e gli altri possono leggere ed eseguire), i file dovrebbero essere 644 (il proprietario può leggere e scrivere; il gruppo e gli altri possono solo leggere), wp-config.php dovrebbe essere 640 o 600 (solo il proprietario può leggere e scrivere). Non usare mai i permessi 777: significherebbe che chiunque sul server può leggere, scrivere ed eseguire i tuoi file.

Proteggere la directory wp-includes

La directory wp-includes contiene i file core di WordPress, che non dovrebbero mai essere accessibili direttamente. Aggiungi una regola al file .htaccess nella directory radice che blocchi l'accesso diretto ai file PHP in wp-includes. In questo modo si impedisce agli attaccanti di eseguire direttamente i file core, una tecnica comune negli attacchi a WordPress.

Proteggere la directory uploads

wp-content/uploads è l'unica directory in cui WordPress deve poter scrivere (per le immagini caricate, i documenti, ecc.). Gli attaccanti cercano spesso di caricare un file PHP malevolo travestito da immagine e poi di eseguirlo. Impediscilo aggiungendo una regola .htaccess alla directory uploads che vieti l'esecuzione dei file PHP. Così, anche se un attaccante riesce a caricare un file PHP, il server non lo eseguirà.

Disabilitare XML-RPC

XML-RPC (xmlrpc.php) è un protocollo più vecchio che permette ad applicazioni esterne di comunicare con WordPress. Era utile prima della REST API, ma oggi rappresenta un rischio significativo per la sicurezza.

Perché XML-RPC è pericoloso

XML-RPC è usato per due tipi di attacchi: gli attacchi brute force (un attaccante può testare centinaia di password in un'unica richiesta XML-RPC usando il metodo system.multicall, aggirando il rate limiting della pagina di login) e gli attacchi DDoS (la funzione pingback può essere sfruttata per attacchi DDoS di amplificazione in cui il tuo sito diventa parte di una botnet). La maggior parte delle funzionalità moderne di WordPress (app mobile, Jetpack) usa la REST API invece di XML-RPC.

Come disabilitare XML-RPC

Il modo più semplice è aggiungere una regola .htaccess che blocchi l'accesso al file xmlrpc.php e restituisca uno stato 403 Forbidden. In alternativa, usa il filtro in functions.php: add_filter('xmlrpc_enabled', '__return_false');. Questo disabilita la funzionalità XML-RPC ma consente comunque l'accesso al file (cioè il server elabora ancora la richiesta). Per un blocco completo, il metodo .htaccess è migliore.

Header di sicurezza

Gli header di sicurezza HTTP sono istruzioni che il server invia al browser per migliorare la sicurezza del sito. Implementare questi header non richiede modifiche al codice di WordPress: si aggiungono al file .htaccess o alla configurazione di nginx.

Content-Security-Policy (CSP)

L'header CSP controlla quali risorse il browser è autorizzato a caricare sulla tua pagina. È la protezione più potente contro gli attacchi XSS (Cross-Site Scripting), perché impedisce l'esecuzione di codice JavaScript non autorizzato. Inizia con l'header Content-Security-Policy-Report-Only per testare la policy senza bloccare le risorse, poi passa alla modalità di applicazione. Per WordPress, la configurazione della CSP può essere complessa a causa degli script inline e delle risorse esterne usate da temi e plugin.

X-Content-Type-Options

L'header X-Content-Type-Options: nosniff impedisce al browser di indovinare il tipo MIME di un file. Senza questo header, un attaccante può caricare un file malevolo con un'estensione errata e il browser cercherà di eseguirlo in base al contenuto anziché all'estensione. È un header semplice e senza effetti negativi: abilitalo sempre.

X-Frame-Options

L'header X-Frame-Options: SAMEORIGIN impedisce che il tuo sito venga caricato all'interno di un iframe su un altro sito. Protegge dagli attacchi di clickjacking, in cui un attaccante sovrappone un iframe trasparente del tuo sito sul proprio per ingannare gli utenti e indurli a cliccare qualcosa. SAMEORIGIN consente gli iframe solo dallo stesso dominio.

Strict-Transport-Security (HSTS)

L'header HSTS obbliga il browser a usare sempre una connessione HTTPS cifrata verso il tuo sito. Una volta che il browser riceve l'header HSTS, reindirizza automaticamente tutte le richieste HTTP a HTTPS senza contattare il server. Protegge dagli attacchi di SSL stripping. Usa Strict-Transport-Security: max-age=31536000; includeSubDomains (1 anno). IMPORTANTE: abilita HSTS solo dopo esserti assicurato che l'SSL funzioni correttamente su tutte le pagine.

Referrer-Policy

Referrer-Policy controlla quante informazioni il browser invia nell'header Referer quando un utente clicca su un link. Referrer-Policy: strict-origin-when-cross-origin invia l'URL completo per le richieste same-origin, solo l'origine per le richieste HTTPS cross-origin e niente per le richieste HTTP. Protegge la privacy degli utenti e impedisce che i parametri degli URL trapelino verso siti esterni.

Ulteriori impostazioni di sicurezza di WordPress

Cambiare l'URL di login

L'URL di login predefinito di WordPress è /wp-admin/ o /wp-login.php, che ogni attaccante conosce. Cambiare l'URL di login con qualcosa di non standard (ad esempio /il-mio-accesso/) elimina la maggior parte degli attacchi brute force automatizzati, perché i bot non troveranno la pagina di login. Usa un plugin come WPS Hide Login per un cambio facile senza modificare i file core.

Autenticazione a due fattori (2FA)

La 2FA aggiunge un secondo livello di protezione oltre alla password. Anche se un attaccante scopre la tua password, non può accedere all'account senza il secondo fattore (di solito un codice dal telefono). Usa un plugin come Google Authenticator o Wordfence Login Security per implementare la 2FA su tutti gli account amministratore. È una delle misure di protezione più efficaci: elimina praticamente tutti gli attacchi brute force e di credential stuffing.

Limitare i tentativi di login

WordPress consente per impostazione predefinita un numero illimitato di tentativi di login, il che rende possibili gli attacchi brute force. Usa un plugin come Limit Login Attempts Reloaded, che blocca un indirizzo IP dopo un certo numero di tentativi falliti (consigliati: 3-5 tentativi). Combinalo con un CAPTCHA sul modulo di login per una protezione aggiuntiva.

Aggiornamenti regolari

Questa è la misura di sicurezza più importante di tutte. L'86% dei siti WordPress compromessi usa una versione obsoleta di WordPress, del tema o di un plugin. Abilita gli aggiornamenti automatici per le versioni minori di WordPress (le patch di sicurezza) e controlla gli aggiornamenti di plugin e temi almeno una volta a settimana. Elimina i plugin e i temi inattivi, perché anche un plugin disattivato può avere una vulnerabilità sfruttabile.

Conclusione

La sicurezza di WordPress non è un'attività una tantum, ma un processo continuo. Applica le impostazioni di questa guida una per una: proteggi wp-config.php, imposta i permessi corretti dei file, disabilita XML-RPC, aggiungi gli header di sicurezza, cambia l'URL di login, abilita la 2FA e aggiorna tutto regolarmente. Ognuna di queste misure elimina un'intera categoria di attacchi. In BeoHosting, i nostri piani di hosting includono una protezione lato server preconfigurata che comprende un WAF ModSecurity, backup automatici e scansione anti-malware, ma la protezione lato server funziona al meglio in combinazione con un WordPress configurato correttamente.

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: