Trasforma il tuo WordPress in Fort Knox
Come trasformare WordPress in una fortezza protetta come Fort Knox
English version: Turn your WordPress into Fort Knox
Questo articolo presuppone che si voglia creare un sito web a prova di bomba, basato su WordPress. Non è necessario seguire alla lettera tutti i passaggi descritti, ma lo consiglio vivamente se si desidera creare il proprio Fort Knox personale.
Alcuni dei seguenti passaggi potrebbero causare problemi di incompatibilità con alcuni plugin particolari che tentano di modificare direttamente i file nelle cartelle di WordPress. Consiglio di evitare plugin di questo tipo, poiché il loro utilizzo potrebbe portare a numerosi problemi e vulnerabilità di sicurezza, sia nell'immediato che in futuro, qualora gli hacker individuassero falle nei plugin o nel tema installato sul vostro sito. Ho creato questo articolo nella speranza che possa essere utile, ma senza alcuna garanzia.
Nota: questo articolo non è applicabile se si utilizza un hosting condiviso. È necessario disporre, come minimo, di un sito web ospitato su un server VPS.
Requisiti: accesso root al server Linux su cui è ospitato il tuo sito web. Se non hai accesso alla shell con privilegi di root, non puoi fare nulla di utile per creare un sito web realmente protetto. Non esiste alcun modo o plugin in grado di proteggere WordPress e i file nelle sue directory a un livello PRO. Tutti i plugin di sicurezza hanno lo stesso livello di privilegi (permessi) di hacker e bot. Nessuna eccezione. Se un plugin di sicurezza ha apportato delle modifiche ai file del tuo sito web per proteggerli, qualsiasi hacker o codice dannoso può ANNULLARE tali modifiche o rimuovere la protezione.
Ecco alcuni punti importanti sul mio approccio
- Tutti i file di codice (codice PHP) e tutti i file .htaccess devono essere protetti da scrittura. Nessuna eccezione.
- Dobbiamo modificare tutti i valori predefiniti (cartella, cookie, percorso di accesso, qualsiasi altro punto di riferimento) con valori diversi.
- Non dobbiamo utilizzare plugin o temi che interagiscono con i file PHP o .htaccess nelle cartelle di WordPress e tentano di modificarli.
Primo passo. Installare WordPress
Non utilizzare il prefisso predefinito wp_ per le tabelle del database. Utilizza invece un paio o tre caratteri alfabetici. Alcuni attacchi specifici di WordPress e alcuni malintenzionati presuppongono che il prefisso della tabella sia wp_ . Modificare il prefisso ci aiuta a bloccare alcuni attacchi di SQL injection.
Fase due. Rafforzare la sicurezza del sito web a livello di WordPress.
- Sposta la cartella degli upload di un livello superiore, dalla cartella /wp-content/ alla directory principale dell'installazione di WordPress.
- Rinomina la cartella degli upload in media (o qualcosa di simile, come preferisci).
- Rinomina la cartella wp-content in content (o qualcosa di simile, come preferisci).
- Rinomina la cartella dei plugin in mod (o qualcosa del genere, come preferisci).
- Aggiungi le seguenti righe all'inizio del file wp-config.php , non dimenticare di sostituire media , content e mod con i valori effettivi che hai scelto in precedenza .
define('AUTOMATIC_UPDATER_DISABLED', true ); // sì, è sicuro farlo manualmente
define('DISALLOW_FILE_EDIT', true ); // non permettiamo mai a nessuno di toccare i tuoi file
define('DISALLOW_FILE_MODS', true ); // sì, è sicuro farlo manualmente
define('FS_METHOD', 'direct'); // nessun FTP ovviamente
define('WP_HTTP_BLOCK_EXTERNAL', true );
define('UPLOADS', ' media ' ); // abbiamo rinominato uploads e lo abbiamo spostato al livello superiore
define('WP_CONTENT_DIR', '/path/to/wordpress/dir/ content '); // nessun nome host, nessuna barra finale
define('WP_CONTENT_URL', ' http://example.com/content ');
define('WP_PLUGIN_DIR', '/path/to/wordpress/dir/ content / mod '); // nessun nome host, nessuna barra finale
define('WP_PLUGIN_URL', ' http://example.com/content/mod ' );
ini_set('display_errors',0); // Disattiva la visualizzazione degli errori PHP sul front-end
Terzo passaggio. Modificare il nome predefinito dei cookie.
Aggiungi queste righe all'inizio del file wp-config.php
define('USER_COOKIE', 'my_user_cookie' ); // cambialo in qualcosa di diverso
define('PASS_COOKIE', 'my_pass_cookie' ); // cambialo in qualcosa di diverso
define('AUTH_COOKIE', 'my_auth_cookie' ); // cambialo con qualcosa di diverso
define('SECURE_AUTH_COOKIE', 'my_sec_cookie' ); // cambialo con qualcosa di diverso
define('LOGGED_IN_COOKIE', 'my_logged_cookie' ); // cambialo in qualcosa di diverso
define('TEST_COOKIE', 'my_test_cookie' ); // cambialo in qualcosa di diverso
Quarto passo. Installa un plugin di sicurezza subito dopo l'installazione di WordPress.
Proteggi la tua pagina di accesso con WP Cerber Security . Anche con le misure di protezione sopra descritte, gli hacker tenteranno comunque di effettuare attacchi di forza bruta (tentativi di accesso non autorizzati) per violare il tuo sito web WordPress. Nascondi e chiudi questa porta con WP Cerber.
Passo cinque. Rafforzare la sicurezza del sito web a livello di server.
In questo passaggio presuppongo che tu stia utilizzando un server con Apache come server HTTP. Dobbiamo cambiare il proprietario di tutti i file di WordPress, inclusi plugin e temi. Di default, questo utente è "apache" . Dobbiamo cambiarlo con un altro utente che hai creato in precedenza per questo scopo. Supponiamo che questo utente sia "cerber" .
- Inserisci il file .htaccess nella cartella media (la tua nuova cartella di caricamento) con la seguente direttiva al suo interno. Questo impedisce al sito web di eseguire codice PHP dannoso caricato.
php_flag engine off
Nota: affinché questa direttiva funzioni, il file di configurazione di Apache deve contenere la direttiva
AllowOverride Optionsper la cartella degli upload o per una qualsiasi delle sue cartelle padre. - Per l'intera directory del sito web (/path/to/wordpress/dir), modifica il proprietario e i permessi di tutti i file. Per farlo, esegui i seguenti comandi nella shell.
trova /percorso/alla/directory/di/wordpress -esegui chown cerber:root {} +
trova /percorso/alla/directory/di/wordpress -tipo d -esegui chmod 755 {} +
trova /percorso/alla/directory/di/wordpress -tipo f -esegui chmod 644 {} + - Per la directory di caricamento (/path/to/wordpress/dir/ media ) dobbiamo impostare permessi speciali. Facciamolo usando i comandi exec nella shell.
trova /percorso/alla/directory/di/wordpress/ media -esegui chown cerber:apache {} +
trova /percorso/alla/directory/di/wordpress/ media -tipo d -esegui chmod 775 {} +
trova /percorso/alla/directory/di/wordpress/ media -tipo f -esegui chmod 664 {} + - Configura la struttura dei permalink nelle impostazioni di WordPress e poi modifica i permessi del file .htaccess per proteggerlo in scrittura.
chown cerber:root /path/to/wordpress/dir/.htaccess
chmod 644 /percorso/alla/directory/di/wordpress/.htaccess - Sposta il file wp-config.php nella directory superiore a quella di installazione di WordPress.
Passo sei. Rafforzare la sicurezza del sito web a livello del server NGINX.
Leggi qui: Proteggere WordPress con WP Cerber e NGINX
Settimo passo. Rafforzare la sicurezza del sito web con Fail2Ban.
Leggi qui: Come proteggere WordPress con Fail2Ban