Aunque muchos usuarios necesitamos la funcionalidad de sistema de base de datos, como MySQL, muy pocos pueden gestionarlo desde la consola de comandos. PhpMyAdmin ha sido desarrolladopara interactuar con MySQL a través de una interfaz web. En esta guía, discutiremos cómo instalar y proteger phpMyAdmin para utilizarlo con seguridad en la administración de bases de datos MySQL.

Puesta en marcha de phpmyadmin

¿Qué es Phpmyadmin?

Phpmyadmin es una herramienta gratuita y open source. Esta desarrollado en PHP y permite gestionar servidores MySQL desde un navegador web. Soporta la mayoría de las funciones de MySQL y al mismo tiempo nos ofrece información detallada sobre el funcionamiento del servidor en tiempo real.

Características principales

  • Interfaz gráfica muy intuitiva
  • Soporte para la mayoría de las características de MySQL 
    • Examinar y modificar el contenido de bases de datos, tablas, vistas, campos e índices
    • Crear, copiar, renombrar y modificar bases de datos, tablas, vistas, campos e índices
    • Realizar tareas de mantenimiento de servidor, las bases de datos y las tablas y al mismo tiempo nos da sugerencias de configuracion
    • Crear, modificasr y ejecutar todo tipo de consultas SQL
    • Gestionar los usuarios de MySQL y sus privilegios
    • Gestionar procedimientos almacenados y triggers
  • Importar datos desde archivos CSV y SQL
  • Exportar datos a diversor formatost: CSVSQLXML,,PDFWord, LATEX y otros
  • Administrar varios servidores
  • Crear graficos del diseño de la base de datos en diferentes formatos
  • Realizar búsquedas a niver global dentro de la base de datos
  • Y mucho más ...

Aunque posiblemente no usemos todas las funciones, el poder realizar copias de nuestros datos y las tareas de mantenimiento accediendo directamente al servidor nos puede sacar de más de un aprieto, Y la interfaz gradica nos permite realizar estas tareas sin necesidad de ser expertos en gestión de MySQL.

En un hosting compartido, es casi seguro que tendremos en nuestro panel de control un enlace a esta herramienta, ¿pero como lo instalamos en nuestro VPS?. Por sus características nuestro servidor debe tener como mínimo un servidor web con soporte para PHP. En esta guía tenemos los detalles de los pasos necesarios para instalar estos elementos en un servidor con Ubuntu 16.

Instalación de phpmyadmin

En nuestro caso podemos simplemente descargarlos desde el repositorio de Ubuntu

sudo apt-get update
sudo apt-get install phpmyadmin php-mbstring php-gettext

Respondemos afirmativamente a las preguntas de confirmación y llegamos a la pantalla de selección del servidor

Seleccionamos apache2 y la instalación continua. En la pantalla de configuración de la base de datos de Phpmyadmin, respondemos que si

Se nos pedirá la contraseña del administrador de bases de datos y posteriomente crearemos una contraseña para el usuario phpmyadmin. 

Si todo ha ido bien solo nos queda habilitar los módulos mcrypt y mbstring, reiniciando el servidor Apache para activar la nueva configuración

sudo phpenmod mcrypt
sudo phpenmod mbstring
sudo service apache2 restart

Solo nos queda acceder a http://dominio-o-IP/phpmyadmin

Nos identificamos con nuestras credenciales de acceso a la base de datos y ya podemos administrar nuestro servidor desde la web

Aseguramos la instancia de phpmyadmin

Hemos instalado con facilidad nuestra instancia de phpmyadmin. Lo primero que debemos hacer es reforzar la seguridad de nuestra instalación. Debemos tener en cuenta que;

  1. Esta herramienta se comunica directamente con nuestras instancias MySQL
  2. Gestiona la autentificacón mediante las credenciales realies de acceso a las base des datos
  3. Permite ejecutar todo tipo de consultas en el servidor
  4. Es una herramienta muy difundida y por tanto suele ser atacada con frecuencia

Veamos que pasos podemos dar para poder minimizar este riesgo:

En primer lugar si accedemos de manera remota debemos utilizar https. Si aun no lo hemos hecho en esta guía encontraremos las instrucciones para instalar gratuitamente un certificado de Let's Encrypt

Implementamos AuthBasic

Añadiremos una capa extra de seguridad, protegiendo el acceso con un usuario y contraseña adicional. Para ello editamos el archivo de configuracion de phpmyadmin.

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

