Se hai un sito wordpress o in php in generale, che utilizza come database mysql, quasi sicuramente avrai installato anche
phpmyadmin.
Ora, se lo usi solo in locale, non ci sono particolari problemi di sicurezza, ma se decidi di pubblicarlo online, forse è bene modificare alcuni parametri nel file di configurazione, in modo da
rendere phpmyadmin più sicuro.
Come configurare phpmyadmin per renderlo più sicuro
Per poter
personalizzare phpmyadmin per aumentarne la sicurezza, puoi agire in due modi:
modificare a mano il file config.inc.php (se non esistente è da creare
nella cartella root del phpmyadmin), oppure
usare una comoda interfaccia grafica, raggiungibile da questo indirizzo:
phpmyadmin/setup/
Ovvero, basta
aggiungere /setup all'url del nostro phpmyadmin.
Accederemo in una schermata di configurazione, che ci avviserà che
dobbiamo creare una cartella chiamata 'config' nella root del phpmyadmin.
Questa cartella dovrà essere ovviamente con i permessi di scrittura.
Una volta creata la cartella, potremo generare il file di configurazione di phpmyadmin, cliccando sul bottone
Nuovo server.
Nella schermata che si aprirà, avremo
diverse tab:
- Impostazioni di base
- Autenticazione
- Configurazione del server
- Configurazione di memorizzazione
- Monitoriaggio dei cambiamenti
Entriamo in
Impostazioni di base e mettiamo il
Nome host del server,
localhost se phpmyadmin sta girando il locale.
Lasciamo pure tutti gli altri parametri di default, o abilitiamo la
connessione SSL, se disponibile
Volendo, potremo anche cambiare la porta di connessione a phpmyadmin, se lo reputiamo necessario ai fini della sicurezza.
Passiamo poi al tab
Autenticazione e scegliamo il tipo di login che si vuole effettuare, di default è quella tramite cookie, ma potremo scegliere tra le seguenti opzioni:
- cookie
- config
- http
- signon
Andiamo nella tab
Configurazione del server.
Qui possiamo ad esempio
mostrare solo alcuni database mysql agli utenti che si collegano a questo specifico phpmyadmin, oppure fare il contrario,
escludere dalla visualizzazione alcuni database specifici.
Altre impostazioni di sicurezza utili da settare sono, la
disattivazione dell'accesso di root e
disabilitare l'accesso ad information_schema.
Oppure usare la sezione
Host per
consentire o negare l'accesso a phpmyadmin tramite indirizzo ip.
Una volta terminati tutti i settaggi, clicchiamo su
Applica.
Ora, nella sezione
File di configurazione, possiamo
settare la lingua predefinita, il
server predefinito, ed il tipo di fine del file (
windows o
linux).
Per generare il nostro file di configurazione di phpmyadmin (
config.inc.php), clicchiamo su
Salva.
Adesso volendo, potremo settare altri parametri, andando in
Modifica e poi usando i tab di sinistra, entrando nelle seguenti schermate:
- Panoramica
- Caratteristiche (dove troviamo l'utilissimo tab Sicurezza, con l'opzione Segreto Blowfish)
- Query SQL
- Pannello di navigazione
- Pannello principale
- Importa
- Esporta
Ricordandosi ovviamente di salvare il file di configurazione cliccando alla fine su
Salva.
Una volta generato il file di configurazione
config.inc.php,
spostiamolo dalla cartella config alla root del sito phpmyadmin.
Sovrascriviamo se presente, il vecchio file di
config, ed avremo subito attive le modifiche al phpmyadmin, con subito le restrizioni che abbiamo scelto, già impostate.
Infine, per completare la messa in sicurezza del nostro phpmyadmin,
cancelliamo la cartella config, in modo che nessuno possa generare altri file di configurazione senza il nostro permesso (file che comunque non risulterebbero attivi se non spostati nella
root di phpmyadmin).
Un file di configurazione
config.inc.php di phpmyadmin tipico, può essere una cosa del genere:
<?php
/*
* Generated configuration file
* Generated by: phpMyAdmin 4.6.4 setup script
* Date: Tue, 22 Nov 2016 09:05:21 +0000
*/
/* Servers configuration */
$i = 0;
/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['only_db'] = array('wordpress');
$cfg['Servers'][$i]['AllowRoot'] = false;
$cfg['Servers'][$i]['DisableIS'] = true;
/* End of servers configuration */
$cfg['blowfish_secret'] = 'uD8s(\\F3G`Y03\',@C#&J".|*;2T,T6-O';
$cfg['DefaultLang'] = 'it';
$cfg['ServerDefault'] = 1;
$cfg['NavigationDisplayServers'] = false;
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
?>
Un'ultima considerazione va al discorso
utenti di phpmyadmin che possono vedere solo determinati database.
Si, nel setup di phpmyadmin c'è l'opzione per mostrare solo alcuni database mysql, ma se per caso un utente ha permessi anche su altri db, se va nella sezione query sql, potrà eludere questa configurazione del phpmyadmin, ed agire lo stesso sui database nascosti sui quali ha i permessi.
Quindi in questi casi, è meglio
configurare phpmyadmin in modo che solo determinati utenti possano accedere.
Così facendo potremo quindi garantire (ad esempio), che solo un utente possa collegarsi ad un phpmyadmin appositamente configurato per fare le query solo sul database di uno specifico sito internet.