Security Blog
Security Blog
Posted By Gregory

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 desideriamo ottenere un sito Web protetto a prova di proiettile basato su WordPress. Non è necessariamente necessario eseguire tutti i passaggi successivi parola per parola e punto per punto esattamente come descritto. Ma lo consiglio se vuoi creare il tuo Fort Knox.

Alcuni dei seguenti passaggi potrebbero essere causa di problemi di incompatibilità con alcuni strani plugin che tentano di modificare i file direttamente nelle cartelle di WordPress. Ti consiglio di ignorare qualsiasi plugin di questo tipo, perché il loro utilizzo potrebbe portare a molti problemi e problemi di sicurezza immediatamente o in futuro, quando gli hacker studiano i buchi nei plugin o nel tema installato sul tuo sito. Ho creato questo articolo nella speranza che possa essere utile, ma senza alcuna garanzia.

Nota: questo articolo non è applicabile se utilizzi un hosting condiviso. È necessario disporre almeno di un sito ospitato su 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 vero sito web protetto. Non esiste alcun modo o plug-in in grado di proteggere WordPress e i file nelle sue directory a livello PRO. Tutti i plugin di sicurezza hanno lo stesso livello di privilegi (autorizzazioni) di hacker e bot. Nessuna eccezione. Se alcuni plug-in di sicurezza apportano 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 del mio approccio

  • Tutti i file di codice (codice PHP) e tutti i file .htaccess devono essere protetti da scrittura. Nessuna eccezione
  • Dobbiamo modificare tutte le impostazioni predefinite (cartella, cookie, percorso di accesso, qualsiasi altro punto di riferimento) su valori diversi
  • Non dobbiamo utilizzare plugin o temi che funzionino e provino a modificare i file PHP o .htaccess nelle cartelle di WordPress

Primo passo. Installazione di WordPress

Non utilizzare il prefisso wp_ predefinito per le tabelle del database. Usa invece una coppia o tre simboli dell'alfabeto. Alcuni attacchi e aggressori specifici di WordPress presuppongono che il prefisso della tabella sia wp_ . La modifica del prefisso ci aiuta a bloccare alcuni attacchi SQL injection.

Passo due. Rafforzamento del sito Web a livello di WordPress

  1. Sposta la cartella dei caricamenti su di un livello, dall'interno della cartella /wp-content/ alla radice della cartella di installazione di WordPress.
  2. Rinomina la cartella dei caricamenti in media (o qualcosa del genere, qualunque cosa tu voglia).
  3. Rinomina la cartella wp-content in content (o qualcosa del genere, qualunque cosa tu voglia).
  4. Rinomina la cartella dei plugin in mod (o qualcosa del genere, qualunque cosa tu voglia).
  5. Aggiungi le seguenti righe all'inizio del file wp-config.php , non dimenticare di modificare media , content , mod con i valori effettivi scelti 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', 'diretto'); // ovviamente niente FTP
    define('WP_HTTP_BLOCK_EXTERNAL', true );
    define('CARICAMENTI', ' media '); // abbiamo rinominato gli upload e li abbiamo spostati di livello superiore
    define('WP_CONTENT_DIR', '/percorso/a/wordpress/dir/ contenuto '); // nessun nome host, nessuna barra finale
    define('WP_CONTENT_URL', 'http://example.com/ contenuto ');
    define('WP_PLUGIN_DIR', '/percorso/a/wordpress/dir/ contenuto / 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

Passo tre. Modifica il nome predefinito dei cookie.

Aggiungi queste righe all'inizio del file wp-config.php

 define('USER_COOKIE', 'mio_utente_cookie' ); // cambialo in qualcosa di diverso
define('PASS_COOKIE', 'mio_pass_cookie' ); // cambialo in qualcosa di diverso
define('AUTH_COOKIE', 'mio_auth_cookie' ); // cambialo in qualcosa di diverso
define('SECURE_AUTH_COOKIE', 'my_sec_cookie' ); // cambialo in qualcosa di diverso
define('LOGGED_IN_COOKIE', 'mio_cookie_registrato' ); // cambialo in qualcosa di diverso
define('TEST_COOKIE', 'mio_test_cookie' ); // cambialo in qualcosa di diverso

Passo quattro. Installa un plug-in di sicurezza immediatamente dopo l'installazione di WordPress

Proteggi la tua pagina di accesso con WP Cerber Security . Anche con i passaggi di protezione descritti sopra, gli hacker cercheranno di applicare attacchi di forza bruta (tentativi di accesso) per aprire la porta del tuo sito Web WordPress. Nascondi e chiudi questa porta con WP Cerber.

Passo cinque. Rafforzamento del sito Web a livello di server.

In questo passaggio presumo che tu stia utilizzando un server con Apache come server http. Dobbiamo cambiare proprietario di tutti i file WordPress inclusi plugin e temi. Per impostazione predefinita questo utente è Apache . Dobbiamo cambiarlo con un altro utente, che hai creato in precedenza per questo scopo. Diciamo che questo utente è cerber .

  1. Inserisci il file .htaccess nella cartella multimediale (la tua nuova cartella di caricamento) con la seguente direttiva al suo interno. Ciò impedisce al sito Web di eseguire codice PHP dannoso caricato.
     motore php_flag spento

    Nota: il file di configurazione di Apache deve contenere la direttiva AllowOverride Options per la cartella dei caricamenti o una qualsiasi delle sue cartelle principali per far funzionare questa direttiva.

  2. Per l'intera directory del sito Web (/percorso/a/wordpress/dir) modificare il proprietario e le autorizzazioni per tutti i file. Per fare ciò esegui i seguenti comandi nella shell.
     trova /percorso/wordpress/dir -exec chown cerber:root {} +
    trova /percorso/di/wordpress/dir -type d -exec chmod 755 {} +
    trova /percorso/di/wordpress/dir -type f -exec chmod 644 {} +

  3. Per la directory dei caricamenti (/path/to/wordpress/dir/ media ) dobbiamo impostare autorizzazioni speciali. Facciamolo usando i comandi exec nella shell
     trova /percorso/della/wordpress/dir/ media -exec chown cerber:apache {} +
    trova /percorso/della/wordpress/dir/ media -type d -exec chmod 775 {} +
    trova /percorso/della/wordpress/dir/ media -type f -exec chmod 664 {} +

  4. Imposta la struttura del permalink nelle Impostazioni di WordPress e quindi modifica l'autorizzazione per il file .htaccess per proteggerlo dalla scrittura.
     chown cerber:root /percorso/di/wordpress/dir/.htaccess
    chmod 644 /percorso/a/wordpress/dir/.htaccess

  5. Sposta il file wp-config.php nella directory sopra la directory di installazione di WordPress.

Passo sei. Rafforzamento del sito Web a livello di server NGINX

Leggi qui: Rafforzamento di WordPress con WP Cerber e NGINX

Passo sette. Rafforzare il sito web con Fail2Ban

Leggi qui: Come proteggere WordPress con Fail2Ban


I'm a team lead in Cerber Tech. I'm a software & database architect, WordPress - PHP - SQL - JavaScript developer. I started coding in 1993 on IBM System/370 (yeah, that was amazing days) and today software engineering at Cerber Tech is how I make my living. I've taught to have high standards for myself as well as using them in developing software solutions.

View Comments
There are currently no comments.