Cómo instalar y proteger phpMyAdmin en Ubuntu

Introducción

Si bien muchos usuarios necesitan la funcionalidad de un sistema de administración de base de datos como MySQL, es posible que no se sientan cómodos interactuando con el sistema únicamente desde el indicador de MySQL.

phpMyAdmin fue creado para que los usuarios puedan interactuar con MySQL a través de una interfaz web. En esta guía, analizaremos cómo instalar y proteger phpMyAdmin para que puedas usarlo de manera segura para administrar tus bases de datos desde un sistema Ubuntu 16.04.

Prerrequisitos

Antes de comenzar con esta guía, debe completar algunos pasos básicos.

Primero, asumiremos que estás utilizando un usuario no root con privilegios de sudo, como se describe en los pasos 1-4 en la configuración inicial del servidor de Ubuntu 16.04.

También vamos a asumir que has completado una instalación de LAMP (Linux, Apache, MySQL y PHP) en tu servidor Ubuntu 16.04. Si esto aún no se ha completado, puedes seguir esta guía para instalar un conjunto LAMP en Ubuntu 16.04.

Finalmente, hay consideraciones de seguridad importantes al usar software como phpMyAdmin, ya que:

  • Se comunica directamente con tu instalación de MySQL.
  • Administra la autenticación usando las credenciales de MySQL.
  • Ejecuta y devuelve resultados para consultas SQL arbitrarias

Por estas razones, y debido a que es una aplicación de PHP ampliamente implementada que se dirige frecuentemente a ataques, nunca debes ejecutar phpMyAdmin en sistemas remotos a través de una conexión HTTP simple. Si no tienes un dominio existente configurado con un certificado SSL/TLS, puede seguir esta guía sobre cómo proteger Apache con Let’s Encrypt en Ubuntu 16.04.

Una vez que hayas terminado con estos pasos, estarás listo para comenzar con esta guía.

Paso uno – Instalar phpMyAdmin

Para comenzar, instalaremos phpMyAdmin desde los repositorios predeterminados de Ubuntu.

Podemos hacer esto actualizando nuestro índice de paquete local y luego utilizando el sistema de empaquetado apt para bajar los archivos e instalarlos en nuestro sistema:

Esto te hará algunas preguntas para configurar tu instalación correctamente.

Advertencia: cuando aparece el primer mensaje, apache2 se resalta, pero no se selecciona. Si no pulsas Espacio para seleccionar Apache, el instalador no moverá los archivos necesarios durante la instalación. Pulsa Espacio , Tab y luego Inter para seleccionar Apache.

  • Para la selección del servidor, elije apache2.
  • Selecciona  cuando se te pregunte si deseas utilizar dbconfig-common para configurar la base de datos
  • Se te pedirá la contraseña de administrador de tu base de datos
  • A continuación, se te pedirá que elijas y confirmes una contraseña para la aplicación phpMyAdmin en sí.

El proceso de instalación en realidad agrega el archivo de configuración phpMyAdmin Apache en el directorio /etc/apache2/conf-enabled/, donde se lee automáticamente.

Lo único que debemos hacer es habilitar explícitamente las extensiones PHP mcrypt y mbstring, lo que podemos hacer escribiendo:

Luego, deberás reiniciar Apache para que se reconozcan tus cambios:

Ahora puedes acceder a la interfaz web visitando el nombre de dominio o la dirección IP pública de tu servidor, seguido de /phpmyadmin:

Ahora puedes iniciar sesión en la interfaz con el nombre root de usuario y la contraseña administrativa que configuraste durante la instalación de MySQL.

Cuando inicies sesión, verás la interfaz de usuario, que se verá así:

Paso dos – Proteger tu instancia phpMyAdmin

Pudimos hacer que nuestra interfaz phpMyAdmin funcionara con bastante facilidad. Sin embargo, todavía no hemos terminado. Debido a su ubicuidad, phpMyAdmin es un objetivo popular para los atacantes. Debemos tomar medidas adicionales para evitar el acceso no autorizado.

Una de las maneras más fáciles de hacer esto es colocar una puerta de enlace frente a toda la aplicación. Podemos hacer esto utilizando las funciones .htaccess de autenticación y autorización integradas de Apache.

Configurar Apache para permitir anulaciones de .htaccess

Primero, debemos habilitar el uso de anulaciones .htaccess de archivos mediante la edición de nuestro archivo de configuración de Apache.

Editaremos el archivo vinculado que se ha colocado en nuestro directorio de configuración de Apache:

Necesitamos agregar una directiva AllowOverride All dentro de la sección <Directory /usr/share/phpmyadmin> del archivo de configuración, como esta:

Cuando hayas agregado esta línea, guarda y cierra el archivo.

Para implementar los cambios que hiciste, reinicia Apache:

Crear un archivo .htaccess

Ahora que hemos habilitado el uso .htaccess de nuestra aplicación, debemos crear uno para implementar algo de seguridad.

Para que esto tenga éxito, el archivo debe crearse dentro del directorio de la aplicación. Podemos crear el archivo necesario y abrirlo en nuestro editor de texto con privilegios de root escribiendo:

Dentro de este archivo, necesitamos ingresar la siguiente información:

Repasemos qué significa cada una de estas líneas:

  • AuthType Basic: Esta línea especifica el tipo de autenticación que estamos implementando. Este tipo implementará la autenticación de contraseña utilizando un archivo de contraseña.
  • AuthName: Esto establece el mensaje para el cuadro de diálogo de autenticación. Debe mantener este genérico para que los usuarios no autorizados no obtengan ninguna información sobre lo que se está protegiendo.
  • AuthUserFile: Esto establece la ubicación del archivo de contraseña que se utilizará para la autenticación. Esto debería estar fuera de los directorios que están siendo mostrados. Vamos a crear este archivo en breve.
  • Require valid-user: Esto especifica que solo los usuarios autenticados deben tener acceso a este recurso. Esto es lo que realmente impide que entren usuarios no autorizados.

Cuando hayas terminado, guarda y cierra el archivo.

Crear el archivo .htpasswd para la autenticación

La ubicación que seleccionamos para nuestro archivo de contraseña era ” /etc/phpmyadmin/.htpasswd“. Ahora podemos crear este archivo y pasarle un usuario inicial con la utilidad htpasswd:

Se te solicitará que selecciones y confirmes una contraseña para el usuario que estás creando. Posteriormente, el archivo se creará con la contraseña hash que ingresaste.

Si deseas ingresar un usuario adicional, debes hacerlo sin el indicador –c, como este:

Ahora, cuando accedas a tu subdirectorio phpMyAdmin, se te pedirá el nombre de la cuenta adicional y la contraseña que acabas de configurar:

Después de ingresar a la autenticación de Apache, se te llevará a la página de autenticación de phpMyAdmin para ingresar tus otras credenciales. Esto agregará una capa adicional de seguridad ya que phpMyAdmin ha sufrido vulnerabilidades en el pasado.

Conclusión

Ahora deberías tener phpMyAdmin configurado y listo para usar en tu servidor Ubuntu 16.04. Con esta interfaz, puedes crear fácilmente bases de datos, usuarios, tablas, etc., y realizar las operaciones habituales, como eliminar y modificar estructuras y datos.