Sicurezza WordPress. Ecco la checklist (quasi) definitiva.

Condividi
Condividi su linkedin
LinkedIn
Condividi su facebook
Facebook
Condividi su twitter
Twitter
Condividi su whatsapp
WhatsApp
Condividi
Condividi su linkedin
Condividi su facebook
Condividi su twitter
Condividi su whatsapp
Sicurezza WordPress. Come proteggersi con la firewall checklist da attacchi DDoS, Brute force, SQL Injection, Malware e Cross Site Scripting.
Cosa troverai in questo articolo

Quando dico ai miei Clienti che quotidianamente il Sito Web è subissato da attacchi Brute Force o tentativi malevoli di ogni genere, la reazione è sempre più o meno la solita.

Stupore assoluto e incredulità … Cosaaaaa?!

Non importa l’Autority Score di un Sito Web, non importa se il Brand è blasonato, famoso, conosciuto; anche un piccolo Sito vetrina o “one-page” può subire lo stesso trattamento … anzi.

Basta, infatti, installare un WAF (Web Application Firewall) qualsiasi per rendersi conto della pericolosa questione.

Mettere in sicurezza WordPress. Report WAF o firewall interno Mettere in sicurezza WordPress. Report WAF o firewall interno[/caption]

Come puoi vedere, nell’immagine precedente, il report generato dal firewall non mente mai. Per l’esattezza, il blocco sulla sinistra è relativo ad un piccolo Sito Web di un’azienda edile, mentre il secondo appartiene ad un Sito Web multi-lingua di una medio-grande impresa italiana.

La differenza? Solo i numeri certo ma … dal Marocco, 10 tentativi di hackeraggio di un piccolo Sito Web???

Proteggersi diventa, quindi, quanto mai fondamentale al netto però di sapere come fare e di comprendere che, purtroppo, solo un White Hat (volgarmente detto hacker buono) esperto può contrastare un Black Hat esperto (il contrapposto, ovvero l’hacker cattivo).

Con questo, non voglio allarmare nessuno, semplicemente vuol essere una presa di coscienza del fatto che, nel mondo della sicurezza informatica, i signori sopra citati ricoprono figure di massimi esperti e, dunque, nel caso di un attacco da parte del “lato oscuro“, servono non solo gli accorgimenti che vedremo di seguito ma anche e soprattutto tanta, tanta esperienza, competenza e … una buona dose di Forza.

Un pochino come … giocare una partita vitale a scacchi.

Sicurezza WordPress. Perché WordPress?

Premessa fatta, entriamo nel vivo della questione su come mettere in sicurezza WordPress.

WordPress è il miglior CMS di sempre, il più utilizzato al mondo, infatti ben il 40% dei Siti Web sono realizzati con questo Content Management System.

Questo dato non stupisce poiché è un applicativo di facile utilizzo, open-source e che conta all’attivo, migliaia di estensioni fra plugin e temi.

Tuttavia, per propria natura, è un prodotto costantemente migliorabile e, dunque, comprensivo di bug, vulnerabilità e passibile di attacchi.

Non basta installarlo, configurarlo e … tanti cari saluti. Dobbiamo coccolarlo ed accudirlo ogni giorno perché ogni giorno corriamo il rischio di vedere devastato il nostro lavoro.

Proprio per queste sue caratteristiche, dunque, attira hacker e pirati informatici come un un vasetto di miele farebbe con un orso.

Dati alla mano, circa il 70% dei Siti Web planetari NON adotta neppure una pratica corretta di protezione informatica di base come, ad esempio, un firewall interno.

Allarmante … non credi?!

Sicurezza WordPress. Quali possibili attacchi?

Sono talmente tanti che sarebbe impossibile elencarli tutti. Mi limiterò, quindi, a presentarti quelli più noti e graditi agli hackers.

DDoS Attacks

Il classico attacco DDoS (Distributed Denial of Service) si verifica quando il server dove risiede il Sito Web viene letteralmente bombardato da un numero elevatissimo di richieste provocandone l’arresto anomalo.

Questo tipo di attacco richiede specifiche competenze, collaborazioni ed organizzazione fra gli hackers e, di solito, mira a medio-grandi aziende come ad esempio Amazon, Netflix ecc.

In ogni caso … da non sottovalutare mai.

Brute Force Attacks

L’attacco più comune, quello che viene portato principalmente su qualsiasi Sito Web sprovvisto di firewall interno e che mira unicamente a quella parte, potenzialmente, debole: la tua password!

Il Brute Force Attack non è null’altro che un tentativo di combinazioni ripetute al fine di “trovare” la password corretta per entrare nel sistema.

SQL Injection Attacks

Un altro di quegli attacchi preferiti dagli hacker. Chi lo pratica cerca di entrare all’interno di un Sito Web e di manipolare il database MySQL, utilizzando stringhe di codice chiamate Query SQL.

Da notare che qualsiasi Sito Web che abbia al suo interno applicazioni come un modulo di ricerca o un form di contatto (quindi tutti!) ma non un firewall interno, diventa naturalmente un possibile soggetto preferito per un tentativo di attacco SQL Injection.

Cross Site Scripting

Il Cross Site Scripting, conosciuto anche come attacco XSS è un tentativo di hackeraggio silenzioso che attraverso codice JavaScript, tenta di recuperare informazioni sensibili o di generare un redirect passivo.

