Vai al contenuto principale
BlogLa sicurezzaCome rendere sicuro WordPress: Passi avanzati

Come rendere sicuro WordPress: Passi avanzati

Sicurezza avanzata di WordPress

La sicurezza di WordPress è presa molto sul serio dal suo team di sviluppo. Le patch di sicurezza e gli aggiornamenti vengono rilasciati frequentemente per garantire che WordPress sia al passo con un ambiente online sempre più impegnativo. Come parte di questi sforzi, WordPress gestisce un programma di divulgazione responsabile delle vulnerabilità, in modo che questi problemi non rimangano senza risposta.

Oltre agli sforzi del team di sviluppo di WordPress, anche i singoli utenti dovrebbero prendere provvedimenti per ridurre al minimo i rischi per la sicurezza, spesso definiti "hardening WordPress". Diversi accorgimenti rapidi possono mettere in sicurezza il vostro sito web WordPress, e abbiamo trattato questi passaggi di facile attuazione in un recente post, Come mantenere WordPress sicuro: Le basi.

Oltre ai passaggi di base, esistono anche tecniche di sicurezza più avanzate che possono essere impiegate per proteggere ulteriormente il vostro sito web WordPress, nonché importanti regole di sicurezza da seguire e da non seguire quando si gestisce un sito web WordPress.

Vediamo di analizzarne alcuni.

SFTP - Connessione al server

In primo luogo, è fondamentale assicurarsi che la connessione al server Web avvenga tramite SFTP, che è simile all'FTP, tranne per il fatto che la password e gli altri dati vengono crittografati durante il trasferimento tra l'utente e il server. FileZilla è un'eccellente applicazione per il trasferimento di file che supporta diversi protocolli di trasferimento di file, tra cui SFTP. È possibile scoprire come installare e trasferire i file sul proprio Linode utilizzando FileZilla qui.

Prevenzione degli attacchi brute force

Gli attacchi brute force si verificano quando un aggressore invia ripetutamente e sistematicamente diversi nomi utente e password per cercare di ottenere l'accesso a un sito web. È importante notare che gli attacchi brute force non sono endemici di WordPress. Ogni applicazione web è suscettibile.

La prima difesa contro questo tipo di attacchi è assicurarsi che la password sia sicura. L'obiettivo finale di un attacco a forza bruta è quello di entrare nel vostro sito web. La scelta di una password difficile da decifrare è stata discussa nel nostro precedente articolo sulla sicurezza di WordPress, quindi non ci dilungheremo oltre. È sufficiente assicurarsi che la password sia buona. Vale anche la pena di abilitare l'autenticazione in due fasi all'interno della vostra istanza di WordPress.

Quindi, utilizzate un plugin per limitare il numero di tentativi di accesso sequenziali al vostro sito. Un plugin molto diffuso è Limit Login Attempts Reloaded, che conta più di 1 milione di download. Limita il numero di tentativi di accesso possibili attraverso il normale login e le pagine di login XMLRPC, WooCommerce e personalizzate.

Un'altra opzione è quella di cambiare il percorso di login di wp-admin. Per impostazione predefinita, tutti i siti web WordPress hanno le loro pagine di login situate in /wp-admin (ad esempio, www.examplesite.com/wp-admin.) I bot che effettuano attacchi brute force spesso prendono immediatamente di mira questa pagina. Utilizzate WPS Hide Login per aiutarvi.

Come sempre, prima di installare nuovi plugin non testati, è sempre opportuno eseguire un backup del sito. Anche se la maggior parte dei plugin più diffusi non danneggia il vostro sito, esiste sempre la possibilità di un'incompatibilità. Un backup vi dà la tranquillità di sapere che qualsiasi danno causato da un plugin errato può essere eliminato in modo rapido e semplice.

Autenticazione HTTP dell'amministratore di WordPress

È possibile bloccare ulteriormente l'amministrazione di WP aggiungendo l'autenticazione HTTP di base. Questo processo richiederà all'utente di inserire un nome utente e una password prima di raggiungere la pagina di login di WP, il che può aiutare a fermare i bot brute force.

Per farlo, è necessario creare un file .htpasswd. Per farlo, provate a utilizzare un'ottima risorsa gratuita di Hosting Canada. Dovrete inserire il nome utente che desiderate utilizzare insieme a una password, selezionare un metodo di crittografia dalla casella a discesa e fare clic su "Genera password". Verrà generata una lunga stringa di testo. Copiatela e incollatela in un nuovo file di testo. Salvare questo file semplicemente come '.htpasswd'. 

Quindi, accedete al vostro server e andate alla cartella wp-admin di WordPress. Apritela e in wp-admin create una nuova cartella chiamata "htpasswd". Caricate quindi in questa cartella il file .htpasswd che abbiamo creato in precedenza. Dovete trasferire i file solo in modalità 'ASCII' e non in modalità 'BINARY'. 

La fase finale consiste nel creare un nuovo file che contenga quanto segue:

