Web y datos

Cómo instalar y proteger phpMyAdmin en Ubuntu o Debian

phpMyAdmin en Ubuntu o Debian: instalación con APT, privilegios del usuario MySQL y protección del acceso web mediante .htaccess y una contraseña de Apache.

· 7 min de lectura · nivel intermedio · en Ubuntu 22.04

Entre todos los usuarios que necesitan las funciones de un sistema de gestión de bases de datos como MySQL/MariaDB, algunos pueden sentir la necesidad de interactuar con el sistema de otra manera que no sea desde la línea de comandos en SQL.

phpMyAdmin se creó precisamente para permitir a los usuarios interactuar en SQL a través de una interfaz web. En esta guía trataremos la manera de instalar y proteger phpMyAdmin para que pueda utilizarlo con total seguridad para gestionar sus bases de datos en un sistema Ubuntu o Debian.

Illustration 1 — Comment installer et sécuriser phpMyAdmin sur Ubuntu ou Debian

Requisitos previos

Para seguir esta guía necesitará:

  • Un servidor Ubuntu. Preferiblemente un usuario no root con privilegios administrativos y un cortafuegos configurado. Para configurar esto, siga nuestra guía de configuración inicial del servidor para Ubuntu.
  • Una pila LAMP (Linux, Apache, MySQL y PHP) instalada en su servidor Ubuntu. Si aún no lo ha hecho, puede seguir esta guía sobre la instalación de una pila LAMP en Ubuntu 22.04.

Además, hay consideraciones de seguridad importantes cuando se utiliza software como phpMyAdmin, ya que:

  • Se comunica directamente con su instalación de MySQL
  • Gestiona la autenticación utilizando las credenciales de MySQL
  • Ejecuta y devuelve los resultados de consultas SQL arbitrarias

Por estas razones, y porque se trata de una aplicación PHP ampliamente desplegada que es blanco frecuente de ataques, nunca debería ejecutar phpMyAdmin en sistemas remotos a través de una conexión HTTP simple sin seguridad.

Si todavía no tiene un dominio configurado con un certificado SSL/TLS, puede seguir esta guía sobre la protección de Apache con Let’s Encrypt en Ubuntu 22.04. Esto requerirá registrar un nombre de dominio, crear registros DNS para su servidor y configurar un host virtual de Apache.

Paso 1 — Instalación de phpMyAdmin

Puede utilizar APT (el gestor de paquetes de Linux) para instalar phpMyAdmin desde los repositorios oficiales de Ubuntu.

Como usuario sudo no root, actualice el índice de paquetes de su servidor si no lo ha hecho recientemente:

A continuación puede instalar el paquete phpmyadmin. Junto con ese paquete, la documentación oficial recomienda también instalar algunas extensiones PHP en su servidor para activar ciertas funciones y mejorar el rendimiento.

Si ha seguido el tutorial de la pila LAMP de los requisitos previos, varios de esos módulos ya se habrán instalado con el paquete php. Aun así, se recomienda instalar también estos paquetes:

  • php-mbstring: un módulo para gestionar las cadenas no ASCII y convertir las cadenas a distintas codificaciones
  • php-zip: esta extensión permite la subida de archivos .zip a phpMyAdmin
  • php-gd: activa la compatibilidad con la biblioteca gráfica GD
  • php-json: proporciona a PHP la compatibilidad con la serialización JSON
  • php-curl: permite a PHP interactuar con distintos tipos de servidores mediante distintos protocolos

Ejecute el comando siguiente para instalar esos paquetes en su sistema. Tenga en cuenta, no obstante, que el proceso de instalación le pide que tome algunas decisiones para configurar correctamente phpMyAdmin. Repasaremos esas opciones dentro de poco:

Estas son las opciones que debe elegir cuando se le propongan, para configurar correctamente su instalación:

  • Para la selección del servidor, elija apache2

Seleccione Sí cuando se le pregunte si desea utilizar dbconfig-common para configurar la base de datos.

Después se le pedirá que elija y confirme una contraseña de aplicación MySQL para phpMyAdmin.

El proceso de instalación añade el archivo de configuración de Apache de phpMyAdmin en el directorio /etc/apache2/conf-enabled/, donde se lee automáticamente. Para terminar de configurar Apache y PHP de modo que trabajen con phpMyAdmin, la única tarea que queda en esta sección del tutorial es activar explícitamente la extensión PHP mbstring, lo que puede hacer escribiendo:

A continuación, reinicie Apache para que se tengan en cuenta sus modificaciones:

phpMyAdmin ya está instalado y configurado para funcionar con Apache. Sin embargo, antes de poder conectarse y empezar a interactuar con sus bases de datos MySQL, deberá asegurarse de que sus usuarios de MySQL tienen los privilegios necesarios para interactuar con el programa.

