Instalar y asegurar phpMyAdmin en CentOS 8

phpMyAdmin es una herramienta gratuita y de código abierto para gestionar servidores MySQL y MariaDB a través de una interfaz basada en la web. Con phpMyAdmin, puedes crear y gestionar bases de datos y usuarios, ejecutar sentencias SQL, importar y exportar datos, y realizar actividades en la base de datos como, crear, eliminar, tablas, columnas, índices, permisos y muchas más. phpMyAdmin es una de las herramientas de administración más populares y más utilizadas, especialmente para servicios de alojamiento web.

Características

  • Proporciona una interfaz web sencilla y fácil de usar.
  • Importa datos desde CSV y SQL.
  • Soporta la mayoría de las funciones de MySQL, como crear, copiar, eliminar, renombrar y alterar bases de datos, tablas, campos e índices.
  • Permite exportar datos a varios formatos como, PDF, CSV, SQL, XML y muchos más.
  • Gestionar varios servidores.
  • Crear consultas complejas mediante Query-by-example (QBE).

En este tutorial, te mostraremos cómo instalar y asegurar phpMyAdmin en un servidor CentOS 8.

Requisitos

  • Un servidor con CentOS 8.
  • Una contraseña de root configurada en el servidor.

Instalar el servidor LAMP

En primer lugar, necesitarás instalar Apache, MariaDB, PHP y otras librerías PHP en tu servidor. Puedes instalarlos todos con el siguiente comando:

dnf install httpd mariadb-server php php-pdo php-pecl-zip php-json php-common php-fpm php-mbstring php-cli php-mysqlnd php-json php-mbstring wget unzip

Una vez instalados todos los paquetes, inicia el servicio de Apache y MariaDB y permite que se inicien tras el reinicio del sistema con el siguiente comando:

systemctl start httpd
systemctl start mariadb
systemctl enable httpd
systemctl enable mariadb

Una vez que hayas terminado, puedes pasar al siguiente paso.

Configurar MariaDB

Por defecto, MariaDB no está protegida. Así que primero tendrás que asegurarlo. Puedes hacerlo ejecutando el script mysql_secure_installation:

mysql_secure_installation

Responde a todas las preguntas como se muestra a continuación:

Set root password? [Y/n] Y
New password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Una vez que hayas terminado, deberías ver la siguiente salida:

 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

En este punto, tu instalación de MariaDB está asegurada.

Instalar phpMyAdmin

Por defecto, phpMyAdmin no está disponible en el repositorio por defecto de CentOS 8. Por tanto, tendrás que descargar la última versión de phpMyAdmin desde su sitio web oficial. Puedes descargarla con el siguiente comando:

wget https://files.phpmyadmin.net/phpMyAdmin/4.9.2/phpMyAdmin-4.9.2-all-languages.zip

Una vez descargado, descomprime el archivo descargado con el siguiente comando:

unzip phpMyAdmin-4.9.2-all-languages.zip

A continuación, mueve el contenido extraído al directorio /usr/share como se muestra a continuación:

mv phpMyAdmin-4.9.2-all-languages /usr/share/phpmyadmin

A continuación, cambia el directorio a /usr/share/phpmyadmin y cambia el nombre del archivo config.sample.inc.php:

cd /usr/share/phpmyadmin
mv config.sample.inc.php config.inc.php

A continuación, abre el archivo con tu editor de texto favorito como se muestra a continuación:

nano config.inc.php

Cambia la siguiente línea:

$cfg['blowfish_secret'] = 'your-secret-password';

Guarda y cierra el archivo cuando hayas terminado. A continuación, importa el archivo create_tables.sql con el siguiente comando:

mysql < /usr/share/phpmyadmin/sql/create_tables.sql -u root -p

Proporciona tu contraseña de root cuando se te pida que importes la tabla.

A continuación, crea un directorio tmp para phpmyadmin y dale los permisos adecuados:

mkdir /usr/share/phpmyadmin/tmp
chown -R apache:apache /usr/share/phpmyadmin
chmod 777 /usr/share/phpmyadmin/tmp

Configurar Apache para phpMyAdmin

A continuación, tendrás que crear un archivo de configuración del host virtual de Apache para phpMyAdmin. Puedes crearlo con el siguiente comando:

nano /etc/httpd/conf.d/phpmyadmin.conf

Añade las siguientes líneas:

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny> 
      Require all granted
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpmyadmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require all granted
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia el servicio Apache con el siguiente comando:

systemctl restart httpd

Puedes comprobar el estado del Apache con el siguiente comando:

systemctl status httpd

Deberías ver la siguiente salida:

? httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/httpd.service.d
           ??php-fpm.conf
   Active: active (running) since Wed 2019-12-18 01:07:52 EST; 6s ago
     Docs: man:httpd.service(8)
 Main PID: 5636 (httpd)
   Status: "Started, listening on: port 80"
    Tasks: 213 (limit: 25044)
   Memory: 28.7M
   CGroup: /system.slice/httpd.service
           ??5636 /usr/sbin/httpd -DFOREGROUND
           ??5639 /usr/sbin/httpd -DFOREGROUND
           ??5640 /usr/sbin/httpd -DFOREGROUND
           ??5641 /usr/sbin/httpd -DFOREGROUND
           ??5642 /usr/sbin/httpd -DFOREGROUND