Comuni attacchi XSS sono ad esempio, le iscrizioni alle newsletter, la partecipazione a forum ecc.

Malware

Semplicemente (ma non troppo) codice infetto che danneggia pagine, articoli e tutto ciò che trova.

Pharma Hack

Questo hack, lavora su versioni obsolete di Siti Web e plugin di WordPress, con il fine di far restituire, ai motori di ricerca, annunci di prodotti farmaceutici quando viene eseguita una ricerca. Più SPAM che altro, è comunque passibile di sanzionamenti e blocchi da parte di Google.

Insomma … mettere in sicurezza WordPress, diventa prioritario!

Sicurezza WordPress. Il server prima di tutto.

Dopo aver visto perché e in che modo un Sito Web può essere hackerato, vediamo ora come potersi difendere al meglio per proteggere il nostro brand, il lavoro fatto, i dati e mettere in sicurezza WordPress.

Va fatta, però, una doverosa premessa.

Investi su un hosting professionale!

Prima ancora di poter capire come agire sul tuo Sito Web, è bene capire che esistono, no anzi, dovrebbero esistere, accorgimenti di sicurezza anche e soprattutto lato server, ovvero lì, dove WordPress è ospitato.

La scelta di un hoster professionale, performante e affidabile, coma lo sono Keliweb e SiteGround può fare la differenza tra un Sito Web potenzialmente e sicuramente hackerabile e uno potenzialmente ma difficilmente compromettibile.

Non lesinare sulla scelta del server, investi, spendi il giusto, anche se sicuramente di più rispetto a quanto offerto dai pessimi servizi gratuiti.

Il protocollo corretto esige infrastrutture potenti e sofisticate in grado di sorreggere attacchi di ogni tipo. Questo, dunque, comporta l’uso di un hardware avanzato e correttamente impostato, comporta aggiornamenti costanti del software dell’ambiente che ospita il Sito Web e dei relativi linguaggi di programmazione e infine, ma non ultimo, l’implementazione di potenti firewall lato server.

ATTENZIONE!! Tutti i provider ti diranno che sono sicuri ma fidati … pochi lo sono davvero!

Quindi, prima che sia troppo tardi, inizia a pensare di cambiare il tuo fornitore di servizi hosting.

Sicurezza WordPress. Un firewall prima di tutto.

Prima di addentrarci nello specifico delle azioni da (e)seguire e subito dopo aver parlato dell’importanza dei server che ospitano un Sito Web, la cosa che deve essere chiara, assolutamente, è che oggi un Sito Web NON può vivere senza un firewall interno.

Ma cos’è un firewall anche noto come WAF (Web Application Firewall)? Semplicemente una(la) barriera tra il tuo Sito e il mondo esterno.

Un potente quanto necessario filtro che controlla e blocca tutti i tentativi di accesso o intrusione malevola sul tuo Sito Web.

Un Sito senza firewall è come Tony Stark senza armatura (+o-) 🙂

Ne esistono di svariati tipi, hardware, server, software, per applicazioni specifiche ecc. Tuttavia, per quanto riguarda il nostro caro WordPress parliamo di servizi cloud e plugin freemium ovvero gratuiti ma con opzioni premium.

I migliori in assoluto sono senza dubbio Wordfence e Sucuri. Eccezionali entrambi, diversi per operatività.

Wordfence lavora in locale, sul Sito Web stesso, ha un WAF o firewall interno è facile da configurare ed offre funzionalità premium e un servizio a pagamento per recupero Siti Web infetti.

Sucuri è molto potente su attacchi DDoS ed offre soluzioni lato cloud, quindi se vogliamo più performanti e sicure poiché la filtrazione avviene esternamente al tuo Sito Web. Tuttavia, non ha un WAF o firewall gratuito ma dispone di un servizio recupero Siti Web illimitato.

Quindi, qui la scelta è anche un pochino soggettiva e dipendente dall’investimento possibile ma se la tua esigenza non è quella di recuperare subito un Sito Web compromesso, allora puoi anche valutare l’uso di un firewall free come Wordfence.

In ogni caso … installane subito uno!

Sicurezza WordPress. La checklist (quasi) definitiva!

Ed eccoci arrivati alla nostra checklist! QUASI? Eh si dai … esistono altre attività più o meno note da attuare per mettere in sicurezza WordPress e comunque la sicurezza informatica è un campo in continua evoluzione ed ecco perché, questo articolo sarà costantemente aggiornato.

Ciò nonostante, quella che vedi qui è sicuramente la lista delle attività primarie e necessarie che dovrebbero essere espletate al fine di proteggere il proprio Sito e mettere in sicurezza WordPress.

Si parte …

Server/Hosting

#01 | DISABILITA FTP, USA SFTP
#02 | NON SALVARE MAI LE PASSWORD SFTP
#03 | IMPOSTA LA CARTELLA /BOOT COME SOLA LETTURA
#04 | MONITORA LE ATTIVITÀ DEGLI UTENTI CON PSACCT O ACCT
#05 | VERIFICA O INSTALLA FAIL2BAN
#06 | DISABILITA ALCUNE FUNZIONI NEL FILE PHP.INI
#07 | LOCKDOWN CRONJOBS
#08 | DISABILITA L’INDICIZZAZIONE DELLE DIRECTORY
#09 | RIMUOVI I DESKTOP KDE/GNOME
#10 | CONTROLLA LE PORTE DI RETE IN ASCOLTO
#11 | ELIMINA I FILE README/INDEX/LICENSE
#12 | ABILITA IPTABLES (FIREWALL)