y agregamos una directiva AllowOverride All dentro del bloque <Directory ...>. Esto nos permitirá utilizar las funcionalidades de autenticación y autorización de .htaccess integradas en Apache.


Guardamos los cambios y reiniciamos el servidor web.

sudo service apache2 restart

Ahora creamos un archivo .htaccess en la carpeta de la aplicación, 

sudo nano /usr/share/phpmyadmin/.htaccess

y agregamos las siguientes líneas

AuthType Basic 
AuthName "Acceso restringido" 
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

Resuminendo hemos establecido que para acceder al contenido protegido es necesario identificarse con usuario y contraseña. La lista de usuarios estará en un archivo (.htpassword) que creamos fuera de la carpeta protegida. Aquí podemos encontrar más informacion sobre las directivas de Apache.

Solo nos queda crear el archivo de contraseñas, para ellos descargamos, si no lo hempos hecho anteriomrente, un paquete  adicional para Apache

sudo apt-get install apache2-utils

este paquete nos permite utilizar htpassword para generar nuestro achivo de contraseñas

sudo htpasswd -c /etc/phpmyadmin/.htpasswd nombre-de-usuario

hemos utilizado la misma ruta indicada anteriormente. Una vez creado el archivo podemos añadir nuevos usuarios con el mismo comando, pero omitiendo el modificador -c. 

A partir de ahora, tendremos que identificarnos para poder a nuestro phpmyadmin. Lógicamente, el usuario y contraseña que utilicemos debe ser distinto del resto de credenciales que utilizamos.

Modificamos la url de acceso

Otra cosa qie podemos hacer es modificar la url de acceso. De esa forma se lo ponemos un poco más difícil a quienes intenter acceder sin permiso a nuestra querida base de datos.

Para ello volvemos a editar el archivo phpmyadmin.conf y añadimos un nuevo Alias con la url deseada. Podemos comentar la url existente o eliminar dicha línea completamente.

Reiniciamos el servidor web y comprobamos que si utilizamos la url antigua el servidor nos devuelve un error 404. Si hacemos esto, debemos revisar cualquier script que usemos con acceso a phpmyadmin y realizar los ajustes pertinentes.

Activamos el acceso bajo demanda a phpmyadmin

Hemos configurado phpmyadmin como una carpeta más dentro del servidor y por tanto está expuesto permantentemente. En realidad esta configuración no tiene sentido, pues como norma general accederemos directamente la base de datos de manera puntual. 

¿Que podemos hacer?

Una posible solución es crear un VirtualHost independiente, el cual activaremos solo cuando vayamos a trabajar con la base de datos. Los pasos a seguir son relativamente sencillos. 

Primero copiamos el archivo de configuracion a la carpeta de sitios disponibles de apache

sudo mv /etc/phpmyadmin/apache.conf /etc/apache2/sites-available/phpmyadmin.conf.

No olvidemos eliminar  los archivos de configuracion existentes

sudo rm  /etc/apache2/conf-available/phpmyadmin.conf
sudo rm  /etc/apache2/conf-enabled/phpmyadmin.conf


Modificamos el archivo /etc/apache2/sites-available/phpmyadmin.conf para implementar un virtual host. El resultado final debe ser similar a:

<VirtualHost *:80> 
   ServerName dominio.para.phpmyadmin 
DocumentRoot /usr/share/phpmyadmin
   ...
</VirtualHost>

En realidad, hemos eliminado las lineas de Alias y encerrado todo dentro de una directiva VirtualHost. Una vez realizados los cambios comprobamos que no haya errores

sudo apachectl configtest

Si todo está bien, activamos la nueva configuración

sudo a2ensite phpmyadmin.conf
sudo service apache2 reload

Solo tenemos que registrar en DNS el nuevo domino y activamos SSL en el mismo. Ya podemos acceder a nuestro servidor MySQL con la máxima seguridad.

Al terminar de trabajar desactivamos el dominio

sudo a2dissite phpmyadmin.con
sudo service apache2 reload

De esta forma bloqueamos el acceso a nuesto MySQL cuando no estemos trabajando directamente con la base de datos y mantendremos nuestros valiosos datos protegidos del mundo exterior.

Conclusión

Hemos visto como instalar phpmyadmin y que podemos hacer para reforzar su seguridad.Así podemos acceder directamente a nuestro servidor MySQL cuando lo necesitemos a través de una herramienta visual muy intuitiva que nos sacará de más de un apuro.

0 0 votes
Valoración del artículo
Suscribir
Notificar de
guest
0 Comentarios
Inline Feedbacks
View all comments