Dec 18 01:07:52 centos8 systemd[1]: Stopped The Apache HTTP Server.
Dec 18 01:07:52 centos8 systemd[1]: Starting The Apache HTTP Server...
Dec 18 01:07:52 centos8 httpd[5636]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::200:d0>
Dec 18 01:07:52 centos8 httpd[5636]: Server configured, listening on: port 80
Dec 18 01:07:52 centos8 systemd[1]: Started The Apache HTTP Server.

Configurar SELinux y Firewall

Por defecto, SELinux está activado en CentOS 8. Así que tendrás que configurar SELinux para que phpMyAdmin funcione correctamente.

Primero, instala el paquete policycoreutils-python-utils para gestionar un entorno SELinux con el siguiente comando:

dnf install policycoreutils-python-utils

A continuación, habilita el acceso al directorio /usr/share/phpmyadmin con el siguiente comando:

semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/phpmyadmin/'
semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/phpmyadmin/tmp(/.*)?"

Ahora recurre a todos los archivos de tu directorio phpmyadmin ejecutando el siguiente comando:

restorecon -Rv '/usr/share/phpmyadmin/'

A continuación, tendrás que crear una regla de firewall para permitir el servicio HTTP desde redes externas. Puedes permitirlo con el siguiente comando:

firewall-cmd --permanent --add-service=http
firewall-cmd --reload

Ahora phpMyAdmin está instalado y configurado. Ahora es el momento de comprobar si funciona o no.

Abre tu navegador web y escribe la URL http://your-server-ip/phpmyadmin. Serás redirigido a la siguiente página:

Acceso a PHPMyAdmin

Proteger phpMyAdmin

En este punto, la instancia de phpMyAdmin está funcionando correctamente. Sin embargo, proteger tu instancia de phpMyAdmin del mundo exterior es una tarea importante para ti. En esta sección, te mostraremos cómo asegurar tu instancia de phpMyAdmin.

Permitir phpMyAdmin desde una IP específica

En primer lugar, tendrás que configurar tu phpMyAdmin para que sólo sea accesible desde la dirección IP de tu conexión doméstica.

Puedes configurarlo editando el archivo /etc/httpd/conf.d/phpmyadmin.conf:

nano /etc/httpd/conf.d/phpmyadmin.conf

Busca las siguientes líneas:

     <RequireAny>
       Require all granted
     </RequireAny>

Y, sustitúyelas por las siguientes:

<RequireAny>
    Require ip your-home--connection-ip-address
    Require ip ::1
</RequireAny>

Guarda y cierra el archivo cuando hayas terminado.

Configurar una capa adicional de autenticación

Es una buena idea proteger con contraseña tu directorio phpmyadmin configurando una autenticación básica.

Para ello, crea un nuevo archivo de autenticación utilizando la herramienta htpasswd como se muestra a continuación:

mkdir /etc/phpmyadmin
htpasswd -c /etc/phpmyadmin/.htpasswd admin

Se te pedirá que proporciones tu contraseña de administrador como se muestra a continuación:

New password: 
Re-type new password: 
Adding password for user admin

A continuación, tendrás que configurar Apache para que utilice el archivo .htpasswd. Puedes hacerlo editando el archivo /etc/httpd/conf.d/phpmyadmin.conf.

nano /etc/httpd/conf.d/phpmyadmin.conf

Añade las siguientes líneas debajo de la línea «AddDefaultCharset UTF-8»:

    Options  +FollowSymLinks +Multiviews +Indexes
    AllowOverride None
    AuthType basic
    AuthName "Authentication Required"
    AuthUserFile /etc/phpmyadmin/.htpasswd
    Require valid-user

Guarda el archivo y reinicia el servicio Apache para que los cambios surtan efecto:

systemctl restart httpd

Accede a phpMyAdmin

Ahora, tu instancia de phpMyAdmin está protegida con una capa extra de seguridad. Abre tu navegador web y escribe la URL http://your-server-ip/phpmyadmin. Se te pedirá que introduzcas las credenciales de acceso del usuario que has creado previamente, como se muestra a continuación:

phpMyAdmin seguro

Proporciona tu nombre de usuario y contraseña de administrador, y luego haz clic en el botón Aceptar. Serás redirigido a la página de inicio de sesión de phpMyAdmin:

Inicia sesión como usuario root en phpMyAdmin

Ahora, proporciona tus credenciales de inicio de sesión del usuario administrativo de MySQL y haz clic en el botón Ir. Deberías ver la siguiente página:

Panel de control de la base de datos phpMyAdmin

Conclusión

Enhorabuena! has instalado y asegurado con éxito phpMyAdmin en el servidor CentOS 8. Ahora puedes crear bases de datos, usuarios, tablas y administrarlas desde la interfaz basada en la web. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...