Indice
Best Practice per l'installazione di WordPress
La guida è ancora WIP !!!
La guida seguente serve per rendere l'installazione di WordPress più sicura.
Installazione del Core
1. Non utilizzare l'utente admin
Nell'installazione di default WordPress crea un utente “admin”.
Questo rende un eventuale attacco a forza bruta (Brute Force) più semplice perché basterà variare solo la password per tentare l'ingresso.
E' buona prassi creare un nuovo utente con privilegi amministrativi e cancellare quello di default.
2. Creare una password con livello di sicurezza elevato
La creazione di password a sicurezza elevata è un buon modo per dissuadere i male intenzionati.
Per fare ciò si può ricorrere ad un generatore di password sicure come il seguente:
https://www.nexcess.net/resources/tools/secure-password-generator/
Tramite questo sito si possono generare password “tradizionali” come la seguente:
'pu<lLffT,yZJVu
oppure password “Word-Based” cioè basate sull'agregazione di parole diverse:
wing04858north35some99fourwho
3. Cambiare il prefisso delle tabelle nel database
Le versioni “standard” di WordPress hanno come prefisso di default per le tabelle “wp_”.
Come tutti i default, se viene mantenuto, è un grande regalo per eventuali attaccanti.
Se si cambia il default con qualcosa di “irrazionale” tipo ld1nj9bkj7tw_ la possibilità di attacchi basati sull' SQL Injection diminuisce drasticmaente.
Per cambiare il prefisso di defaul su un'istanza già installata si può operare tramite l'uso di PlugIns od “a mano”.
Di seguito prenderemo in considerazione solo il metodo manuale.
3.1 Modificare il wp-config.php
NB: Prima di eseguire le operazioni seguenti è buona cosa porre WordPress in Maintenance Mode ed eseguire un BackUp del DB.
E' necessario intervenire sul wp-config.php, rinominare tutte le tabelle nel database con il nuovo prefisso (anche le tabelle di eventuali plug-in) e aggiornare le referenze delle tabelle usermeta e options.
Di seguito referenzierò come newprefix_ il nuovo prefisso che intendo dare alle tabelle.
Apriamo il file wp-config.php e sostituire
$table_prefix = 'wp_';
con
$table_prefix = 'newprefix_';
3.2 Cambiare il prefisso di tutte le tabelle nel database
Utilizzando un qualsiasi strumento di accesso a MYSQL, collegarsi al DB dove risiedono le tabelle di WordPress e, nel tab SQL, incollare quanto segue
RENAME TABLE `wp_commentmeta` TO `newprefix_commentmeta`; RENAME TABLE `wp_comments` TO `newprefix_comments`; RENAME TABLE `wp_links` TO `newprefix_links`; RENAME TABLE `wp_options` TO `newprefix_options`; RENAME TABLE `wp_postmeta` TO `newprefix_postmeta`; RENAME TABLE `wp_posts` TO `newprefix_posts`; RENAME TABLE `wp_terms` TO `newprefix_terms`; RENAME TABLE `wp_term_relationships` TO `newprefix_term_relationships`; RENAME TABLE `wp_term_taxonomy` TO `newprefix_term_taxonomy`; RENAME TABLE `wp_usermeta` TO `newprefix_usermeta`; RENAME TABLE `wp_users` TO `newprefix_users`;
ed eseguire.
3.3 Aggiornare le referenze nelle tabelle usermeta e options
Sempre dallo strumento di accesso a MYSQL assicurarsi che, ora, le tabelle si chiamino newprefix_NomeTabella poi eseguire quanto segue
UPDATE `newprefix_usermeta` SET `meta_key` = REPLACE( `meta_key`, 'wp_', 'newprefix_' ) UPDATE `newprefix_options` SET `option_name` = 'newprefix_user_roles' WHERE `option_name` = 'wp_user_roles'
4. Utilizzare il file .htaccess
Sezione in fase di stesura …
5. Utilizzare le wordpress key
Nel file wp-config.php sono presenti tre simboli nei quali vanno inserite delle chiavi per aumentare la sicurezza relativa all'utilizzo dei cookies.
Queste chiavi vengono generate tramite il sito ufficiale (riportato anche nel wp-config.php):
https://api.wordpress.org/secret-key/1.1/
Per tanto il blocco
define('AUTH_KEY', 'put your unique phrase here'); define('SECURE_AUTH_KEY', 'put your unique phrase here'); define('LOGGED_IN_KEY', 'put your unique phrase here'); define('NONCE_KEY', 'put your unique phrase here');
deve essere rimpiazzato con quello fornito dalla chiamata al sito
define('AUTH_KEY', '>hOYr+;-|U%2T&kB^vR<I5=y|9);eh#!a|=-*?7@O5./8-#)4Fe.+~?eLC/0Mm#)'); define('SECURE_AUTH_KEY', '@2fY2yVY[!<+q_^+XwbCUcJvFUUL#;Fm}iFlABc7%z&34ZHK9me;cWc48Gsm-}LD'); define('LOGGED_IN_KEY', '4bqA[kQuH@che+^:mf(zDnUn&50*N+ 0D-JL~HP2GfWOXX9#b_|faq6]H#LVhLyV'); define('NONCE_KEY', 'a=wfN+C|b8-Tl/X.l-)pz~Y+TigF[m>$Nu9Urp!D{/+6|ppA eX1Zt,` YUQPcs7');
Post Installazione
6. Nascondere la versione di WordPress
6.1 Eliminazione dal Codice
Ispezionando il codice di un sito WordPress è possibile vedere la versione installata,
questo può facilitare il lavoro degli hackers che sapendo il numero della versione potrebbero, se il cms non è aggiornato, risalire a eventuali bug.
Per nascondere la versione di WordPress si consiglia di aggiungere il seguente codice nel file /wp-includes/functions.php:
/* Hide Version Number */ /* Hide WP version strings from scripts and styles * @return {string} $src * @filter script_loader_src * @filter style_loader_src */ function fb_remove_wp_version_strings( $src ) { global $wp_version; parse_str(parse_url($src, PHP_URL_QUERY), $query); if ( !empty($query['ver']) && $query['ver'] === $wp_version ) { $src = remove_query_arg('ver', $src); } return $src; } add_filter( 'script_loader_src', 'fb_remove_wp_version_strings' ); add_filter( 'style_loader_src', 'fb_remove_wp_version_strings' ); /* Hide WP version strings from generator meta tag */ function fb_remove_version() { return ''; } add_filter('the_generator', 'fb_remove_version');
6.2 Eliminare i files inutili che riportano la versione
Nella cartella di WordPress si trovano alcuni files che possono rivelare la versione in uso.
Si consiglia di eliminare i files:
- readme.html
- licenza.html
- license.txt
- LEGGIMI.txt
7. Cancellare i temi e i plug-ins non utilizzati
È importante cancellare temi e plugin che non utilizziamo per diminuire la possibilità di falle nel codice.
I plugin e i temi utilizzati devono essere, se possibile, sempre aggiornati all’ultima versione.
Questo è uno dei maggiori fattori di rischio in una installazione WordPress.
Si ricorda che due plug-ins che fanno le medesime funzioni possono andare in conflitto fra loro anche se uno dei due è disattivo su WordPress causando errori interni che possono compromettere la fruizione del sito.
8. Utilizzare i permessi corretti
Per quanto riguarda i permessi di file e cartelle, tutte le cartelle dovrebbero essere 755 e i file 644, il wp-config.php dovrebbe essere settato con permessi 600 come mostrato di seguito:
| File | Percorso | permessi |
|---|---|---|
| root directory | www.miosito.com/ | 0755 |
| wp-admin | www.miosito.com/wp-admin | 0755 |
| wp-content | www.miosito.com/wp-content | 0755 |
| wp-includes | www.miosito.com/wp-includes | 0755 |
| .htaccess | www.miosito.com/.htaccess | 0644 |
| wp-config.php | www.miosito.com/wp-config.php | 0600 |

