Proteggere ulteriormente WordPress: permessi, wp-config e .htaccess
Aggiornamenti, una password sicura e la verifica in due passaggi sono la base di un sito WordPress sicuro. Il rafforzamento (hardening) si aggiunge a questa base: configura il sito in modo che una vulnerabilità o un account compromesso possano causare meno danni. Qui trova quali sono queste impostazioni e come applicarle sul Suo pacchetto di hosting.
Cosa avviene già sul server
Una parte è già gestita sui nostri server. xmlrpc.php è bloccato per impostazione predefinita (WordPress: l'accesso a xmlrpc.php non funziona), le funzioni PHP pericolose sono disattivate (Sicurezza PHP: funzioni disattivate) e sono attivi un firewall per il traffico web e uno scanner antimalware. Consulti Web Application Firewall e Imunify360: scansionare il Suo sito web alla ricerca di malware. I passaggi seguenti li esegue Lei stesso, nel Suo sito.
Tutti i file si modificano in DirectAdmin con il File Manager. I file che iniziano con un punto, come .htaccess, sono visibili solo se mostra i file nascosti: consulti Mostrare e modificare file nascosti come .htaccess. Prima di tutto crei una copia di ogni file e la collochi fuori da public_html.
1. Nessuna modifica del codice dal pannello di amministrazione
Apra wp-config.php in domains/example.com/public_html e inserisca questa riga sopra la riga che indica la fine delle modifiche (That's all, stop editing!):
define( 'DISALLOW_FILE_EDIT', true );
Gli editor per i file dei temi e dei plugin scompaiono così dal pannello di amministrazione. Chi si impossessa di un account amministratore non potrà quindi inserire codice dannoso nel Suo tema con pochi clic. L'installazione e l'aggiornamento dei plugin continuano a funzionare normalmente. Nello stesso file imposti WP_DEBUG su false, in modo che i messaggi di errore non compaiano mai sullo schermo dei visitatori.
2. Nessun PHP nella cartella uploads
In wp-content/uploads vanno immagini e documenti, non PHP. Un intruso che riesce a caricare un file tramite una vulnerabilità cerca proprio lì di inserire un file PHP e di richiamarlo. Crei in wp-content/uploads un file .htaccess con:
<Files *.php> Require all denied </Files>
Verifichi poi che il Suo sito, i Suoi moduli e la Sua libreria media funzionino ancora.
3. Nessun elenco delle cartelle
Se in una cartella non è presente un file index.php o index.html, un server web può mostrare un elenco di tutti i file. Inserisca all'inizio del file .htaccess in public_html:
Options -Indexes
Per verificare, richiami una cartella senza file index, ad esempio https://example.com/wp-content/uploads/. Dovrebbe vedere una pagina di errore (403 o 404), non un elenco.
4. Permessi di file e cartelle
| Cosa | Permessi |
|---|---|
| Cartelle | 755 |
| File | 644 |
wp-config.php | Più restrittivi: 600 o 640. Provi 600 e verifichi che il Suo sito funzioni ancora. |
Non utilizzi mai 777: in quel caso chiunque sul server può scrivere in quella cartella. Se una guida afferma che è necessario per far funzionare il caricamento dei file, la causa è altrove. Per modificare i permessi, consulti Permessi di file e cartelle (chmod).
5. Nessun file residuo nella cartella web
Tutto ciò che si trova in public_html può essere richiamato via web. Per questo motivo elimini:
- le copie di
wp-config.php, comewp-config.php.bakowp-config.old. Contengono la password del Suo database e vengono inviate come testo normale; - i backup come
backup.zipodatabase.sql; - una cartella
.gitdi uno sviluppatore; wp-content/debug.log;- i file di test come
info.phpconphpinfo().
Se desidera rendere inaccessibile un singolo file, consulti Bloccare file tramite .htaccess.
6. Header e accesso
- Gli header di sicurezza indicano al browser come gestire il Suo sito. Consulti HSTS e header di sicurezza per il Suo sito web.
- La pagina di accesso può essere limitata al Suo indirizzo IP con Proteggere wp-login.php di WordPress.
- Verifica in due passaggi per gli amministratori: consulti Configurare la verifica in due passaggi per WordPress.
Nascondere la versione di WordPress è una questione di ordine, non di sicurezza: i programmi di attacco provano comunque a sfruttare una vulnerabilità. Solo l'aggiornamento chiude la vulnerabilità.
E un plugin di sicurezza?
Un plugin di sicurezza riunisce spesso un firewall, uno scanner e la protezione dell'accesso. Un firewall in un plugin funziona solo quando WordPress è già in esecuzione; il firewall sul server blocca le richieste prima. Un plugin è quindi un'integrazione, soprattutto per la verifica in due passaggi e per limitare i tentativi di accesso. Ne utilizzi al massimo uno: due plugin di sicurezza contemporaneamente entrano spesso in conflitto.
.htaccess o wp-config.php blocca l'intero sito. Consulti Errore 500 o "errore critico" sul Suo sito web (anche dopo un aggiornamento di WordPress).Approfondimenti
- Hardening WordPress (developer.wordpress.org, in inglese)
Desidera saperne di più? Segua il corso gratuito su WordPress, lezione 7.4 Rafforzare il sito: permessi, header e plugin di sicurezza.