Database

#13 | CAMBIA IL PREFISSO DELLE TABELLE
#14 | USA PASSWORD ESTREMAMENTE FORTI
#15 | SCHEDULA I BACKUP

Hardening WordPress

#16 | AGGIUNGI/AGGIORNA GLI HEADERS HTTP DI SICUREZZA
#17 | USA PROTOCOLLI HTTPS E CERTIFICATI SSL
#18 | CAMBIA LA URL DEL LOGIN
#19 | IMPLEMENTA IL LIMIT LOGIN ATTEMPTS
#20 | ABILITA IL TWO-FACTOR AUTHENTICATION (2FA)
#21 | USA PASSWORD COMPLESSE
#22 | CAMBIA LE CREDENZIALI REGOLARMENTE
#23 | CAMBIA I MESSAGGI GENERICI DEGLI ERRORI DI LOGIN
#24 | USA SOLO PLUGIN CERTIFICATI
#25 | AGGIORNA SEMPRE I PLUGIN DI WORDPRESS
#26 | ELIMINA PLUGIN NON USATI
#27 | USA SOLO TEMI CERTIFICATI
#28 | AGGIORNA SEMPRE I TEMI DI WORDPRESS
#29 | ELIMINA I TEMI NON USATI
#30 | NASCONDI LA VERSIONE DI WORDPRESS
#31 | BLOCCA L’ENUMERAZIONE DEGLI UTENTI
#32 | DISABILITA XML-RPC E REST API
#33 | USA I PERMESSI CORRETTI PER FILE E CARTELLE
#34 | SPOSTA IL FILE WP-CONFIG.PHP
#35 | DISABILITA LA SCRITTURA DEI FILE NEL BACKEND
#36 | PREVIENI L’HOTLINKING
#37 | DISABILITA L’ESECUZIONE PHP NELLA CARTELLA UPLOADS

Server/Hosting

#01 | Disabilita FTP, usa SFTP

Assicurati che il servizio FTP sia attivo, altrimenti non potrai raggiungere il Sito Web tramite un client FTP ma, dal pannello di controllo del server (cPanel ad esempio) abilita solo quella SFTP (SSH File Transfer Protocol). La procedura non è complicata ma serve, comunque, uno skill di partenza.

In cPanel, accedi ad Accesso shell SSH, genera una chiave criptata e poi autenticala. Una volta archiviata in locale, servirà a configurare il client FTP come Filezilla per l’accesso SFTP.

Ti posto qui il link alla procedura guidata di SiteGround ma, nel caso, chiedi supporto o verifica al tuo provider per mettere in sicurezza WordPress.

#02 | Non salvare mai le password SFTP

Le opzioni di configurazione del client FTP come Filezilla, sono diverse e vanno dalla semplice “Normale” in cui vengono inserite preventivamente username e password di accesso, fino a quella “Richiedi” dove la password viene richiesta (appunto) in fase di collegamento.

A fronte di evitare “furti” da parte dei malware … è consigliata quest’ultima opzione.

#03 | Imposta la cartella /boot come sola lettura

Se il tuo server usa Linux/Unix, allora è vivamente consigliato il settaggio dei permessi della cartella boot (quella dove risiede il kernel di Linux e i relativi file), che è di default lettura-scrittura, a sola lettura.

Per far questo, apri il file /etc/fstab.

# vi /etc/fstab

Aggiungi in basso la seguente linea, salva e chiudi.

LABEL=/boot /boot ext2 defaults,ro 1 2

Se non hai accesso al server, chiedi supporto o verifica al tuo provider per mettere in sicurezza WordPress.

#04 | Monitora le attività degli utenti con psacct o acct

Se hai molti utenti che lavorano sul server, per sicurezza puoi monitorarne le attività utilizzando gli strumenti chiamati “psacct” e “acct“.

Vengono eseguiti in background sul server e tengono traccia delle attività e delle risorse consumate da servizi come Apache, MySQL, SSH, FTP, ecc.

Se non hai accesso al server, chiedi supporto o verifica al tuo provider per mettere in sicurezza WordPress.

#05 | Verifica o installa Fail2ban

Fail2ban è uno strumento di sicurezza scritto in Python e serve per proteggere i server dagli attacchi Brute Force e con l’opzione per bloccare gli IP indesiderati.

Comunemente installato quasi ovunque, se non hai accesso al server, chiedi supporto o verifica al tuo provider per mettere in sicurezza WordPress.

#06 | Disabilita alcune funzioni nel file php.ini

Il file php.ini contiene tutte le informazioni e le istruzioni dei vari moduli con cui l’interprete del linguaggio è stato compilato. Le seguenti funzioni show_source, popen, shell_exec, proc_open, phpinfo, passthru sono quelle che maggiormente vengono colpite o usate durante un attacco.

Sarebbe cosa buona disabilitarle tutte ma ciò dipende dalla configurazione del tuo server.

Quindi a meno che tu non abbia completo controllo, chiedi supporto o verifica al tuo provider per mettere in sicurezza WordPress.

#07 | Lockdown Cronjobs

