Saltar al contenido

Cómo instalar y Secure phpMyAdmin en Ubuntu 18.04

marzo 4, 2020

 

Una versión anterior de este tutorial fue escrito por Brennan Bearnes.

Introducción

Mientras que muchos usuarios necesitan la funcionalidad de un sistema de gestión de base de datos como MySQL, que no se sienta cómodo interactuando con el sistema únicamente a partir de la línea de MySQL.

phpMyAdmin fue creada para que los usuarios puedan interactuar con MySQL a través de una interfaz web. En esta guía, vamos a discutir cómo instalar y phpMyAdmin seguro, de forma que se puede utilizar de forma segura para gestionar sus bases de datos en un sistema Ubuntu 18.04.

Requisitos previos

Antes de comenzar con esta guía, es necesario tener algunos pasos básicos terminados.

En primer lugar, vamos a asumir que su servidor tiene una raíz usuario no con privilegios sudo, así como un cortafuegos configurado con UFW, como se describe en la guía de configuración inicial del servidor de Ubuntu 18.04.

también vamos a suponer que la ha realizado un (, Apache, MySQL, PHP y Linux) Instalación lámpara en su servidor Ubuntu 18.04. Si esto no se ha completado todavía, usted puede seguir esta guía sobre cómo instalar una pila LAMP en Ubuntu 18.04.

Por último, hay importantes consideraciones de seguridad al utilizar el software como phpMyAdmin, ya que:

  • se comunica directamente con la instalación de MySQL
  • controla la autenticación mediante las credenciales de MySQL
  • ejecuta y devuelve resultados para SQL arbitrario consultas

Por estas razones , y porque es una aplicación PHP desplegado ampliamente que con frecuencia se desea atacar, nunca se debe ejecutar phpMyAdmin en sistemas remotos a través de una conexión HTTP plano. Si usted no tiene un dominio existente configurado con un certificado SSL / TLS, puede seguir esta guía en la obtención de Apache con Cifrar Vamos en Ubuntu 18.04. Para ello será necesario que se registre un nombre de dominio, crear registros DNS para su servidor, y configurar un host virtual Apache.

Una vez que haya terminado con estos pasos, ya está listo para empezar a trabajar con esta guía.

Paso 1 – Instalación de phpMyAdmin

Para empezar, vamos a instalar phpMyAdmin desde los repositorios de Ubuntu por defecto.

Esto se hace mediante la actualización de índice de paquetes del servidor y luego usando el sistema de paquetes apt para tirar hacia abajo los archivos e instalarlos en su sistema:

sudo apt update
sudo apt install phpmyadmin php-mbstring php-gettext

  • sudo update apt
  • sudo apt instalar phpmyadmin php-mbstring PHP-gettext

Esto le pedirá una serie de preguntas con el fin de configurar la instalación correctamente.

Advertencia: Cuando las aparecerá el mensaje “apache2” está resaltado, pero no seleccionado. Si lo hace no golpeó ESPACIO para seleccionar Apache, el instalador no mover los archivos necesarios durante la instalación. ESPACIO Hit, TAB, y luego ENTER para seleccionar Apache.

  • Para la selección del servidor, elegir apache2
  • Seleccione Sí cuando se le pregunta si desea utilizar dbconfig común para configurar la base de datos continuación se le pedirá
  • que usted elija y confirme una contraseña de la aplicación MySQL para phpMyAdmin

El proceso de instalación añade el archivo de configuración de phpMyAdmin Apache en el directorio / etc / apache2 / habilitado para conf /, donde se lee de forma automática. Lo único que tiene que hacer es explícitamente habilitar la extensión PHP mbstring, que se puede hacer escribiendo:

sudo phpenmod mbstring

  • sudo phpenmod mbstring

A continuación, reiniciar Apache para que los cambios se reconocerán:

sudo systemctl restart apache2

  • sudo systemctl reinicio apache2

phpMyAdmin ya está instalado y configurado. Sin embargo, antes de que pueda entrar y empezar a interactuar con sus bases de datos MySQL, que tendrá que asegurarse de que sus usuarios de MySQL tiene los permisos necesarios para interactuar con el programa.

