Un argomento molto importante quando si realizza un sito internet con WordPress è la sicurezza, ossia proteggere il sito WordPress da attacchi hacker. In questa guida ti spiegherò come mettere in sicurezza un sito WordPress, così da evitare attacchi di hacker, con un plugin molto efficiente: All In One Security.
L’installazione del plugin All in One Wp Security avviene come per tutti gli altri. Vai nella sezione PLUGIN > AGGIUNGI NUOVO e usa la brra di ricerca dei plugin per cercare All In One Security. Installa e attiva il plugin.
Bacheca
Dopo aver effettuato l’installazione del plugin All in One WP Security & Firewall troverai nella barra degli strumenti una nuova sezione chiamata Sicurezza WP. Clicca e ti apparirà la “Bacheca” iniziale del plugin in cui un indicatore in stile “cronometro”, visualizza immediatamente il livello di sicurezza attuale del tuo sito.
Scorrendo verso il basso la Bacheca troverai degli switch “On-Off” che evidenziano subito le maggiori criticità da mettere in sicurezza come l’eliminazione dell’utente admin, l’attivazione del blocco della login in caso di attacchi bruteforce, i permessi di lettura, scrittura ed esecuzione sui files più importanti e l’attivazione del firewall.
Sempre nella BAcheca iniziale del plugin troviamo diversi tab (le varie schede della bacheca) che ci danno altre preziose informazioni.
Il Tab “System Info” ci indica la versione di MySql utilizzata, la versione Php, i plugin presenti, etc.
I tab “Locked Ip Address” e “Permanent Block List” visualizzano rispettivamente gli indirizzi IP bloccati temporaneamente a seguito di tentativi di accesso non autorizzati e gli indirizzi bannati permanentemente per lo stesso motivo. Infine “AIOWPS Log” permette di visualizzare i log di sistema del sito.
Impostazioni
In quest’area troverai delle sezioni importanti per la gestione e la configurazione di base del plugin.
Nel primo Tab presente, “Impostazioni Generali”, potrai decidere di disabilitare le funzionalità del plugin, nel caso in cui sospettassimo che lo stesso possa essere causa di conflitto con altri plugin o, più in generale, provocasse il malfunzionamento del sito. Queste azioni vanno compiute una alla volta, verificando se attraverso la disabilitazione delle funzioni del plugin, il problema si risolva.
Come prima voce troviamo un invito ad eseguire i backup dell’.htaccess, del wp-config e dei database. Questo è importante per permetterci di ripristinare il corretto funzionamento del sito nel caso in cui le azioni elencate successivamente provocassero dei problemi. Suggerisco anche di salvare .htaccess e wp-config in locale ed esportare (sempre in locale) a mano i database dal phpmyadmin.
I campi successivi sono denominati:
- “Disabilita Funzioni Sicurezza”, che serve a disabilitare tutte le funzioni di sicurezza impostate con All in One WP Security & Firewall
- “Disabilita Tutte le Regole del Firewall”, che serve a disabilitare tutte le regole firewall impostate (le cancella anche dall’htaccess)
- “Debug Settings”, che se spuntata, provvede a creare un file di debug per controllare dove si verificano eventuali errori del software.
Il secondo Tab è “.htaccess File”. Da qui puoi eseguire un backup in locale del file .htaccess con un semplice click o ricaricarne uno funzionante precedentemente salvato.
Il terzo Tab della sezione Impostazioni è quello relativo al file “wp-config-php”. Questa sottosezione funziona esattamente come la precedente, solo che il file di cui si può fare il backup ed il ripristino, è il wp-config.
Terzo Tab: “Wp Version Info”. Qui è possibile, spuntando una semplice casellina, evitare che il meta con la versione di WordPress utilizzata venga visualizzata nella head del sito.
Tab “Importa/Esporta”: da qui, in maniera semplice e con la stessa procedura vista prima, puoi effettuare il backup in locale della configurazione del plugin o il ripristino da un file precedentemente esportato.
Account Utente
Qui il plugin All in One WP Security and Firewall ti permette di correggere alcuni errori molto comuni a livello di configurazione di utenti amministratori. Per impostazione predefinita, WordPress imposta il nome utente amministratore come “admin” al momento dell’installazione.
Un sacco di hacker cercano di approfittare di queste informazioni, tentando “Attacchi Brute Force Login” dove hanno più possibilità di indovinare la password utilizzando “admin ” per il nome utente.
Dal punto di vista della sicurezza, la modifica del valore predefinito nome utente “admin” è una delle prime e più intelligenti cose che dovresti fare sul tuo sito.
Questa funzione permette di cambiare il nome utente predefinito “admin ” in un nome più sicuro a tua scelta.
Il secondo Tab è “Nome Visualizzato” da cui si puoi cambiare il nome utente visualizzato e sceglierne uno diverso da quello con cui ci si logga da amministratore. Questo per non far individuare il nome dell’amministratore del sito a malintenzionati e bot. Lasciare il nome visualizzato sugli articoli identico a quello con cui ci si logga da amministratore, equivale a lasciare il nome utente admin ai malintenzionati.
Il terzo Tab, “Password”, è uno sfizio molto simpatico che serve a testare la robustezza della propria password. Si inserisce la password nell’apposito campo indicato e il plugin ci restituisce il livello di robustezza e il tempo stimato che impiegherebbero gli hacker ad individuarla.
Login Utente
Questa sezione ti permette di settare dei parametri per la messa in sicurezza della login, andando a mettere delle regole riguardo il numero di tentativi di accesso e permettendo la consultazione dei tentativi di accesso non autorizzati.
Il tab più importante è il primo: “Blocco Login”.
Spuntando la casella “Attiva Funzioni Blocco Login”, abilitiamo il sistema per monitorare i tentativi di accesso e impostare le misure difensive. La seconda voce, “Consenti Richieste di Sblocco”, serve a permettere agli utenti di ricevere una email per la richiesta di sblocco dell’account nel caso in cui un collaboratore del nostro blog, avendo dimenticato le credenziali, abbia effettuato un numero di tentativi di accesso sufficienti a far scattare il blocco.
“Max Tentativi Login” invece serve a definire il numero massimo dei tentativi di accesso prima di venire bannati.
“Tempo Tentativi Riprova Login (min)” imposta il tempo, in minuti, in cui se avvengono dei tentativi di accesso non autorizzati, l’IP di provenienza viene bloccato e non può più accedere al pannello della login.
“Tempo Durata Blocco (min” imposta il tempo che deve trascorrere, in minuti, prima che l’utente bloccato abbia di nuovo accesso al pannello della login.
“Mostra Messaggio Errore Generico”, se selezionato, restituisce all’utente bloccato un messaggio di errore “generico”. In pratica non gli fa sapere che è stato bannato temporaneamente per eccesso di tentativi falliti.
“Blocca immediatamente Nomi Utenti non validi”, se selezionato, blocca e banna temporaneamente sin dal primo tentativo tutti coloro che tentano di accedere al pannello di amministrazione del sito utilizzando un nome utente che non è mai stato registrato.
“Notifica via Email” invece permette di inserire la propria email per ricevere una notifica quando qualcuno viene bloccato.
Passiamo ora alla seconda Tab, “Record Login Falliti”, che consiste semplicemente in una schermata che visualizza i tentativi di accesso falliti, l’indirizzo IP di provenienza ed il nome utente utilizzato. Tanto per ricordare quanto sia necessario non utilizzare ed eliminare l’utente admin, diamo uno sguardo ad uno di questi report.
Il Tab successivo, “Forza Logout Utente”. In questa sottosezione puoi impostare un tempo massimo in cui l’amministratore può essere loggato. Al termine di questo periodo, il plugin All in One WP Security and Firewall forza la disconnessione e sarà necessario reinserire le credenziali per rientrare nella dashboard di WordPress. Per attivare questa funzionalità, basterà spuntare la casella “Attiva Logout WP Utente Forzato” ed inserire un numero di minuti nel campo “Disconnetti l’Utente WP Dopo XX Minuti”.
Il Tab “Account Attività Logs” è una vista che restituisce un elenco contenente informazioni circa gli accessi al sito, comprendendo: data, ora, nome utente, indirizzo Ip ed ID.
Il Tab “Utenti attualmente loggati” invece ci fa sapere chi sta loggato nel preciso istante in cui visualizziamo il contenuto di questa Tab.
Registrazione Utenti
Questa sezione contiene il Tab “Approvazione Manuale” in cui possiamo spuntare l’opzione “Attiva approvazione manuale di nuove registrazioni” e decidere che i nuovi utenti registrati siano approvati manualmente dall’amministratore del sito, il Tab “Impostazioni Captcha” Registrazione che se attivato inserisce un captcha sotto al modulo di registrazione di WordPress. Inoltre è presente il “Tab Registration Honeypot”: il concetto su cui si basa honeypot è che essendo un campo nascosto è collocato da qualche parte all’interno di una form che solo i robot possono compilare. Se questo campo contiene un valore quando il modulo viene inviato significa che è stato riempito da un robot e verrà affrontato di conseguenza. Per attivarlo basta spuntare il campo “Enable Honeypot On Registration Page”.
Sicurezza Database
La tab “Prefisso DB” ti permette di cambiare il prefisso delle tabelle di WordPress che di default è WP. In questo modo eviterai di dare un prezioso vantaggio a chi tenta di hackerare il tuo sito. Prima di procedere facciamo un bel backup del nostro database e poi procediamo al cambio del prefisso della tabella (se non lo abbiamo fatto in fase di creazione del nostro sito dal file config.php).
Il plugin permette di scegliere due modalità per il cambio prefisso: automatica o manuale. Con l’automatica sarà il plugin stesso a generare il prefisso. Inserendo il prefisso manualmente invece puoi decidere tu quale prefisso utilizzare. Compiuta l’operazione, il plugin andrà a sostituire il vecchio prefisso dei database WP_ con il nuovo prefisso.
Nella Tab “Backup DB” invece possiamo schedulare i backup del database, facendoceli arrivare via email. Si può decidere di fare un backup a mano tramite l’apposito pulsante azzurro “Crea nuovo Backup DB”, oppure automatizzare il tutto selezionando la voce “Attiva Programmazione Automatica Backup”. Se si opta per questa seconda soluzione dovrai settare l’intervallo di tempo tra un backup e l’altro, il numero di backup da conservare e l’indirizzo email a cui inviare il backup che è stato fatto.
Sicurezza File Sistema
Qui è possibile mettere in sicurezza i file più importanti per il funzionamento di WordPress. Il primo Tab, “Permessi File”, ci restituisce una vista con lo stato dei permessi dei files in lettura-scrittura-esecuzione. Se c’è qualche file che secondo All in One WP Security and Firewall ha permessi tali che non garantiscono la sicurezza necessaria contro le manomissioni, ce lo evidenzia e ci guida attraverso il settaggio dei giusti valori.
Il secondo Tab, “Modifica File PHP”, ti permette di disabilitare la visualizzazione dei file con estensione php dalla dashboard di WordPress. Ciò serve ad impedire ad un eventuale hacker che è riuscito a violare le nostre credenziali e ad entrare nel pannello di amministrazione, di modificare i files che si visualizzano quando si clicca sulla voce “Editor” sotto il menù “Aspetto”.
Dal Tab “Accesso File WP”, possiamo impedire l’accesso ai file readme.html, wp-config-sample.php e license.txt che contengono informazioni sulla versione di WordPress utilizzata. Basterà selezionare la casella “Disattivare la possibilità di modificare i file PHP”
Infine la Tab “Registro Sistema Host” permette di impostare una cartella personalizzata dove far confluire i file di log generati da WordPress. Il file di log possiamo scaricarlo con un client FTP ma volendo, possiamo visualizzarlo direttamente cliccando sul pulsante View Latest System Logs. Attenzione! Alcuni hosting hanno una cartella di destinazione dei log propria e non sono compatibili con questa funzionalità del plugin.
Ricerca WHOIS
Questa funzione consente di cercare informazioni più dettagliate su un indirizzo IP o nome di dominio tramite l’API WHOIS.
Gestione Blacklist
In questa sezione puoi inserire manualmente gli IP e gli spambot che vuoi bannare permanentemente. Questa modifica agisce direttamente sul file htaccess.
Firewall
Questa sezione permette di implementare un sistema di firewall che supplisce alle carenze di molti hosting economici che non forniscono questa funzionalità.
Il primo Tab è “Regole Firewall Base”. Inserendo la spunta su “Attiva Protezione Firewall Base” potrai:
- proteggere il file .htaccess negando l’accesso ad esso
- disattivare la firma del server
- limitare la dimensione dei file in upload ad un max di 10 MB
- proteggere il file wp-config.php negando l’accesso ad esso
In “WordPress XMLRPC & Pingback Vulnerability Protection”, potremo spuntare le voci “Completely Block Access To XMLRPC” e “Disable Pingback Functionality From XMLRPC“, ciò ti consentirà di difenderti da attacchi che sfruttano delle vulnerabilità del protocollo XML-RPC.
Attenzione!se si utilizzano Plugin che sfruttano l’XML-RPC, questa opzione andrebbe deselezionata perché potrebbe causare il malfunzionamento di alcuni di loro.
L’ultima voce, “Block Access to Debug Log File”, se spuntata nega l’accesso al file di log del debug che abbiamo impostato precedentemente nel “Debug Settings”.
Nella Tab “Regole Firewall Aggiuntive” troverai alcune voci da impostare. La prima voce, “Elenco Contenuti Directory”, va abilitata selezionando la casella “Disabilita Vista Index“, di modo da negare l’accesso alla lista dei file e delle cartelle contenute nel nostro sito.
“Tracciamento e Monitoraggio“, va anche questa abilitata spuntando la casella “Disattiva Tracciamento e Monitoraggio”, per prevenire attacchi di tipo XST (Cross Site Tracking).
“Proxy Pubblicazione Commenti” va abilitata ponendo la spunta sulla voce “Vieta Pubblicazione dei commenti via Proxy” ,di modo da inibire l’utilizzo dei commenti agli utenti che si servono di server proxy e che nel 99,9% dei casi sono spam.
“Stringhe Query Dannose” è la voce successiva da implementare. Una volta abilitata, pone una difesa contro gli attacchi XSS (Cross Site Scripting).
“Attiva Filtro Avanzato Stringa Caratteri” offre la possibilità di abilitare un filtro per le query formate da stringhe di caratteri, utilizzate di solito per portare attacchi XSS.
Il Tab “6G Blacklist Firewall Rules” permette di applicare dei filtri che impediscono di utilizzare caratteri speciali all’interno della url per portare attacchi Exploit (un codice che sfrutta bug o vulnerabilità per acquisire privilegi all’interno del sito) o per inserire nella url delle stringhe che possono rivelarsi dannose. Il 6G è una semplice lista nera che controlla tutte le richieste URI e le confronta con le direttive inserite dal plugin nell’htaccess. Se c’è un match tra la stringa e il contenuto dell’htaccess, il plugin blocca l’attacco. La voce Enable legacy 5G Firewall Protection contiene le implementazioni precedenti.
Nella Tab “Internet Bots” troviamo una casellina da spuntare per bloccare l’accesso al sito dei Falsi Googlebots.
Tab “Prevenzione Hotlinks”: a volte si può decidere, per alleggerire il proprio sito, di inserire delle immagini sfruttando la url di quella presente su un altro sito web. Basta cliccare con il tasto destro sulle immagini, copiare il link e incollarlo sul proprio sito. Questo genere un appesantimento della banda del sito da cui è stato prelevato il link dell’immagine. Con All in One WP Security and Firewall, da questa sezione, spuntando la casellina Prevent Image Hotlinking questa cosa si può impedire.
Il Tab successivo è “Rilevamento 404″. Serve a bannare quegli Ip dai quali provengono una certa quantità di accesso a pagine che non esistono (e che quindi restituiscono l’errore 404). Di solito i malintenzionati, praticano un attacco andando alla ricerca di una determinata URL, provocando richieste al server di un numero elevato di pagine in un brevissimo lasso di tempo. Questo tipo di attacchi il plugin lo isola attraverso la configurazione di questa sottosezione. Quindi andremo a spuntare la voce “Enable 404 IP Detection and Lockout” e stabilendo un lasso di tempo in minuti dentro il quale se si verificano molte pagine 404 provocate da un solo IP, questo viene reindirizzato sempre ad una pagina specifica scelta inserendo in “404 URL Reinderizzamento Blocco” un indirizzo a nostra scelta. Nella sezione, scorrendo in basso, possiamo anche visualizzare gli indirizzi utilizzati per l’attacco.
L’Ultima Tab di questa Sezione, “Regole Personalizzate”, ci da la possibilità di inserire delle regole firewall personalizzate.
Brute Force
Il primo Tab, “Rinomina Pagina Login“, permette di scegliere una url diversa rispetto a www.miosito.com/wp-login per accedere al pannello di amministrazione. Si deve spuntare la voce Attiva opzione Rinomina Pagina Login e poi scegliere una parola da mettere al posto di wp-login.
La seconda Tab si chiama “Prevenzione Brute Force basata su Cookie” e serve per inserire una parola segreta da digitare quando si accede al pannello di amministrazione del sito. Innanzi tutto bisogna spuntare la voce “Abilita Prevenzione Attacchi Brute Force“. Poi inserire la “Parola Segreta” e scegliere una pagina dove reindirizzare in caso di attacco. Più in basso due caselle da spuntare se il sito utilizza la funzione di protezione con password WordPress per visualizzare alcune pagine o se il vostro sito ha un tema o un plugin che utilizza Ajax. Nei due casi, queste ultime due selezioni dovranno essere abilitate perché altrimenti il plugin bloccherebbe queste funzionalità.
Il Tab “Captcha Pagina Login” serve ad inserire un Captcha alle pagine di login e di recupero password.
“Lista Bianca Login” serve a scegliere gli IP che potranno accedere al pannello di amministrazione, bloccando tutti gli altri. Bisogna innanzi tutto spuntare la casella per abilitare la funzione e trascrivere gli IP consentiti nel riquadro sotto la voce “Inserisci Indirizzi IP Whitelisted“.
Infine il Tab “Honeypot” se abilitato, inserisce un campo nascosto agli utenti ma visibile ai bot. Quando il bot scansiona il sito e compila i campi della login o dei commenti, trova anche questo campo nascosto e lo compila. Compilandolo rivela al server si essere uno spam bot e gli viene negato l’accesso.
Prevenzione Spam
Grazie a questa sezione potrai difenderti dallo spam. Il primo tab è “Commenti Spam”. Al suo interno avrai la possibilità di abilitare il Captcha sui form dei commenti e di attivare una protezione che blocca i commenti della maggior parte degli spambot.
La seconda Tab si chiama “Monitoraggio IP Commenti Spam” e ti permette di:
- specificare il numero di commenti minimi provenienti dallo stesso IP per essere considerati Spam ed essere bloccati permanentemente
- applicare un filtro per elencare gli indirizzi IP che sono stati utilizzati per produrre commenti spam
La seconda voce si abilita compilando il campo “Minimum number of SPAM comments” inserendovi 1 per elencare tutti gli IP che hanno prodotto commenti spam, oppure un valore numerico minimo per visualizzare solo gli IP che hanno prodotto più spam (ad esempio se mettiamo 10, il plugin visualizzerà solo quegli IP che hanno prodotto almeno 10 commenti spam).
Infine il tab “DubbyPress“, se utilizzi Buddy Press, ti consentirà di inserire un captcha nel suo form di registrazione.
Scanner
Questa sezione è dedicata al monitoraggio degli eventi sul sito. La prima Tab è “Rilevamento Modifiche File”. Abilitandola ed inserendo un indirizzo email, sarai avvisato ogni volta che un file del sito viene modificato. Questa funzione può essere settata in modo da rilevare le variazioni ogni tot. di giorni. Se nel frattempo hai aggiornato qualche plugin o il core di WordPress è normale ricevere una email con la notifica che il contenuto di alcuni files è cambiato.
Il Tab successivo ospita l’antivirus, ovvero “Scansione Malware”. E’ collegato ad un servizio esterno e per abilitarlo bisogna iscriversi al servizio.
Manutenzione
Questa sezione del plugin All in One WP Security and Firewall offre la possibilità di mettere il sito in modalità manutenzione, con tanto di messaggio di cortesia.
Altre Impostazioni
Il Tab “Protezione Copia” disabilita il tasto destro e l’opzione copia dal frontend del sito.
Il Tab “Frames” consente di impedire ad altri siti di visualizzare i tuoi contenuti tramite un frame o iframe. Se abilitata, questa funzione imposta il parametro “X-Frame-Options” a “sameorigin” nell’intestazione HTTP.
Il Tab “Users Enumeration”: WordPress enumera gli utenti assegnandogli un id in progressione. Utenti malintenzionati o bot potrebbero sfruttare questa caratteristica per risalire agli utenti. Mettendo la spunta su “Disable User Enumeration” risolveremo anche questo problema, restituendo alla richiesta una pagina “forbidden”.
Conclusione
Il consiglio è di provare All in One WP Security and Firewall. La semplicità di configurazione lo rende ideale anche per essere settato da utenti inesperti nonostante la sua alta protezione offerta. Un ottimo plugin per difendere il tuo sito WordPress da attacchi hacker.