Paso 2 — Autenticación y privilegios

Cuando instaló phpMyAdmin en su servidor, se creó automáticamente un usuario de base de datos llamado phpmyadmin que ejecuta ciertos procesos subyacentes del programa. En lugar de conectarse como ese usuario con la contraseña de administrador que definió durante la instalación, se recomienda conectarse como un usuario dedicado a la gestión de las bases de datos a través de la interfaz de phpMyAdmin.

Configuración del acceso para un usuario MySQL dedicado

Como alternativa, algunos pueden considerar que se ajusta mejor a su flujo de trabajo, y también a la seguridad, conectarse a phpMyAdmin con un usuario dedicado.

Para ello, abra de nuevo el shell de MySQL:

Si ha activado la autenticación por contraseña para su usuario root, como se describe en la sección anterior, deberá ejecutar el comando siguiente e introducir su contraseña cuando se le solicite para conectarse:

A partir de ahí, cree un nuevo usuario y asígnele una contraseña sólida:

Nota: una vez más, según la versión de PHP que haya instalado, puede que quiera configurar su nuevo usuario para que se autentique con mysql_native_password en lugar de caching_sha2_password.

A continuación, conceda a su nuevo usuario los privilegios adecuados. Por ejemplo, podría conceder al usuario privilegios sobre todas las tablas de la base de datos, así como la capacidad de añadir, modificar y eliminar privilegios de usuario, con este comando:

Después de esto, salga del shell de MySQL:

Ya puede acceder a la interfaz web visitando el nombre de dominio de su servidor o la dirección IP pública seguida de /phpmyadmin:

Illustration 2 — Comment installer et sécuriser phpMyAdmin sur Ubuntu ou Debian

Conéctese a la interfaz, ya sea como root o con el nuevo identificador y contraseña que acaba de configurar.

Al conectarse, se le redirigirá a la interfaz de usuario de phpMyAdmin.

Illustration 3 — Comment installer et sécuriser phpMyAdmin sur Ubuntu ou Debian

Paso 3 - Protección del acceso web

Debido a su gran difusión, phpMyAdmin es a menudo blanco de los atacantes. Por lo tanto, es esencial reforzar su seguridad para evitar cualquier acceso no autorizado. Un método consiste en utilizar las funciones de autenticación y autorización .htaccess integradas en Apache.

Para ello, primero es necesario activar las sobrecargas de archivos .htaccess modificando el archivo de configuración de Apache de phpMyAdmin.

Abra el archivo phpmyadmin.conf situado en su directorio de configuración de Apache con su editor de texto preferido. Aquí utilizamos nano:

Añada la directiva AllowOverride All en la sección <Directory /usr/share/phpmyadmin>, como se muestra a continuación:

Guarde y cierre el archivo una vez añadida la línea. Si ha utilizado nano, pulse CTRL + X, después Y e INTRO.

Para aplicar las modificaciones, reinicie Apache:

Ha llegado el momento de crear un archivo .htaccess para reforzar la seguridad.

En el directorio de la aplicación, cree y abra ese archivo con privilegios de root:

Añada en él la información siguiente:

Estas directivas significan, respectivamente:

  • Tipo de autenticación que se debe utilizar.
  • Mensaje mostrado en el cuadro de diálogo de autenticación.
  • Ubicación del archivo que contiene las contraseñas.
  • Solo los usuarios autenticados pueden acceder al recurso.

Una vez terminado, guarde y cierre el archivo.

Cree ahora el archivo .htpasswd añadiendo en él un usuario inicial:

Si desea añadir otro usuario, hágalo sin la opción -c:

Reinicie Apache para activar la autenticación mediante .htaccess:

A partir de ahora, al acceder a su subdirectorio phpMyAdmin se le pedirá una autenticación adicional. La conexión seguirá haciéndose desde:

Illustration 4 — Comment installer et sécuriser phpMyAdmin sur Ubuntu ou Debian

Tras proporcionar la autenticación de Apache, se le dirigirá a la página de autenticación habitual de phpMyAdmin para introducir sus credenciales de MySQL.

Esta capa de seguridad adicional es esencial, ya que phpMyAdmin ha estado expuesto a vulnerabilidades en el pasado.

Conclusión

Su phpMyAdmin debería estar ahora configurado y listo para usarse en su servidor Ubuntu 22.04. Gracias a esta interfaz puede gestionar sus bases de datos, usuarios y tablas, así como realizar las operaciones habituales.

Menciones

Guía adaptada para Awoui a partir del trabajo de Brian Boucheron/DigitalOcean bajo licencia International Creative Commons Attribution NonCommercial ShareAlike 4.0