AuthName "Admins Only"
AuthUserFile /home/public_html/wp-admin/htpasswd/.htpasswd
AuthType basic
Require user yourusername

<Files admin-ajax.php>
    Order allow,deny
    Allow from all
    Satisfy any
</Files>

Dovrete aggiornare il percorso AuthUserFile con l'URL completo della directory del vostro file .htpasswd e il vostrousername con il nome utente utilizzato per il file .htpasswd. Salvate questo file come .htaccess e caricate il file .htaccess nella cartella wp-admin del vostro server. La prossima volta che accederete al vostro sito all'indirizzo www.examplesite.com/wp-admin vi verranno richiesti il nome utente e la password prima che venga visualizzata la schermata di accesso all'amministrazione di WordPress.

Suggerimento utile: Se non si conosce l'url completo della directory del file .htpasswd, un trucco pratico è quello di utilizzare un piccolo script PHP:

<?php
    echo "Absolute path: ", getcwd();
?>

Creare un file contenente questo script chiamato testpath.php e caricarlo nel file htpasswd, quindi visitare questo url (ad esempio www.example.com/wp-admin/htpasswd/testpath.php) per ottenere il percorso completo del file .passwd.

 Proteggere wp-includes

Ci sono script specifici inclusi nell'installazione di WordPress che non sono destinati ad essere accessibili. Tuttavia, essi offrono una possibile via d'accesso al vostro sito da parte degli hacker. Per questo motivo, può essere utile bloccarli. È possibile bloccare l'accesso a questi file con un mod_rewrite nel file .htaccess. A tal fine, aggiungete il seguente codice al vostro file .htaccess (solitamente situato nella radice del documento del vostro sito WordPress) al di fuori dei tag # BEGIN WordPress e # END WordPress; altrimenti, WordPress potrebbe sovrascriverlo:

# Block the include-only files.
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    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]
</IfModule>
 
# BEGIN WordPress

Disattivare la modifica dei file

Molti aspetti della sicurezza di un sito web WordPress ruotano attorno al rendere la vita più difficile a un potenziale hacker. Allo stesso modo in cui un ladro cercherà una casa in una strada non illuminata e priva di allarme o luci di sicurezza, un hacker preferisce prendere di mira un sito web privo di funzioni di sicurezza di base piuttosto che uno in cui le metaforiche finestre e porte sono saldamente chiuse.

Per impostazione predefinita, WordPress consente agli amministratori di modificare file PHP come temi e plugin dalla Dashboard. Poiché questa funzione consente l'esecuzione di codice, è un obiettivo ovvio per un hacker. Per la maggior parte degli sviluppatori web, le modifiche al codice vengono effettuate con un editor di testo come Sublime piuttosto che dalla Dashboard. Ha senso "imbullonare" questa particolare finestra di WordPress e, così facendo, rimuovere un altro potenziale punto di accesso per un hacker.

Per farlo, inserire questa riga di codice nel file wp-config.php. Questa riga rimuove le funzionalità di "modifica_temi", "modifica_plugin" e "modifica_file" di tutti gli utenti:

define(‘DISALLOW_FILE_EDIT’, true);

Anche se questo non impedirà a un hacker di caricare file dannosi sul vostro sito, aiuterà a bloccare alcuni attacchi.

Utilizzare un firewall

Un firewall è un modo eccellente per evitare che un aggressore raggiunga il vostro sito web WordPress. Esistono un paio di opzioni:

Un plugin per il firewall

Molti buoni plugin firewall funzionano limitando l'accesso a livello del server Apache prima che WordPress lo elabori. Un buon esempio è All In One WP Security & Firewall o WordFence. Entrambi cercano di filtrare le richieste in entrata per garantire che nessun traffico dannoso possa colpire la vostra installazione di WordPress.

Firewall intermediari

Plugin come WordFence filtrano il traffico a livello di server. Un approccio alternativo consiste nell'intercettare il traffico in arrivo al vostro server prima di sottoporlo a screening e quindi inviare la richiesta al vostro server utilizzando un prodotto come Cloudflare. Questo approccio è molto diffuso perché basta modificare i record DNS per inviare il traffico attraverso un intermediario, senza dover apportare modifiche al server. 

Le prossime tappe

La sicurezza di WordPress rimane un argomento molto popolare. Se tutto questo vi sembra un lavoro duro, prendete in considerazione l'utilizzo di un host WordPress gestito come Pressidium, che può fare gran parte del lavoro pesante per voi. Infine, eseguite regolarmente dei backup del vostro sito web, in modo da poter dormire sonni tranquilli sapendo che potrete sempre ripristinare il vostro sito.


Commenti (2)

  1. Author Photo
    Atul Kumar Pandey

    Excellent tips. Strong password and using limit login attempts are the quick fix for any WP blog. Being in the same industry I would like to add one more tip – use only trusted and highly rated themes and plugins.

  2. Author Photo

    A good password is great. Also, hiding or changing the wp-admin slug is really helps.

Lascia una risposta

Il vostro indirizzo e-mail non sarà pubblicato. I campi obbligatori sono contrassegnati da *