Existen diversas soluciones que podemos tomar para aumentar las posibilidades de escalamiento de nuestros servidores y de las aplicaciones que allí están alojadas enfocándose en mejorar las alternativas de cada usuario de la organización.
Dentro de todo este mundo de aplicaciones, tenemos un segmento que sobresale y son las bases de datos, aunque hoy en día es normal hacer uso de un sistema de gestión de bases de datos como MariaDB, muchos usuarios y programadores no están totalmente a gusto con su interfaz y por ello optan por usar otra de las aplicaciones mas conocidas como lo es phpMyAdmin.
A través de este tutorial, Solvetic explicara como lograr instalar y asegurar la instalación de phpMyAdmin en Debian 9 y así sacar el máximo beneficio de sus características y a la vez proteger su integridad de accesos no autorizados.
phpMyAdmin es compatible con diversas operaciones en MySQL y MariaDB, en este ámbito, todas las operaciones de uso frecuente como administración de bases de datos, tablas, columnas, relaciones, índices, usuarios, permisos, las podemos llevar a cabo a través de la interfaz de usuario y al mismo tiempo será posible usar directamente cualquier declaración de SQL.
- Interfaz web intuitiva
- Cuenta con soporte para muchas de las características de MySQL como son explorar y eliminar bases de datos, tablas, vistas, campos e índices, crear, copiar, renombrar y alterar bases de datos, tablas, campos e índices, ejecutar tareas del servidor de mantenimiento, bases de datos, tablas y más.
- Podremos ejecutar, editar y marcar cualquier instrucción SQL incluyendo consultas por lotes
- Facilita la administración de cuentas de usuario y privilegios de MySQL
- Administra procedimientos almacenados y disparadores
- Ejecuta búsquedas globales en una base de datos o un subconjunto de estas
- Puede crear gráficos de la base de datos en varios formatos
- Esta en la capacidad de crear consultas complejas haciendo uso de Query-by-example (QBE)
- Puede transformar datos almacenados en cualquier formato toando como base un conjunto de funciones predefinidas
- Puede administrar múltiples servidores
- phpMyAdmin puede exportar datos a varios formatos como CSV, SQL, XML, PDF, ISO / IEC 26300 - Texto y hoja de cálculo de OpenDocument, Word, LATEX y más
- Puede importar datos de CSV y SQL
Contar con la instalación LAMP (Linux, Apache, MariaDB y PHP) en el servidor Debian 9, para guiarnos en este proceso podemos visitar el siguiente enlace:
Adicional a ello, debemos contar con un firewall configurado con ufw.
1. Cómo instalar phpMyAdmin Debian 9
Una vez actualizado el sistema, procedemos a instalar PHP junto a algunas dependencias ejecutando el siguiente comando:
apt install phpmyadmin php-mbstring php-gettext
Allí ingresaremos la letra S para confirmar la descarga e instalación de PHP y durante este proceso se desplegará lo siguiente:
Allí seleccionamos apache2 como el servidor web, para esta selección pulsamos la tecla Espacio y con la tecla Tab seleccionamos Aceptar, pulsamos Enter para continuar con el proceso de instalación:
Posteriormente debemos definir la contraseña de aplicación MySQL:
Pulsamos Enter y debemos confirmarla:
Luego confirmaremos la contraseña del usuario root para la base de datos. Con esto culmina el proceso de instalación de phpMyAdmin.
El proceso de instalación se encarga de añadir el archivo de configuración phpMyAdmin Apache en el directorio /etc/apache2/conf-enabled/, el cual se lee automáticamente.
Ahora debemos habilitar explícitamente la extensión PHP mbstring la cual se utiliza para administrar cadenas que no sean ASCII y convertir cadenas a diferentes codificaciones., esto lo logramos ejecutando lo siguiente:
phpenmod mbstringFinalmente, reiniciamos el servicio para aplicar los cambios:
systemctl restart apache2
2. Cómo configurar usuarios y privilegios de phpMyAdmin Debian 9
Al momento de instalar phpMyAdmin en el servidor, se creó automáticamente un usuario de base de datos denominado phpmyadmin el cual puede realizar ciertos procesos subyacentes para el programa, por razones de seguridad es ideal, en lugar de iniciar sesión con este usuario y la contraseña administrativa que se estableció durante la instalación, iniciar sesión con una cuenta diferente.
En las nuevas instalaciones en sistemas Debian 9, el usuario root MariaDB está configurado para autenticarse usando el plugin unix_socket de forma predeterminada en lugar de con una contraseña, dado que phpMyAdmin requiere que los usuarios se autentiquen con una contraseña, será necesario crear una nueva cuenta MariaDB para acceder a la interfaz web de la aplicación.
Podemos comprobar el acceso a phpMyAdmin ejecutando la siguiente sintaxis en algún navegador web:
https://IP_Servidor/phpmyadmin
Allí ingresamos con el usuario estándar y tendremos acceso a la plataforma de phpMyAdmin. Podemos crear un nuevo usuario para phpMyAdmin ingresando la siguiente línea en la terminal de Debian 9:
mariadb
En caso de tener activa la autenticación con contraseña, vamos a ejecutar el siguiente comando para obtener privilegios de administrador dentro de la base de datos:
mariadb -u usuario -pEn la consola de la base de datos ingresaremos lo siguiente:
Vamos a crear el usuario y asignar la contraseña deseada:
CREATE USER 'usuario@'localhost' IDENTIFIED BY 'password';Ahora, otorgamos al nuevo usuario los privilegios correctos:
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'localhost' WITH GRANT OPTION;Salimos de la base de datos:
exit
Ahora podremos acceder a phpMyAdmin con el nuevo usuario creado:
Pulsamos en Continuar y este será el entorno de phpMyAdmin:
Hasta este punto tendremos acceso a la plataforma de phpMyAdmin y su entorno peor aun esta se encuentra insegura.
3. Cómo asegurar la instancia de phpMyAdmin
phpMyAdmin se ha convertido en un objetivo tradicional y frecuente para los atacantes debido a su facilidad de acceso, para evitar esto, podemos implementar un Gateway para la aplicación el cual hará uso de las funcionalidades de autenticación y autorización de .htaccess integradas de Apache
Para llevar a cabo esto, vamos a habilitar el uso de anulaciones de archivos .htaccess editando el archivo de configuración de Apache a través de la siguiente línea:
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Allí ingresaremos la siguiente línea en la sección <Directory /usr/share/phpmyadmin>:
AllowOverride All
Guardamos los cambios usando la combinación de teclas Ctrl + O y salimos del editor usando las teclas Ctrl + X.
Luego de esto, reiniciamos el servidor Apache ejecutando el comando:
systemctl restart apache2
Hemos habilitado el uso de .htaccess para la aplicación de phpMyAdmin, ahora vamos a crear un usuario para implementar la seguridad general del entorno, este archivo debe ser creado dentro del directorio de la aplicación, para ello vamos a crear el archivo y abrirlo con el editor deseado de la siguiente forma:
sudo nano /usr/share/phpmyadmin/.htaccessEn el nuevo archivo pegaremos lo siguiente:
AuthType Basic AuthName "Restricted Files" AuthUserFile /etc/phpmyadmin/.htpasswd Require valid-user
Guardamos los cambios con la combinación de teclas Ctrl + O y salimos del editor usando las teclas Ctrl + X.
Las líneas que hemos ingresado representan:
La ubicación que hemos seleccionado para el archivo de contraseña es /etc/phpmyadmin/.htpasswd, vamos a crear este archivo y asignarlo a un usuario inicial usando la utilidad htpasswd:
htpasswd -c /etc/phpmyadmin/.htpasswd “usuario”
Ingresamos la contraseña deseada y de esta forma este nuevo usuario tendrá un acceso seguro a phpMyAdmin. Ahora, cuando intentemos acceder de nuevo a phpMyAdmin a través del navegador se desplegará la siguiente ventana emergente:
Allí ingresamos las credenciales del usuario que hemos creado y al pulsar en el botón Acceder estaremos en el entorno de phpMyAdmin:
De esta forma, hemos aprendido a instalar y a asegurar phpMyAdmin en Debian 9.