C’e davvero bisogno di un plug-in per la sicurezza?
Diciamo la verità nella maggior parte dei casi questo tipo di plugin non serve. I plugin per la sicurezza WordPress sono software certamente utilissimi ma che tendono a appesantire particolarmente il server ed il sito, rallentandone il tempo di caricamento, quindi l’efficacia e in definitiva aumentando la frequenza di rimbalzo o diminuendo le conversioni. Inoltre la maggior parte dei siti in WordPress e di piccole dimensioni il che lo rende un sito che difficilmente sara attaccato in modo massivo da malintenzionati a caccia di dati sensibili (carte di credito, email, …) o da concorrenti sleali. Gli attacchi più frequenti sono per l’installazione di malware di varia natura sfruttando gli exploit propri del sistema WordPress o di uno dei tanti plugin che sono stati installati: in questo caso la finalità non e danneggiare il sito o rubare dati e informazioni, ma sfruttare le risorse del sistema a proprio piacimento, molte volte in modo del tutto invisibile all’occhio di un webmaster poco attento. Questo tipo di attacchi sono in effetti piuttosto facili da bloccare prendendo i dovuti accorgimenti.
Aggiornamenti frequenti
Dovrebbe essere inutile dirlo. Tenete aggiornati i vostri WordPress. Molte volte i sistemi non vengono aggiornati per pigrizia o per paura di fare qualche danno. In realtà, WordPress, come molti CMS, ha reso l’operazione molto semplice. Basta solo avere l’accortezza di effettuare un backup ogni volta. Noi consigliamo l’ottimo Akeeba Backup che crea pacchetti auto-installanti qualora ci fosse il bisogno di ripristinare il sistema.
Non installate troppi plugins
Come prima cosa e norma generale e bisognerebbe evitare di installare plugin da fonti sconosciute. Ricordate sempre che un plugin altro non e che un software realizzato in PHP spesso da sconosciuti (almeno per voi) viene aggiunto al vostro sito: in realtà non sapete né chi sono queste persone né come questo plugin sia stato scritto. Anche nel caso in cui non sia stata inserita volontariamente una backdoor, succede, purtroppo molto spesso, che una cattiva programmazione porti ad una vulnerabilità del plugin e del sistema intero. Quando installate un plugin, quindi, cercate di assicurarvi che sia stato realizzato secondo criteri di sicurezza e qualità anche leggendo le recensioni, informandovi sui forum e, in definitiva, anche analizzando il codice stesso del plugin.
Usare password sicure
Una di quelle cose che non entra mai in testa a nessuno, anche tra i nostri clienti: le password devono essere difficili. E non solo quelle. E la combinazione di nome utente e password a rendere sicuro il vostro accesso: niente nomi utente come “admin”, o uguale al nome del sito o al vostro nome. Usate un soprannome, un codice o una sequenza numerica che solo voi conoscete. Stessa cosa per la password: se proprio non volete utilizzare un password generator che crea una combinazione indecifrabile di caratteri, numeri e simboli, spesso troppo difficile da ricordare, provate ameno a combinare insieme un soprannome, il nome di un vostro amico (maiuscole e minuscole) a una data non troppo scontata, magari separandoli con un simbolo (#,$?…)
Proteggere il proprio WordPress
Come ha dimostrato l’ultima versione di WordPress anche un sito privo di plugin, ben aggiornato e mantenuto, non e al sicuro. Per proteggere un piccolo sito dagli attacchi più comuni non serve appesantire il sistema con troppi plugin, firewall e sistemi di sicurezza: bastano degli accorgimenti nel file .htaccess e nel file wp-config.php e un paio di modifiche al functions.php del tema.
Proteggere WordPress da .htaccess
Per chi non lo sapesse questo file da le istruzioni fondamentali al server e regola, tra le altre cose, gli accessi ai singoli file. Per aumentare la sicurezza del proprio sito e, spesso, sufficiente bloccare qualsiasi accesso web ad ogni file php presente nello spazio web salvo che non sia stato espressamente autorizzato ad essere eseguito. Lo snippet di codice che segue e da mettere in cima al vostro .htaccess e servirà a bloccare qualunque esecuzione via web di codice PHP. {code lang:text title:”HTACCESS blocco php” lines:false hidden:false}RewriteEngine OnRewriteCond %{REQUEST_FILENAME} .php$RewriteCond %{REQUEST_FILENAME} !/index[23]?.php$RewriteCond %{REQUEST_FILENAME} -fRewriteRule ^([^/]+/)*([^/.]+.)+php$ – [F]{/code} Il sistema e molto banale e prevede che voi autorizzate singolarmente tutti i file php che volete che siano eseguiti, bloccando istantaneamente l’esecuzione di ogni altro file php compreso il malware. Una volta bloccati tutti i file dovremo poi ricordarci, quindi, di abilitare tutti i singoli file che servono al normale funzionamento di WordPress uno per uno. Qualcuno magari potrà pensare che non serva autorizzare i file uno a uno, ma che possa essere sufficiente autorizzare tutti i file contenuti nella cartella wp-admin. Questo creerebbe una falla all’interno del nostro sistema dal momento che un attacco hacker potrebbe installare proprio in quella cartella un file alieno ed in quel caso sarebbe in grado di eseguirlo. Molto meglio perdere un po’ di tempo e trovare tutti i singoli file necessari al funzionamento di WordPress e autorizzarli uno a uno. Qui di seguito trovate il codice gia pronto. {code lang:text title:”HTACCESS autorizza solo wordpress” lines:false hidden:false}RewriteEngine On## Allowed filesRewriteRule ^wp-login.php$ – [L]#RewriteRule ^wp-signup.php$ – [L]## WORDPRESS ADMINRewriteRule ^wp-admin/about.php$ – [L]RewriteRule ^wp-admin/admin.php$ – [L]RewriteRule ^wp-admin/admin-ajax.php$ – [L]RewriteRule ^wp-admin/admin-footer.php$ – [L]RewriteRule ^wp-admin/admin-functions.php$ – [L]RewriteRule ^wp-admin/admin-header.php$ – [L]RewriteRule ^wp-admin/admin-post.php$ – [L]RewriteRule ^wp-admin/async-upload.php$ – [L]RewriteRule ^wp-admin/comment.php$ – [L]RewriteRule ^wp-admin/credits.php$ – [L]RewriteRule ^wp-admin/custom-background.php$ – [L]RewriteRule ^wp-admin/custom-header.php$ – [L]RewriteRule ^wp-admin/customize.php$ – [L]RewriteRule ^wp-admin/edit.php$ – [L]RewriteRule ^wp-admin/edit-comments.php$ – [L]RewriteRule ^wp-admin/edit-form-advanced.php$ – [L]RewriteRule ^wp-admin/edit-form-comment.php$ – [L]RewriteRule ^wp-admin/edit-link-form.php$ – [L]RewriteRule ^wp-admin/edit-tag-form.php$ – [L]RewriteRule ^wp-admin/edit-tags.php$ – [L]RewriteRule ^wp-admin/export.php$ – [L]RewriteRule ^wp-admin/freedoms.php$ – [L]RewriteRule ^wp-admin/import.php$ – [L]RewriteRule ^wp-admin/index.php$ – [L]RewriteRule ^wp-admin/install.php$ – [L]RewriteRule ^wp-admin/install-helper.php$ – [L]RewriteRule ^wp-admin/link.php$ – [L]RewriteRule ^wp-admin/link-add.php$ – [L]RewriteRule ^wp-admin/link-manager.php$ – [L]RewriteRule ^wp-admin/link-parse-opml.php$ – [L]RewriteRule ^wp-admin/load-scripts.php$ – [L]RewriteRule ^wp-admin/load-styles.php$ – [L]RewriteRule ^wp-admin/media.php$ – [L]RewriteRule ^wp-admin/media-new.php$ – [L]RewriteRule ^wp-admin/media-upload.php$ – [L]RewriteRule ^wp-admin/menu.php$ – [L]RewriteRule ^wp-admin/menu-header.php$ – [L]RewriteRule ^wp-admin/moderation.php$ – [L]RewriteRule ^wp-admin/ms-admin.php$ – [L]RewriteRule ^wp-admin/ms-delete-site.php$ – [L]RewriteRule ^wp-admin/ms-edit.php$ – [L]RewriteRule ^wp-admin/ms-options.php$ – [L]RewriteRule ^wp-admin/ms-sites.php$ – [L]RewriteRule ^wp-admin/ms-themes.php$ – [L]RewriteRule ^wp-admin/ms-upgrade-network.php$ – [L]RewriteRule ^wp-admin/ms-users.php$ – [L]RewriteRule ^wp-admin/my-sites.php$ – [L]RewriteRule ^wp-admin/nav-menus.php$ – [L]RewriteRule ^wp-admin/network.php$ – [L]RewriteRule ^wp-admin/options.php$ – [L]RewriteRule ^wp-admin/options-discussion.php$ – [L]RewriteRule ^wp-admin/options-general.php$ – [L]RewriteRule ^wp-admin/options-head.php$ – [L]RewriteRule ^wp-admin/options-media.php$ – [L]RewriteRule ^wp-admin/options-permalink.php$ – [L]RewriteRule ^wp-admin/options-reading.php$ – [L]RewriteRule ^wp-admin/options-writing.php$ – [L]RewriteRule ^wp-admin/plugin-editor.php$ – [L]RewriteRule ^wp-admin/plugin-install.php$ – [L]RewriteRule ^wp-admin/plugins.php$ – [L]RewriteRule ^wp-admin/post.php$ – [L]RewriteRule ^wp-admin/post-new.php$ – [L]RewriteRule ^wp-admin/press-this.php$ – [L]RewriteRule ^wp-admin/profile.php$ – [L]RewriteRule ^wp-admin/revision.php$ – [L]RewriteRule ^wp-admin/setup-config.php$ – [L]RewriteRule ^wp-admin/term.php$ – [L]RewriteRule ^wp-admin/theme-editor.php$ – [L]RewriteRule ^wp-admin/theme-install.php$ – [L]RewriteRule ^wp-admin/themes.php$ – [L]RewriteRule ^wp-admin/tools.php$ – [L]RewriteRule ^wp-admin/update.php$ – [L]RewriteRule ^wp-admin/update-core.php$ – [L]RewriteRule ^wp-admin/upgrade.php$ – [L]RewriteRule ^wp-admin/upgrade-functions.php$ – [L]RewriteRule ^wp-admin/upload.php$ – [L]RewriteRule ^wp-admin/user-edit.php$ – [L]RewriteRule ^wp-admin/user-new.php$ – [L]RewriteRule ^wp-admin/users.php$ – [L]RewriteRule ^wp-admin/widgets.php$ – [L]RewriteRule ^wp-content/plugins/jch-optimize/assets/jscss.php$ – [L]RewriteRule ^wp-content/plugins/jch-optimize/assets2/jscss.php$ – [L]RewriteRule ^wp-content/plugins/jch-optimize/assets3/jscss.php$ – [L]RewriteRule ^wp-content/plugins/jch-optimize/assets/modrewrite.php$ – [L]RewriteRule ^wp-content/plugins/jch-optimize/assets2/modrewrite.php$ – [L]RewriteRule ^wp-content/plugins/jch-optimize/assets3/modrewrite.php$ – [L]{/code} Buona norma, poi, e bloccare qualunque accesso diretto alla cartella wp-includes, al file wp-config.php e dal file .htaccess stesso cosi che nessuno dall’esterno possa riuscire a modificarlo. {code lang:text title:”HTACCESS protezione wp-config.php” lines:false hidden:false}RewriteEngine OnRewriteBase /RewriteRule ^wp-admin/includes/ – [F,L]RewriteRule !^wp-includes/ – [S=3]RewriteRule ^wp-includes/[^/]+.php$ – [F,L]RewriteRule ^wp-includes/js/tinymce/langs/.+.php – [F,L]RewriteRule ^wp-includes/theme-compat/ – [F,L]# Deny access to wp-config.php fileorder allow,denydeny from allorder allow,denydeny from allsatisfy all{/code} Una volta che avete blindato in questo modo il vostro sito potrete dormire relativamente tranquilli sul fatto che nessuno eseguirà del malware sul vostro sito. Questa operazione pero non basta. Generalmente io aggiungo dei criteri di ridondanza, inserendo nella cartella wp-content un file .htaccess che permette l’apertura dei soli files statici e all’interno della cartella uploads un ulteriore file .htaccess che blocca l’esecuzione di qualunque php. {code lang:text title:”HTACCESS /wp-content” lines:false hidden:false}Order deny,allowDeny from allAllow from all{/code} {code lang:text title:”HTACCESS /uploads” lines:false hidden:false}deny from all{/code} Questo perché nella maggior parte dei casi gli attacchi si concentrano proprio su queste due cartelle e, quindi, aggiungere parametri di sicurezza ridondanti e buona norma.
Disabilitare l’editing di tema e plugin da backend
Altro piccolo intervento di sicurezza che si può fare per tenere al sicuro il proprio WordPress e bloccare la possibilità di editare i file php di tema e plugin direttamente dal pannello di amministrazione. Capisco che per molti di voi questa funzionalità possa rappresentare un certo grado di comodità, ma e anche fonte di insicurezza dal momento che, se qualche malintenzionato avesse accesso al vostro account, potrebbe intervenire manualmente sui singoli file del tema o dei plugin modificandoli a suo piacimento. Questa funzionalità, in fondo non necessaria di WordPress, si blocca inserendo all’interno del file wp-config.php la seguente linea di codice. {code lang:php title:”BLOCCO EDITING DA BACKEND” lines:true hidden:false}define(‘DISALLOW_FILE_EDIT’, true);{/code}
Bloccare le api di XMLRPC.php
Infine si può rendere ancora più sicuro il nostro sistema WordPress bloccando le api xmlrpc che nella maggior parte dei casi non servono. Entrate nel vostro file functions.php inserite la seguente linea di codice che blocca tutte le api e per maggiore sicurezza potrete inserire anche nel file .htaccess il blocco del file stesso che le gestisce. {code lang:php title:”BLOCCO API WORDPRESS” lines:true hidden:false}add_filter(‘xmlrpc_enabled’, ‘__return_false’);{/code} {code lang:text title:”HTACCESS blocco XMLRPC” lines:false hidden:false}order deny,allowdeny from all{/code} Chi avesse installato Jetpack o chi volesse utilizzare WordPress.com per editare il proprio sito non può bloccare questa funzionalità in quanto queste due funzioni utilizzano ampiamente le api. Tutti gli altri possono disattivarle tranquillamente dal momento, che non usandole, sono soltanto un inutile consumo di risorse oltre che fonte e sorgente di un possibile attacco.
Attivare mod_security
Infine ricordatevi di attivare il mod_security dal pannello di amministrazione del vostro hosting e per, chi può farlo, riducete il numero di tentativi di login in un minuto prima del ban del IP in modo da scongiurare i bruteforce attacks.
Proteggere WordPress con i plugin.
Chi non volesse smanettare con il codice, non avesse accesso diretto ai files oppure desiderasse avere un ulteriore livello di sicurezza sul proprio sito, potrebbe fare ricorso ad uno dei plug-in per la sicurezza disponibili. Generalmente sconsiglio di installarne più di uno visto che questo risulterebbe in un affaticamento inutile del vostro server, soprattutto se vi trovate su un condiviso. All’interno del marketplace dei plugin di WordPress ci sono delle ottime soluzioni per rendere piu sicuro il vostro sito:
- Wordfence, firewall e antimalware gratuito (disponibile anche in versione premium) vi avvisa di ogni tentativo di login sia di quelli che hanno successo, sia di quelli che non hanno successo ed e in grado, anche a cadenze pianificate, di analizzare tutti i files presenti all’interno del vostro spazio web alla ricerca di malware e, come un vero e proprio antivirus, di rimuovere i file infetti o metterli in quarantena. Il sistema offre una protezione eccellente a scapito della performance del sito che tende a rallentare un po’ soprattutto quando gli accessi sono numerosi.
- Altro plugin che generalmente si usa e Sucuri disponibile una versione gratuita che nella versione a pagamento. C’e da notare pero che, mentre wordfence anche nella versione gratuita offre un ottimo grado di protezione, Sucuri nella versione gratuita e abbastanza inutile mentre quando si passa alla versione a pagamento, che pero e piuttosto cara, si ottiene un livello di protezione molto superiore a quello di Wordfence.
Questi questi sono soltanto dei possibili plug-in per la sicurezza che potresti installare ma come dicevo qualche riga sopra, spesso del tutto superflui. Su siti che non fanno raccolta di dati personali o che non sono bersaglio potenziale di attacchi mirati e intenzionali, possono essere sufficienti le modifiche che vi abbiamo indicato in questo articolo per mettere in sicurezza il vostro sito web. Sentitevi liberi di indicare qui sotto nei commenti quali sono le vostre strategie per rendere sicuro il vostro sito WordPress e per suggerire quali plugin secondo voi sono i migliori.