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 contro i proiettili alimentato da WordPress. Non è necessariamente fare 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 la causa di alcuni problemi di incompatibilità con alcuni plugin strani che provano a modificare i file direttamente nelle cartelle di WordPress. Raccomando di ignorare qualsiasi plugin 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 nei temi installati sul tuo sito. Ho creato questo articolo nella speranza che sia utile, ma senza alcuna garanzia.

Nota: questo articolo non è applicabile se si utilizza 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 si dispone di accesso alla shell con privilegi di root, non è possibile fare nulla di utile per creare un sito Web protetto reale. Non ci sono modi o plugin in grado di proteggere WordPress e file nelle sue directory a livello di PRO. Tutti i plugin di sicurezza hanno lo stesso livello di privilegi (permessi) di hacker e bot. Nessuna eccezione. Se alcuni plug-in di sicurezza apportano 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 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, eventuali altri punti di riferimento) su 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 un paio o tre simboli alfabetici. Alcuni attacchi e attaccanti specifici di WordPress fanno presupporre che il prefisso della tabella sia wp_ . La modifica del prefisso ci aiuta a bloccare alcuni attacchi SQL injection.

Passo due. Indurimento del sito Web a livello di WordPress

  1. Sposta la cartella dei caricamenti di un livello, dall'interno di / wp-content / folder alla directory principale della cartella di installazione di WordPress.
  2. Rinominare la cartella di upload sul supporto (o qualcosa del genere, qualunque cosa si desideri).
  3. Rinominare la cartella del contenuto wp nel contenuto (o qualcosa del genere, qualunque cosa si voglia).
  4. Rinomina la cartella dei plugin in mod (o qualcosa del genere, qualunque cosa tu voglia).
  5. Aggiungere le seguenti righe all'inizio del file wp-config.php, non dimenticare di cambiare media, i contenuti, mod ai valori effettivi che si sceglie 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'); // no FTP, naturalmente
    define ('WP_HTTP_BLOCK_EXTERNAL', true);
    define ('UPLOADS', ' media '); // abbiamo rinominato i caricamenti e li abbiamo spostati di livello
    define ('WP_CONTENT_DIR', '/ percorso / a / wordpress / dir / contenuto '); // 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 visualizzazione errori PHP sul front-end

Fase tre Cambia il nome dei cookie di default.

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

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

Fase 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 questi passaggi di protezione sopra, gli hacker tenteranno di applicare attacchi a forza bruta (tentativi di accesso) per aprire la porta del tuo sito Web WordPress. Nascondi e chiudi questa porta con WP Cerber.

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

In questo passo presumo che si stia utilizzando un server con Apache come server http. Abbiamo bisogno di cambiare 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 per questo scopo in precedenza. Diciamo che questo utente è cerbero .

  1. Inserisci il file .htaccess nella cartella media (la tua nuova cartella di upload) con la seguente direttiva in esso. Questo impedisce al sito web di eseguire codice PHP malevolo caricato.
     php_flag engine off 

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

  2. Per l'intera directory del sito web (/ path / to / wordpress / dir) cambia il proprietario e le autorizzazioni per tutti i file. Per farlo eseguire i seguenti comandi nella shell.
     find / path / to / wordpress / dir -exec chown cerber: root {} + 
    trova / percorso / a / wordpress / dir -tipo da -exec chmod 755 {} +
    trova / percorso / a / wordpress / dir -tipo f -exec chmod 644 {} +

  3. Per la directory di upload (/ path / to / wordpress / dir / media ) abbiamo bisogno di autorizzazioni speciali. Facciamo ciò usando i comandi exec nella shell
     trova / percorso / a / wordpress / dir / media -exec chown cerber: apache {} + 
    find / path / to / wordpress / dir / media -type d -exec chmod 775 {} +
    trovare / percorso / per / wordpress / dir / media- tipo f -exec chmod 664 {} +

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

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

Passo sei. Indurimento del sito Web a livello del server NGINX

Leggi qui: Indurimento di WordPress con WP Cerber e NGINX

Passaggio sette. Indurimento 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.