Paso 2 – Ajuste de autenticación de usuario y privilegios

Al instalar phpMyAdmin en su servidor, se crea automáticamente una llamada phpmyadmin usuario de la base que lleva a cabo ciertos procesos subyacentes para el programa. En lugar de iniciar sesión como este usuario con la contraseña de administración se establece durante la instalación, se recomienda que iniciar sesión como la raíz de su MySQL usuario o como un usuario dedicado a la gestión de bases de datos a través de la interfaz de phpMyAdmin.

Configuración de contraseña de acceso a los sistemas de MySQL cuenta root

en Ubuntu corriendo MySQL 5.7 (y versiones posteriores), la raíz usuario MySQL está configurado para autenticar usando el plugin auth_socket por defecto en lugar de con una contraseña. Esto permite un cierto grado de seguridad mayor facilidad de uso y en muchos casos, pero también puede complicar las cosas cuando es necesario para permitir que un programa externo – como phpMyAdmin – para acceder el usuario.

Con el fin de conectarse a phpMyAdmin como su raíz MySQL usuario, tendrá que cambiar su método de autenticación de auth_socket a mysql_native_password si no lo ha hecho. Para ello, abrir el MySQL instrucción del terminal de:

sudo mysql

  • sudo mysql

A continuación, compruebe el método de autenticación cada uno de su usuario de MySQL cuentas de su uso con el siguiente comando:

SELECT user,authentication_string,plugin,host FROM mysql.user;

  • usuario SELECT, authentication_string, plug-in , host desde mysql.user;

Output+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)

En este ejemplo, se puede ver que la raíz usuario lo hace, de hecho, la autenticación mediante el plugin auth_socket. Para configurar la raíz cuenta para autenticarse con una contraseña, ejecute el siguiente comando ALTER USER. Asegúrese de cambiar la contraseña a una contraseña de su elección:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

  • ALTER ‘root’ @ ‘localhost’ identificado con mysql_native_password POR ‘contraseña’;

A continuación, ejecute FLUSH PRIVILEGIOS, que indica al servidor para recargar las tablas de permisos y poner los nuevos cambios en vigor:

FLUSH PRIVILEGES;

  • PRIVILEGIOS FLUSH;

Compruebe los métodos de autenticación empleados por cada uno de sus usuarios de nuevo para confirmar que la raíz de autentica ya no usando el plugin auth_socket:

SELECT user,authentication_string,plugin,host FROM mysql.user;

  • usuario SELECT, authentication_string, plugin, acogerá del mysql.user;

Output+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)

Se puede ver en esta salida que la raíz usuario autenticarse mediante una contraseña. Ahora puede iniciar sesión en la interfaz de phpMyAdmin como su raíz usuario con la contraseña que ha establecido para aquí.

Configuración de contraseña de acceso para un usuario de MySQL dedicado

Alternativamente, algunos pueden encontrar que se adapte mejor a su flujo de trabajo para conectarse a phpMyAdmin con un usuario dedicado. Para ello, abre la cáscara de MySQL una vez más:

sudo mysql

  • sudo mysql

Nota: Si tiene habilitada la autenticación de contraseña, como se describe en la sección anterior, tendrá que utilizar un comando diferente para acceder a la MySQL shell. A continuación se ejecutará el cliente de MySQL con privilegios de usuario normal, y sólo va a ganar privilegios de administrador dentro de la base de datos mediante la autenticación:

mysql -u root -p

  • mysql -u root -p

A partir de ahí, crear un nuevo usuario y darle una contraseña segura:

CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

  • CREATE USER ‘Sammy’ @ ‘localhost’ IDENTIFICADAS POR ‘contraseña’;

Entonces, conceder nuevos privilegios de usuario adecuados. Por ejemplo, se podría conceder los privilegios de usuario a todas las tablas dentro de la base de datos, así como la facultad de añadir, cambiar y privilegios de usuario quitar, con este comando:.

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

  • conceder a todos los privilegios sobre * * A ‘Sammy’ @ ‘localhost’ CON GRANT OPTION;

A continuación, salir de la cáscara de MySQL:

