Cómo instalar y asegurar phpMyAdmin en Ubuntu 16.04
Introducción
Si bien muchos usuarios necesitan la funcionalidad de un sistema de administración de bases 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, discutiremos cómo instalar y asegurar phpMyAdmin para que pueda usarlo de manera segura para administrar sus bases de datos desde un sistema Ubuntu 16.04.
requisitos previos
Antes de comenzar con esta guía, debe completar algunos pasos básicos.
Primero, supondremos que está usando un usuario no root con privilegios sudo, como se describe en los pasos 1-4 en la configuración inicial del servidor de Ubuntu 16.04.
También vamos a suponer que completó una instalación LAMP (Linux, Apache, MySQL y PHP) en su servidor Ubuntu 16.04. Si esto aún no se ha completado, puede seguir esta guía sobre cómo instalar una pila LAMP en Ubuntu 16.04.
Finalmente, existen importantes consideraciones de seguridad al usar software como phpMyAdmin, ya que:
- Se comunica directamente con su instalación de MySQL
- Maneja la autenticación usando credenciales de MySQL
- Ejecuta y devuelve resultados para consultas SQL arbitrarias
Por estas razones, y debido a que es una aplicación PHP ampliamente implementada que con frecuencia es objeto de ataques, nunca debe ejecutar phpMyAdmin en sistemas remotos a través de una conexión HTTP simple. Si no tiene 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 haya terminado con estos pasos, estará 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 paquetes local y luego usando el sistema de empaquetado apt
para extraer los archivos e instalarlos en nuestro sistema:
- sudo apt-get update
- sudo apt-get install phpmyadmin php-mbstring php-gettext
Esto le hará algunas preguntas para configurar su instalación correctamente.
Advertencia: cuando aparece el primer aviso, apache2 está resaltado, pero no seleccionado. Si no presiona Espacio para seleccionar Apache, el instalador no moverá los archivos necesarios durante la instalación. Pulse Espacio, Tabulador y luego Intro para seleccionar Apache.
- Para la selección del servidor, elija apache2.
- Seleccione sí cuando se le pregunte si usar
dbconfig-common
para configurar la base de datos - Se le pedirá la contraseña del administrador de su base de datos
- Luego se le pedirá que elija y confirme una contraseña para la aplicación
phpMyAdmin
misma
El proceso de instalación en realidad agrega el archivo de configuración de phpMyAdmin Apache en el directorio /etc/apache2/conf-enabled/
, donde se lee automáticamente.
Lo único que tenemos que hacer es habilitar explícitamente las extensiones PHP mcrypt
y mbstring
, lo que podemos hacer escribiendo:
- sudo phpenmod mcrypt
- sudo phpenmod mbstring
Luego, deberá reiniciar Apache para que se reconozcan sus cambios:
- sudo systemctl restart apache2
Ahora puede acceder a la interfaz web visitando el nombre de dominio de su servidor o la dirección IP pública seguida de /phpmyadmin
:
https://domain_name_or_IP/phpmyadmin
Ahora puede iniciar sesión en la interfaz con el nombre de usuario root
y la contraseña administrativa que configuró durante la instalación de MySQL.
Cuando inicie sesión, verá la interfaz de usuario, que se verá así:
Paso dos: asegure su instancia de phpMyAdmin
Pudimos poner en funcionamiento nuestra interfaz phpMyAdmin con bastante facilidad. Sin embargo, aún 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 formas más fáciles de hacer esto es colocar una puerta de enlace frente a toda la aplicación. Podemos hacer esto utilizando las funcionalidades de autenticación y autorización .htaccess
integradas de Apache.
Configurar Apache para permitir anulaciones de .htaccess
Primero, debemos habilitar el uso de anulaciones de archivos .htaccess
editando nuestro archivo de configuración de Apache.
Editaremos el archivo vinculado que se ha colocado en nuestro directorio de configuración de Apache:
- sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Necesitamos agregar una directiva AllowOverride All
dentro de la sección
del archivo de configuración, así:
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .
Cuando haya agregado esta línea, guarde y cierre el archivo.
Para implementar los cambios que realizó, reinicie Apache:
- sudo systemctl restart apache2
Crear un archivo .htaccess
Ahora que hemos habilitado el uso de .htaccess
para nuestra aplicación, necesitamos 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:
- sudo nano /usr/share/phpmyadmin/.htaccess
Dentro de este archivo, necesitamos ingresar la siguiente información:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
Repasemos lo que 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 mediante 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
: establece la ubicación del archivo de contraseña que se utilizará para la autenticación. Esto debe estar fuera de los directorios que se están sirviendo. Crearemos este archivo en breve.Requerir usuario válido
: Esto especifica que solo los usuarios autenticados deben tener acceso a este recurso. Esto es lo que realmente impide que los usuarios no autorizados ingresen.
Cuando haya terminado, guarde y cierre el archivo.
Cree el archivo .htpasswd para la autenticación
La ubicación que seleccionamos para nuestro archivo de contraseñas fue \/etc/phpmyadmin/.htpasswd
”. Ahora podemos crear este archivo y pasarlo a un usuario inicial con htpasswd
utilidad:
- sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
Se le pedirá que seleccione y confirme una contraseña para el usuario que está creando. Posteriormente, el archivo se crea con la contraseña cifrada que ingresó.
Si desea ingresar un usuario adicional, debe hacerlo sin el indicador -c
, así:
- sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
Ahora, cuando acceda a su subdirectorio phpMyAdmin, se le solicitará el nombre de cuenta y la contraseña adicionales que acaba de configurar:
https://domain_name_or_IP/phpmyadmin
Después de ingresar la autenticación de Apache, se le llevará a la página de autenticación de phpMyAdmin normal para ingresar sus otras credenciales. Esto agregará una capa adicional de seguridad ya que phpMyAdmin ha sufrido vulnerabilidades en el pasado.
Conclusión
Ahora debería tener phpMyAdmin configurado y listo para usar en su servidor Ubuntu 16.04. Con esta interfaz, puede crear fácilmente bases de datos, usuarios, tablas, etc., y realizar las operaciones habituales, como eliminar y modificar estructuras y datos.