miércoles, 12 de noviembre de 2008

Restringiendo el acceso a phpMyAdmin a ciertas ips

En mis innumerables intentos de aprender, estuve metiendo mano a un servidor Apache y montando un pequeño proyecto, que utilizaba una base de datos MySQL. Para manejar la base de datos de manera mas rápida, siempre es recomendable usar phpMyAdmin, que nos es mas que un script en php que maneja de base de datos y te permite cómodamente hacer peticiones y demás...

Bueno, pues me di cuenta de chorra, que por defecto, phpMyAdmin, se queda configurado para que todo el mundo pueda conectarse a el. Cualquiera que se conectara a http://miserver/phpmyadmin tenia una bonita pantalla de login... ¡Maldición!.

No tarde mucho en encontrar la solución:

Editar /etc/phpmyadmin/config.inc.php. Es este fichero, se configura los aspectos generales del script. Existe una variable "$cfg" que contiene toda la configuración de dicho script. En realidad no es mas que un array, donde se usan índices "personalizados" (siendo sincero, no recuerdo la expresión técnica para este tipo de índices... pero se que la tiene). Nos vamos al elemento con el índice "Servers", donde indicamos lo servidores que vamos a manejar con phpMyAdmin, en mi caso solo uno.

Vamos al fichero y añadimos tras el "$i++;" lo siguiente:

$cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
$cfg['Servers'][$i]['AllowDeny']['rules'][] = 'allow % from 127.0.0.1';
$cfg['Servers'][$i]['AllowDeny']['rules'][] = 'deny % from all';

Aunque existe una manera mas elegante de meter todas las "rules" en una sola instrucción, creando un array:
$cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
$cfg['Servers'][$i]['AllowDeny']['rules'] = array(
'deny root from all',
'allow root from localhost',
'allow root from 10.0.0.0/8',
'allow root from 192.168.0.0/16',
'allow root from 172.16.0.0/12',
);

1 comentario:

Cesar dijo...

muy bueno, me ha servido de ayuda ;)

Gracias!!