Cron è un’utilissima funzione in grado di gestire e programmare le attività per ogni singolo utente. Potrebbe essere necessario, per sicurezza, limitarne l’uso al solo amministratore oppure disabilitarlo per chiunque.

Questo controllo avviene attraverso l’uso di due specifici file chiamati /etc/cron.allow e /etc/cron.deny. Nel primo vengono specificati gli utenti che possono eseguire attività, nel secondo, ovviamente, quelli bloccati.

Per bloccare chiunque, basta inserire la riga seguente all’interno del file cron.deny.

# echo ALL >>/etc/cron.deny

Se non hai accesso al server, chiedi supporto o verifica al tuo provider per mettere in sicurezza WordPress.

#08 | Disabilita l’indicizzazione delle directory

L’indicizzazione delle cartelle, genera quel fastidioso quanto pericoloso elenco, visibile da browser quando la relativa URL viene chiamata.

Inutile dire che è davvero pratica pericolosa ma che si può risolvere facilmente, aggiungendo una semplice riga nel file .htaccess situato nella cartella principale del proprio Sito Web.

Options –Index

Facile da raggiungere, semplice da modificare ma, nel caso, chiedi supporto o verifica al tuo provider per mettere in sicurezza WordPress.

#09 | Rimuovi i desktop KDE/GNOME

Se utilizzi solo server LAMP dedicati, i desktop X Window come KDE o GNOME non servono a nulla. Ragion per cui, per sicurezza, puoi rimuoverli o disabilitarli senza problemi.

Per farlo, apri il file /etc/inittab e imposta il livello di esecuzione su 3. Per eliminarli completamente, utilizzare il seguente comando:

# yum groupremove "X Window System"

Se non hai accesso al server, chiedi supporto o verifica al tuo provider per mettere in sicurezza WordPress.

#10 | Controlla le porte di rete in ascolto

netstat è un utilissimo comando di rete che permette di controllare e verificare tutte le porte aperte e i programmi associati.

# netstat -tulpn

Se non hai accesso al server, chiedi supporto o verifica al tuo provider per mettere in sicurezza WordPress.

#11 | Elimina i file readme/index/license

L’installazione standard di WordPress prevede la creazione di alcuni file html/txt che si trovano nella cartella principale del Sito Web.

Non servono a nulla e possono essere usati come trampolino e, per questo, puoi cancellarli tranquillamente.

Se non hai accesso al server, chiedi supporto o verifica al tuo provider per mettere in sicurezza WordPress.

#12 | Abilita Iptables (Firewall)

Firewall Linux che ti raccomando di abilitare al fine di proteggere l’accesso non autorizzato ai server. Con Iptables è possibile filtrare i pacchetti in entrata, in uscita e di inoltro. Inoltre, possiamo specificare un indirizzo di origine e di destinazione per controllare specifici numeri di porte udp/tcp.

Se non hai accesso al server, chiedi supporto o verifica al tuo provider per mettere in sicurezza WordPress.

Database

#13 | Cambia il prefisso delle tabelle

wp_ classico, standard, noto. Bene, dimenticatelo!

Se stai per creare un nuovo DB allora cerca di usare un prefisso creativo e più articolato. Potrebbe essere, ad esempio, 12SiW03k_

In automatico verrà inserito nel file di configurazione wp-config.php.

Il problema più grosso si ha quando, al contrario, il Database esiste già e, magari, ha anche tabelle extra WordPress generate da plugin vari.

In questo caso, bisogna agire a mano tramite comandi SQL in phpMyAdmin. Le tabelle da modificare sono le 12 standard di WordPress ma, ovviamente anche tutte le altre generate da software di terze parti.

RENAME table 'wp_commentmeta' TO '12SiW03k_commentmeta';
RENAME table 'wp_comments' TO '12SiW03k_comments';
RENAME table 'wp_links' TO '12SiW03k_links';
RENAME table 'wp_options' TO '12SiW03k_options';
RENAME table 'wp_postmeta' TO '12SiW03k_postmeta';
RENAME table 'wp_posts' TO '12SiW03k_posts';
RENAME table 'wp_terms' TO '12SiW03k_terms';
RENAME table 'wp_termmeta' TO '12SiW03k_termmeta';
RENAME table 'wp_term_relationships' TO '12SiW03k_term_relationships';
RENAME table 'wp_term_taxonomy' TO '12SiW03k_term_taxonomy';
RENAME table 'wp_usermeta' TO '12SiW03k_usermeta';
RENAME table 'wp_users' TO '12SiW03k_users';

A seguire, occorre modificare anche il contenuto della tabella wp_options (ora modificata in 12SiW03k_options) e quella wp_usermeta (ora modificata in 12SiW03k_usermeta) perché al loro interno quasi sicuramente ci sono ancora riferimenti al vecchio prefisso.

Quindi, sempre da SQL puoi usare il seguente comando per individuare le tabelle da rinominare.

SELECT * FROM '12SiW03k_options' WHERE 'option_name' LIKE '%wp_%'
SELECT * FROM '12SiW03k_usermeta' WHERE 'meta_key' LIKE '%wp_%'

In ultima battuta, mi raccomando, ricordati di andare a modificare anche la voce nel file wp-config.php.

$table_prefix = '12SiW03k_';

#14 | Usa password estremamente forti

In generale per FTP, email ecc. ma più nello specifico per l’utente del Database, usa sempre password complesse che contengano lettere maiuscole, minuscole, numeri e caratteri speciali.

