Búsqueda de sitios web

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:

  1. sudo apt-get update
  2. 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:

  1. sudo phpenmod mcrypt
  2. sudo phpenmod mbstring

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

  1. 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:

  1. 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:

  1. 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:

  1. 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:

  1. 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í:

  1. 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.