martedì 22 novembre 2016

Come configurare phpmyadmin per renderlo più sicuro

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.

Come configurare phpmyadmin per renderlo più sicuro

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.

Impostazioni di base

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

Autenticazione

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.

Configurazione del server

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.

File di configurazione

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.

Piaciuto l'articolo? Lascia un commento!

EmoticonEmoticon