Questa è una vecchia versione del documento!
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”.
3.1 A Mano
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.
3.1.1 Modificare il wp-config.php
Apriamo il file wp-config.php e sostituire
$table_prefix = 'wp_';
con
$table_prefix = 'newprefix_';
3.1.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.1.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');