Se ti manca la fantasia, puoi trovare parecchi generatori di password online; se poi il problema è che hai paura di non ricordare le password o semplicemente non sai dove o come archiviarle in sicurezza, allora ti consiglio vivamente software come Dashlane che uso e consumo da molto, molto tempo. 🙂

#15 | Schedula i backup

Server performanti come quello proposti da Keliweb o SiteGround, garantiscono anche un sistema di backup completo, quindi, in teoria dovresti sempre essere a posto. In caso contrario, contatta il tuo provider al fine di poter schedulare con lui i backup sequenziali del Database oppure, usa plugin e sistemi di terze parti come ManageWP.

In ogni caso, ricordati di effettuare un salvataggio sempre e prima di qualsiasi azione sul tuo Sito Web.

Hardening WordPress

#16 | Aggiungi/aggiorna gli headers HTTP di sicurezza

Le intestazioni di sicurezza sono molto importanti e, anche queste, in continua evoluzione.

Vengono installate a livello server e comunicano al browser di navigazione, i comportamenti da tenere riguardo il Sito Web richiamato e visualizzato.

Le più importanti sono:

  • X-Frame-Options
  • Strict-Transport-Security
  • X-Content-Type-Options
  • Content-Security-Policy
  • X-XSS-Protection
  • Public-Key-Pins
  • Referrer-Policy
  • Feature-Policy

Per verificare la corretta implementazione delle intestazioni HTTP, è possibile usare l’inspector di Chrome, Network -> All, oppure affidarsi al servizio online di Security Headers.

Nel caso, chiedi supporto o verifica al tuo provider.

#17 | Usa protocolli HTTPS e Certificati SSL

Un Sito Web risiede fisicamente su di un Server allocato in giro per il mondo e, quindi, quando vi si accede da un PC locale, vengono emesse precise richieste atte a visualizzarlo e navigarlo.

A quel punto, il Server risponde ed invia pacchetti di dati sulla rete, attraverso i protocolli di connessione e comunicazione, come l’HTTP2/HTTP3 (Quick) che devono sempre essere aggiornati all’ultima versione disponibile per permettere transizioni sicure e sempre più veloci.

Tuttavia, la comunicazione tra Sito Web e utente non deve essere solo veloce ma anche, e soprattutto, sicura ed a questo fine, deve essere implementato un Certificato di Sicurezza sul Server che viene trasmesso su protocolli HTTPS (non HTTP).

Le implicazioni di una connessione HTTPS con Certificato SSL, sono quindi molteplici.

La sicurezza e le prestazioni prima di ogni cosa. A seguire, non meno importanti, la SEO per la quale è un fattore di ranking importante e la credibilità che genera e ispira la fiducia nell’utente che naviga il Sito Web.

In generale, questa attività è prioritaria sopra (quasi) ogni altra cosa.

Tutti i nuovi hosting offrono una connessione HTTS con Certificato SSL ma, nel caso, chiedi supporto o verifica al tuo provider.

Plus! Per completare e configurare una connessione sicura e crittografata tra il tuo computer locale e il server dove è ospitato il Sito Web, durante una sessione di login nella pagina di amministrazione di WordPress, aggiungi questa semplice stringa al file di configurazione wp-config.php.

define ('FORCE_SSL_ADMIN', true)

#18 | Cambia la URL del Login

Tutti sanno chi è Babbo Natale così come tutti sanno che per accedere al backend di WordPress l’indirizzo è https://sitoweb/wp-login.php.

A fronte di questa semplice considerazione, per evitare e limitare tutti gli attacchi Brute Force (quelli che cercano le chiavi di accesso per entrare sul Sito), è necessario nascondere, offuscare o modificare la URL dell’area di login.

Esistono stringhe di codice da inserire nei file .htaccess o functions.php del tema figlio ma non funzionano su tutti i server che sono configurati in modo diverso.

Esiste anche una procedura che permette la creazione di un nuovo file per il login da sostituire a quello standard. In questo caso si crea un file nuovo che contiene tutto il codice del file wp-login.php e lo si nomina, ad esempio, nuovologin.php. Pratica sconsigliatissima poiché, al successivo aggiornamento del core di WordPress, si perderebbero tutte le modifiche.

Allora come fare? La soluzione è molto più semplice del previsto. Sai che non amo molto l’uso indiscriminato dei plugin ma, questo, è davvero utile, completo e poco invasivo.

Scarica ed installa, quindi, il plugin WPS Hide Login. Una volta attivato, vai in Impostazioni -> Generali -> Scorri in fondo alla pagina ed inserisci il nome della tua nuova area di login e quello relativo al redirect di quella vecchia e il gioco è fatto.

Mettere in sicurezza WordPress. WPS Hide Login | WordPress Plugin 

Funziona con tutto, WPML compreso.

#19 | Implementa il limit login attempts

Si dice limit login attempts e vuol dire limitare i tentativi di accesso al Sito Web.

Classica operazione di un attacco Brute Force, questo skill permette di limitare e bloccare tutte le azioni di forzatura per bucare un Sito Web.

Esistono plugin che, da soli, espletano questa funzione ma, considerando una visione più ampia che prevede l’uso di un firewall interno, il problema non si pone.

Ti consiglio uno fra Wordfence o Sucuri. Nel pannello di gestione delle opzioni di Wordfence, ad esempio, trovi queste opzioni.

