Introducción
Aunque muchos usuarios necesitan la funcionalidad de un sistema de gestión de bases de datos como MySQL, es posible que no se sientan cómodos interactuando con el sistema únicamente desde el prompt 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 proteger phpMyAdmin para que pueda usarlo de forma 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, asumiremos que está utilizando 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 asumiremos que ha completado 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 la instalación de una pila de LÁMPARAS en Ubuntu 16.04.
Finalmente, hay consideraciones de seguridad importantes cuando se usa software como phpMyAdmin, ya que:
- Se comunica directamente con su instalación de MySQL
- Maneja la autenticación usando credenciales 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 blanco de ataques, nunca debe ejecutar phpMyAdmin en sistemas remotos a través de una conexión HTTP simple. Si no tiene un dominio configurado con un certificado SSL/TLS, puede seguir esta guía para 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 empezar, instalaremos phpMyAdmin desde los repositorios predeterminados de Ubuntu.
Podemos hacer esto actualizando nuestro índice de paquetes local y luego utilizando 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 mensaje, apache2 se resalta, pero no se selecciona. Si no pulsa Espacio para seleccionar Apache, el instalador no moverá los archivos necesarios durante la instalación. Pulsa Espacio, Tabulador y, a continuación, Enter para seleccionar Apache.
- Para la selección de servidor, elija apache2.
- Seleccione sí cuando se le pregunte si usar
dbconfig-common
para configurar la base de datos - Se le solicitará la contraseña de administrador de su base de datos
- A continuación, se le pedirá que elija y confirme una contraseña para la aplicación
phpMyAdmin
en sí
El proceso de instalación agrega la configuración de Apache phpMyAdmin archivo en el directorio /etc/apache2/conf-enabled/
, donde se lee automáticamente.
Lo único que necesitamos hacer es habilitar explícitamente las extensiones PHP mcrypt
y mbstring
, lo que podemos hacer escribiendo:
- sudo phpenmod mcrypt
- sudo phpenmod mbstring
Después, 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 utilizando 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á algo como esto:
Paso dos: Asegure su instancia de phpMyAdmin
Pudimos poner en marcha nuestra interfaz de phpMyAdmin con bastante facilidad. Sin embargo, aún no hemos terminado. Debido a su ubicuidad, phpMyAdmin es un objetivo popular para los atacantes. Deberíamos 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 usando las funcionalidades de autenticación y autorización integradas de Apache .htaccess
.
Configure Apache para Permitir .Sobreescrituras de htaccess
Primero, necesitamos habilitar el uso de sobreescrituras de archivo .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 <Directory /usr/share/phpmyadmin>
del archivo de configuración, como esta:
<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 realizados, 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 introducir la siguiente información:
AuthType BasicAuthName "Restricted Files"AuthUserFile /etc/phpmyadmin/.htpasswdRequire valid-user
Repasemos lo que significan 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
: 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 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 debería estar fuera de los directorios que se están sirviendo. Crearemos este archivo en breve. -
Require valid-user
: Especifica que solo se debe dar acceso a este recurso a los usuarios autenticados. Esto es lo que en realidad impide la entrada de usuarios no autorizados.
Cuando haya terminado, guarde y cierre el archivo.
Crear el .archivo htpasswd para autenticación
La ubicación que seleccionamos para nuestro archivo de contraseña fue «/etc/phpmyadmin/.htpasswd
«. Ahora podemos crear este archivo y pasarle un usuario inicial con la utilidad htpasswd
:
- sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
se le pedirá Que seleccione y confirme una contraseña para el usuario que está creando. Después, el archivo se crea con la contraseña con hash que ha introducido.
Si desea ingresar un usuario adicional, debe hacerlo sin la bandera -c
, como esta:
- 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 normal de phpMyAdmin 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.