Questa è una vecchia versione del documento!


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

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:

  1. readme.html
  2. licenza.html
  3. license.txt
  4. 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:

FilePercorsopermessi
root directorywww.miosito.com/0755
wp-adminwww.miosito.com/wp-admin0755
wp-contentwww.miosito.com/wp-content0755
wp-includeswww.miosito.com/wp-includes0755
.htaccesswww.miosito.com/.htaccess0644
wp-config.phpwww.miosito.com/wp-config.php0600

Reference

wordpress/install_best_practice.1484932161.txt.gz · Ultima modifica: 2017/01/20 17:09 da apressato
Torna su
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0