Mettere in sicurezza WordPress. Limit login attempts | Brute Force Wordfence firewall options 

Per chi magari ha parecchi utenti di cui molti tendono a dimenticarsi le credenziali di accesso, questa configurazione permette una minima flessibilità di accesso con un ban diretto per chi tenta di usare parole come admin, Admin e administrator.

#20 | Abilita il Two-factor Authentication (2FA)

L’Autenticazione a Due Fattori è una sicurezza ulteriore che possiamo abilitare in fase di login su un Sito Web. Forse “fastidiosa” ai più perché implica un inserimento ulteriore di un particolare codice, di certo potente deterrente per qualsiasi malintenzionato.

Per abilitarlo, anche qui, esistono plugin proprietari ma, sempre ipotizzando che tu abbia già installato un firewall come Wordfence, ti basteranno uno smartphone per la scansione del codice QR e un’App come Google Authenticator (per Android, per Apple) per la generazione delle chiavi.

Una volta abbinato il tuo Sito, quando tenterai di entrare nell’area login dovrai inserire, al solito, username/email, password e il codice generatoal volo” da Google Authenticator.

Mettere in sicurezza WordPress. Wordfence | Two-factor Authentication (2FA)

#21 | Usa password complesse

Tempo fa, Google stessa, mi inviò un avviso che le mie password salvate sul Browser erano altamente a rischio. Non sicuramente scontate ma effettivamente obsolete per il trend degli ultimi anni.

Pensai -“Come diavolo farò a ricordarmi tutte le password se le dovrò modificare tutte in modo altamente sicuro e complesso?” – La soluzione che trovai, dopo molti test, fu Dashlane, un’App strepitosa che non solo ti permette di salvare in un unico posto tutte le password ma anche di generare password sicure, scansionare il web per vedere se qualcuna è stata bucata, di integrarsi con browser, SO e molto, molto altro.

La sola richiesta? Ricordarsi SOLO UNA password, la sua.

Quanto sopra non pare così scontato o comune a tutti. SplashData, infatti, genera ogni anno una lista che include le password più usate e fragili in assoluto. Ti riporto qui le prime 10 … che tanto bastano per farti capire lo status quo delle cose.

Mettere in sicurezza WordPress. SplashData | Elenco delle password più comuni

Ricorda quindi, di modificare tutte le tue password considerando (almeno) queste direttive: 16 cifre, numeri, lettere e simboli:

