====== 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 **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 ... ^Riferimenti^ | http://www.creativebloq.com/wordpress/protect-your-wordpress-site-htaccess-4122793 | | https://www.wpwhitesecurity.com/wordpress-security-hacks/protect-wordpress-wp-config-php-security/ | | https://codex.wordpress.org/Hardening_WordPress | ==== 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$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| ===== Reference ===== http://www.marchettidesign.net/2015/05/come-rendere-wordpress-piu-sicuro-in-10-step-e-con-i-migliori-plugin/