exit

    salida

Ahora puede acceder a la interfaz web visitando nombre de dominio del servidor o la dirección IP pública seguido de / phpmyadmin:

http://your_domain_or_IP/phpmyadmin

Acceder a la interfaz, ya sea como root o con el nuevo nombre de usuario y la contraseña que acaba de configurar.

Al iniciar la sesión, verá la interfaz de usuario, que se verá algo como esto:

Ahora que usted es capaz de conectar e interactuar con phpMyAdmin, lo único que queda por hacer es endurecer la seguridad de los sistemas para protegerlo de los atacantes.

Paso 3 – Asegurar su phpMyAdmin Instancia

Debido a su ubicuidad, phpMyAdmin es un objetivo popular para los atacantes, y se debe tener un cuidado especial para evitar el acceso no autorizado. Una de las maneras más fáciles de hacer esto es colocar una puerta en frente de toda la aplicación mediante el uso de funcionalidades de autenticación y autorización .htaccess incorporadas de Apache.

Para hacer esto, primero debe habilitar el uso de alteraciones temporales de archivo .htaccess editando el archivo de configuración de Apache.

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

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

  • sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Añadir una directiva AllowOverride Todos dentro de la sección del archivo de configuración, así:


Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .

Cuando haya añadido esta línea, guardar y cerrar el archivo.

para implementar los cambios que ha realizado, reiniciar Apache:

sudo systemctl restart apache2

  • sudo systemctl reiniciar apache2

Ahora que ha permitido el uso de .htaccess para su aplicación, es necesario crear una para aplicar en la práctica algo de seguridad.

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

sudo nano /usr/share/phpmyadmin/.htaccess

  • sudo nano /usr/share/phpmyadmin/.htaccess

Dentro de este archivo, introduzca la siguiente información:

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

Aquí es lo que cada una de estas líneas significa:

  • TipoAut básica: Esta línea especifica el tipo de autenticación que se va a implementar. Este tipo va a implementar la autenticación de contraseña con un archivo de contraseñas.
  • AuthName: Esto establece el mensaje para el cuadro de diálogo de autenticación. Hay que mantener esto tan genérico que los usuarios no autorizados no puedan tener ninguna información sobre lo que está siendo protegido.
  • AuthUserFile: Esto establece la ubicación del archivo de contraseña que se utiliza para la autenticación. Esto debería estar fuera de los directorios que están siendo atendidos. Vamos a crear este archivo en breve.
  • Require valid-user: Esto especifica que sólo los usuarios autenticados deben tener acceso a este recurso. Esto es lo que realmente evita que los usuarios no autorizados puedan penetrar.

Cuando haya terminado, guardar y cerrar el archivo.

La ubicación que ha seleccionado para su archivo de contraseñas fue /etc/phpmyadmin/.htpasswd. Ahora puede crear este archivo y pasarlo a un usuario inicial con la utilidad htpasswd:

sudo htpasswd -c /etc/phpmyadmin/.htpasswd username

  • sudo htpasswd -c /etc/phpmyadmin/.htpasswd nombre de usuario

Se le solicitará que seleccione y confirme una contraseña para el usuario que están creando. Posteriormente, el archivo se crea con el hash de la contraseña que ha introducido.

Si desea introducir un usuario adicional, tiene que hacerlo sin la bandera -c, así:

sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

  • sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

Ahora, cuando acceda a su phpMyAdmin subdirectorio, se le solicitará el nombre de cuenta y contraseña adicional que acaba de configurar:

https://domain_name_or_IP/phpmyadmin

Después de introducir la autenticación de Apache, usted será llevado a la página normal de autenticación phpMyAdmin para introducir sus credenciales de MySQL. Esta configuración añade una capa adicional de seguridad, lo que es deseable desde el phpMyAdmin ha sufrido de vulnerabilidades en el pasado.

Conclusión

Ahora debe tener phpMyAdmin configurado y listo para usar en el servidor de Ubuntu 18.04. El uso de esta interfaz, puede crear fácilmente bases de datos, usuarios, tablas, etc., y realizar las operaciones habituales como borrar y modificar las estructuras y los datos.