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 vogliamo ottenere un sito Web protetto a prova di proiettile alimentato da WordPress. Non è necessario eseguire tutti i seguenti passaggi 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 alcuni problemi di incompatibilità con alcuni strani plugin che tentano di modificare i file direttamente nelle cartelle di WordPress. Raccomando di ignorare qualsiasi plug-in di questo tipo, perché il loro utilizzo può portare a molti problemi e problemi di sicurezza immediatamente o in futuro, quando gli hacker hanno studiato buchi nei plug-in 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 l'hosting condiviso. Devi avere almeno un sito ospitato da 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 alcun plug-in in grado di proteggere WordPress e i file nelle sue directory a livello PRO. Tutti i plug-in di sicurezza hanno lo stesso livello di privilegi (autorizzazioni) di hacker e bot. Nessuna eccezione. Se alcuni plug-in di sicurezza hanno apportato alcune 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) con valori diversi
  • Non dobbiamo utilizzare plugin o temi che funzionano con e provare 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 alfabetici. Alcuni attacchi e malintenzionati specifici di WordPress presuppongono che il prefisso della tabella sia wp_ . La modifica del prefisso ci aiuta a bloccare alcuni attacchi di 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 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 i caricamenti e li abbiamo spostati di livello
    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

Fase tre. Modifica il nome predefinito dei cookie.

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

 define('USER_COOKIE', 'my_user_cookie' ); // lo cambia in qualcosa di diverso
define('PASS_COOKIE', 'my_pass_cookie' ); // lo cambia in qualcosa di diverso
define('AUTH_COOKIE', 'my_auth_cookie' ); // lo cambia in qualcosa di diverso
define('SECURE_AUTH_COOKIE', 'my_sec_cookie' ); // lo cambia in qualcosa di diverso
define('LOGGED_IN_COOKIE', 'my_logged_cookie' ); // lo cambia in qualcosa di diverso
define('TEST_COOKIE', 'my_test_cookie' ); // lo cambia in qualcosa di diverso

Fase quattro. Installa un plug-in di sicurezza subito dopo l'installazione di WordPress

Proteggi la tua pagina di accesso con WP Cerber Security . Anche con questi passaggi di protezione di cui 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.

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

In questo passaggio presumo che tu stia utilizzando il server con Apache come server http. Dobbiamo cambiare il 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 per questo scopo in precedenza. Supponiamo che questo utente sia cerber .

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

    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 (/path/to/wordpress/dir) modificare il proprietario e le autorizzazioni per tutti i file. Per fare ciò eseguire i seguenti comandi nella shell.
     find /path/to/wordpress/dir -exec chown cerber:root {} +
    find /path/to/wordpress/dir -type d -exec chmod 755 {} +
    find /path/to/wordpress/dir -type f -exec chmod 644 {} +

  3. Per la directory dei caricamenti (/path/to/wordpress/dir/ media ) abbiamo bisogno di impostare permessi speciali. Facciamolo usando i comandi exec nella shell
     find /path/to/wordpress/dir/ media -exec chown cerber:apache {} +
    find /path/to/wordpress/dir/ media -type d -exec chmod 775 {} +
    find /path/to/wordpress/dir/ media -type f -exec chmod 664 {} +

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

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

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

Leggi qui: Indurimento di WordPress con WP Cerber e NGINX

Passaggio sette. Rafforzamento del 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.