[^{;X@*{s,uig&8i

#22 | Cambia le credenziali regolarmente

Semplice attività. Ogni due/tre mesi, cambia le credenziali di accesso o, più nel dettaglio, almeno la password.

Ovviamente, se percepisci o capisci in modo evidente che il tuo Sito Web è sotto attacco, questa attività deve essere implementata con priorità 1.

#23 | Cambia i messaggi generici degli errori di login

Quando qualcuno tenta di accedere all’area riservata di un Sito Web, il sistema, per ogni tentativo fallito (username errato, password sbagliata), genera messaggi alert che sono decisamente compromettenti.

Ad esempio, per impostazione predefinita appunto, quando si inserisce un nome utente valido con una password errata, WordPress dirà che è stato inserito un nome utente valido ma con una password errata.

Cosa significa questo? Che quell’utente esiste!! Un invito a nozze.

Fortunatamente il problema può essere risolto sempre dal nostro WAF preferito, Wordfence, che tra le opzioni ha anche quella di disabilitare e nascondere questi messaggi pericolosi.

Mettere in sicurezza WordPress. Wordfence | Credenziali login errate | Disabilitare i messaggi comuni di errore

#24 | Usa solo plugin certificati

Esistono database infinti di plugin disponibili. Il TOP in tal senso è senza dubbio la directory di WordPress.org. Qui sopra trovi migliaia di software e, quindi, sicuramente anche quello che stai cercando.

Sono plugin free, alcuni freemium ovvero gratuiti ma con la possibilità di estensione a pro.

Esistono poi, i plugin solo premium che si trovano, per la maggior parte su codecanyon di envato. ma anche in giro per la rete: uno su tutti WP Rocket, il numero uno per quanto riguarda l’ottimizzazione di un Sito Web.

Ti consiglio sempre e solo l’utilizzo di plugin premium se possibile ma, tuttavia, ne esistono anche di validi gratuiti.

Quello che fa la differenza tra un buon prodotto e uno scadente, rimangono comunque, il valore del supporto dello sviluppatore, gli aggiornamenti costanti e l’assoluta compatibilità con le nuove versioni di WordPress.

#25 | Aggiorna sempre i plugin di WordPress

Le vulnerabilità, insieme a tutte le migliorie del caso, sono sempre in costante progresso. Diventa quindi necessario aggiornare sempre e tempestivamente, qualsiasi plugin che hai installato sul tuo Sito Web.

#26 | Elimina plugin non usati

Anche se disabiliti un plugin, questo rimane comunque presente sul tuo sistema e, soprattutto, nel tuo Database.

Al fine di potersi proteggere correttamente, diventa quindi necessaria una cancellazione totale di ogni software non più utilizzato.

#27 | Usa solo temi certificati

Allo stesso modo di quanto detto per i plugin, esistono database infinti anche per i temi professionali. Il TOP in tal senso è senza dubbio themeforest di envato. Lì, puoi trovare il tema che meglio si adatta alle tue esigenze anche se, è pur vero, che tutti possono essere poi customizzati al meglio da qualsiasi buon webmaster.

Ti consiglio temi come Avada, Brooklyn, BeTheme, Enfold ecc.

Sono temi altamente professionali e, quindi, realizzati bene, in linea con i costanti sviluppi del mondo web. Sono prodotti che tengono conto di ogni aspetto relativo alla realizzazione di un Sito Web Professionale: struttura, editor, customizzazione, SEO, velocità, sicurezza, aggiornamenti e supporto.

Scegli, quindi, sempre e solo temi certificati, completi e garantiti.

#28 | Aggiorna sempre i temi di WordPress

Le vulnerabilità, insieme a tutte le migliorie del caso, sono sempre in costante progresso. Diventa quindi necessario aggiornare sempre e tempestivamente, il tema professionale che hai scelto per il tuo Sito Web.

#29 | Elimina i temi non usati

La pratica corretta prevede l’installazione di un tema professionale e di quello definito Child (figlio) dello stesso. Lavorerai su quest’ultimo e, quindi, non ti serviranno altri temi installati.

Cancella tutti gli altri eventuali e lascia sempre e solo quello di default (ultimo in termini di uscita) di WordPress. Potrebbe servirti per eventuali test di compatibilità sul sistema.

#30 | Nascondi la versione di WordPress

WordPress, di default rivela qual è la sua versione permettendo ad eventuali hacker, di capire in che modo agire. Meno informazioni passiamo e meno lasciamo loro tracce sicure su cui lavorare.

Questa funzione verrà eliminata nelle successive versioni del CMS ma, nel frattempo, disabilita facendoti aiutare sempre dal nostro WAF Wordfence.

Mettere in sicurezza WordPress. Wordfence | Disabilita la versione di WordPress

#31 | Blocca l’enumerazione degli utenti

Su WordPress, è possibile risalire ai nomi utente validi, semplicemente scrivendo nella barra degli indirizzi, URL come, ad esempio:

example.com/?author=2
example.com/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fexample.com%2Fhello-world%2F
example.com/wp-json/wp/v2/users

Diventa quindi necessario, disabilitare la possibilità che questo accada. Sempre Wordfence, ci viene incontro grazie ad un’opzione chiamata Prevent discovery of usernames through

Mettere in sicurezza WordPress. Wordfence | Disabilita la possibilità di enumerazione utenti attivi

#32 | Disabilita XML-RPC e REST API

Partiamo subito con una premessa.

Questa attività è molto rischiosa! Attuala solo se sei più che sicuro di quello che stai facendo o solo quando il tuo Sito Web risulta quasi irrimediabilmente compromesso.

Per prima cosa dobbiamo capire cos’è la REST (Representational State Transfer) API (Application Programming Interface).

Per REST API s’intende l’interfaccia che gli sviluppatori possono utilizzare per accedere l CMS dall’esterno.

XML-RPC non è null’altro che un’API appunto, che offre agli sviluppatori la possibilità di comunicare con il tuo Sito o scrivere applicazioni (per tuo conto) e adatte per fare molte delle attività che si trovano comunemente all’interno del backend di WordPress come, ad esempio:

  • Pubblicare un post;
  • Modificare un post;
  • Eliminare un post;
  • Caricare un nuovo file (ad es. Un’immagine per un post);
  • Ottenere un elenco di commenti;
  • Modificare commenti.

Capisci bene che, quindi, disabilitare la REST API e nella fattispecie l’XML-RPC potrebbe essere dannoso per la normale funzionalità del tuo Sito Web.

inoltre, l’attacco preferito da chi sfrutta l’XML-RPC è quello Brute Force che però, risulta inefficace se utilizzi Wordfence sul tuo Sito Web.

Pensa quindi bene a quello che fai. Tuttavia, come dicevo prima, nel caso forzoso in cui si debba fare, puoi usare tranquillamente il plugin Disable WP REST API, che permette la disabilitazione totale delle API.

#33 | Usa i permessi corretti per file e cartelle

Le autorizzazioni alla lettura, scrittura ed esecuzione di file e cartelle, siano esse sul CMS o sul server, non devono mai essere prese con leggerezza.

Un’errata configurazione rischierebbe di aprire e fiume i rubinetti di WordPress o di chiuderli talmente tanto da non far scorrere neanche una goccia d’acqua.

Alla luce di quanto detto, dunque, i permessi corretti per file e cartelle, dovrebbero (devono) essere impostati come segue:

  • FILEs: 644 o 640;
  • wp-config.php: 440 o 400;
  • CARTELLE: 755 o 750.

Per modificare i permessi, utilizza il tuo client FTP o agisci direttamente da cPanel sul tuo server.

#34 | Sposta il file wp-config.php

Per una qualche configurazione errata del server o semplicemente per la bravura di qualche hacker, può essere fattibile accedere, scaricare e modificare il file di configurazione di WordPress, wp-config.php che risiede nella stessa directory del Sito Web.

Per ovviare a ciò, è possibile pensare di spostare il file in una qualche cartella di livello superiore dove, sicuramente, l’accesso è bloccato a chiunque tranne a te, proprietario del Sito Web.

  1. La prima operazione da fare è copiare il file wp-config.php ed incollarlo (caricarlo via FTP) nella tua nuova cartella di destinazione.
  2. Nel (vecchio/standard) file wp-config.php cancella tutto il contenuto e scrivi solo l’istruzione seguente:
<?php
include('/home/yourname/wp-config.php');

Ricordati di modificare la URL /home/yourname/ con quella corretta relativa al tuo server.

Questo check potrebbe non funzionare su hosting configurati in modo da non permetter l’esecuzione di PHP sulla cartella public_html.

In questo caso, contatta il tuo hoster e chiedi eventuali informazioni su come poter fare per spostare il file o se, nel caso, hanno già all’attivo una protezione su di esso.

#35 | Disabilita la scrittura dei file nel backend

Se sul tuo Sito Web ci sono parecchi utenti, ricordati di distribuire i giusti permessi in modo da permettere, solo a chi ha i privilegi di amministratore, l’eventuale modifica dei file online.

Aspetto -> Editor del tema

Fermo restando che queste modifiche sono implicitamente da fare solo tramite apertura del file in locale e successivo upload via client FTP, è anche (e soprattutto) possibile che chi riesca a violare un Sito Web, usi questo editor per demolire qualsiasi cosa.

Come risolvere? Semplicemente inserendo questa istruzione nel file di configurazione di WordPress, wp-config.php.

define ('DISALLOW_FILE_EDIT', true);

#36 | Previeni l’Hotlinking

Il furto indiscriminato di testi e immagini da un Sito Web ad un altro è, purtroppo una comune piaga.

Capita spesso, infatti, di trovare proprie porzioni di testo copiate pedestremente altrove ma la cosa ancora più fastidiosa è vedere una propria immagine violata e copiata e, magari, senza neppure un riferimento all’autore e quindi alla relativa proprietà intellettuale.

Questo furto di immagini si applica scaricando il media in locale e poi caricandolo nel proprio Sito Web o, peggio del peggio … utilizzando la sua URL proprietaria.

Questa seconda pratica si chiama hotlinking.

Ma, come fare per verificare se qualcuno ci ha rubato delle immagini e sta generando spam SEO con esse?

Semplicemente usando questa istruzione all’interno della ricerca di Google.

inurl:tuositoweb.it -site:tuositoweb.it

Se ne trovi, non ti preoccupare … la buona notizia è che ci si può proteggere da questa cosa semplicemente aggiungendo poche righe di codice nel file .htaccess.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?gianlucapartengo\.it [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ [NC,L]

Questo primo script blocca l’hotlinking su tutte le immagini dandone l’accesso solo al mio Sito Web.

Se, al contrario vuoi bloccare tutte le immagini e restituirne una ad hoc (vai di fantasia!!) allora usa questo script, leggermente più complesso.

RewriteEngine on
RewriteCond %{REQUEST_URI} !fuckyou\.png$
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?gianlucapartengo\.it [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ /fuckyou.png [NC,L]

Infine, se vuoi bloccare tutte le immagini solo per alcuni domini specifici e, contemporaneamente restituirne una ad hoc, allora questo è lo script da usare:

RewriteEngine on
RewriteCond %{REQUEST_URI} !fuckyou\.png$
RewriteCond %{HTTP_REFERER} dominio\.com [NC,OR]
RewriteCond %{HTTP_REFERER} dominio2\.com [NC,OR]
RewriteCond %{HTTP_REFERER} dominio3\.com [NC,OR]
RewriteRule \.(jpg|jpeg|png|gif)$ /fuckyou.png [NC,L]

#37 | Disabilita l’esecuzione PHP nella cartella UPLOADS

Questo è un trick molto importante ed è già contenuto all’interno del firewall di Wordfence.

Blocca qualsiasi tentativo di esecuzione script all’interno della cartella uploads di WordPress.

Mettere in sicurezza WordPress. Wordfence | Disabilita l'esecuzione PHP nella cartella uploads

Attenzione però. Potrebbe essere che generi conflitti con applicazioni come TimThumb.php (plugin per generare gallerie di immagini).

Tuttavia, se non usi Wordfence, puoi sempre bloccare questa attività, semplicemente aggiungendo alcune righe di codice nel tuo file .htaccess.

# BEGIN Wordfence code execution protection
<IfModule mod_php5.c>
php_flag engine 0
</IfModule>
<IfModule mod_php7.c>
php_flag engine 0
</IfModule>
AddHandler cgi-script .php .phtml .php3 .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI
# END Wordfence code execution protection

Conclusioni

Poco da dire … tutti sotto il fuoco nemico. Proteggiti prima che sia troppo tardi.

Consigliato. 👍

Condividi su linkedin
Condividi su facebook
Condividi su twitter
Condividi su whatsapp
Gian Luca Partengo

Gian Luca Partengo

Professionista del Web e del Marketing da oltre 20 anni. Ha lavorato per importanti Agenzie e Aziende italiane e ha creato e seguito passo a passo il Brand di numerosi Clienti. Oggi sviluppa progetti altamente professionali a partire da un'analisi sullo stato di salute di un Sito Web e della sua SEO Organica, fornendo anche consulenza a privati e aziende.

Potrebbero Interessarti anche ...

MAIN PARTNERS

Get in Touch

Ci sono molti modi per iniziare una conoscenza o rimanere in contatto e BRiDWEB ti mette a disposizione i migliori: modulo di contatto, e-mail, WhatsApp o chiamata. Scegli tu quale usare.