Instale y asegure phpMyAdmin en CentOS 8

Iniciar sesión PHPMyAdmin

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

Características

  • Proporciona una interfaz web sencilla y fácil de usar.
  • Importar datos de CSV y SQL.
  • Admite la mayoría de las funciones de MySQL, que incluyen crear, copiar, soltar, renombrar, soltar y modificar bases de datos, tablas, campos e índices.
  • Le permite exportar datos a varios formatos, como PDF, CSV, SQL, XML y muchos más.
  • Manejo de múltiples servidores.
  • Creación de consultas complejas utilizando Query-by-example (QBE).

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

Requisitos

  • Un servidor que ejecuta CentOS 8.
  • Una contraseña de root está configurada en el servidor.

Instalar servidor LAMP

Primero, deberá instalar Apache, MariaDB, PHP y otras bibliotecas de PHP en su servidor. Puede 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 que todos los paquetes estén instalados, inicie el servicio Apache y MariaDB y habilítelos para que se inicien después de reiniciar el sistema con el siguiente comando:

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

Una vez que haya terminado, puede continuar con el siguiente paso.

Configurar MariaDB

De forma predeterminada, MariaDB no está protegido. Por lo tanto, deberá asegurarlo primero. Puede hacerlo ejecutando el script mysql_secure_installation:

mysql_secure_installation

Responda 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 haya terminado, debería ver el siguiente resultado:

 ... 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, su instalación de MariaDB está asegurada.

Instalar phpMyAdmin

De forma predeterminada, phpMyAdmin no está disponible en el repositorio predeterminado de CentOS 8. Por lo tanto, deberá descargar la última versión de phpMyAdmin desde su sitio web oficial para instalar phpMyAdmin. Puedes descargarlo con el siguiente comando:

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

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

unzip phpMyAdmin-4.9.2-all-languages.zip

A continuación, mueva 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, cambie el directorio a /usr/share/phpmyadmin y cambie el nombre del archivo config.sample.inc.php:

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

A continuación, abra el archivo con su 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';

Guarde y cierre el archivo cuando haya terminado. Luego, importa create_tables.sql con el siguiente comando:

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

Proporcione su contraseña raíz cuando se le solicite importar la tabla.

A continuación, cree un directorio tmp para phpmyadmin y otorgue 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, deberá crear un archivo de configuración de host virtual de Apache para phpMyAdmin. Puedes crearlo con el siguiente comando:

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

Agregue 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>

Guarde y cierre el archivo cuando haya terminado. Luego, reinicie el servicio de Apache con el siguiente comando:

systemctl restart httpd

Puede verificar el estado de Apache con el siguiente comando:

systemctl status httpd

Debería ver el siguiente resultado:

? 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

De manera predeterminada, SELinux está habilitado en CentOS 8. Por lo tanto, deberá configurar SELinux para que phpMyAdmin funcione correctamente.

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

dnf install policycoreutils-python-utils

A continuación, habilite 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 recurra a todos los archivos en su directorio phpmyadmin ejecutando el siguiente comando:

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

A continuación, deberá 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

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

Abra su navegador web y escriba la URL http://your-server-ip/phpmyadmin. Será redirigido a la página de inicio de sesión de phpMyAdmin, lo que significa que ha conseguido configurar phpMyAdmin correctamente en su servidor CentOS 8.

Iniciar sesión PHPMyAdmin

phpMyAdmin seguro

En este punto, la instancia de phpMyAdmin funciona correctamente. Sin embargo, proteger su instancia de phpMyAdmin del mundo exterior es una tarea importante para usted. En esta sección, le mostraremos cómo proteger su instancia de phpMyAdmin.

Permitir phpMyAdmin desde una IP específica

Primero, deberá configurar su phpMyAdmin para que sea accesible solo desde la dirección IP de su conexión doméstica.

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

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

Encuentra las siguientes líneas:

     <RequireAny>
       Require all granted
     </RequireAny>

Y reemplácelos por los siguientes:

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

Guarde y cierre el archivo cuando haya terminado.

Configurar una capa adicional de autenticación

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

Para hacerlo, cree un nuevo archivo de autenticación usando la herramienta htpasswd como se muestra a continuación:

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

Se le pedirá que proporcione su contraseña de administrador como se muestra a continuación:

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

A continuación, deberá configurar Apache para usar el archivo .htpasswd. Puede hacerlo editando el archivo /etc/httpd/conf.d/phpmyadmin.conf.

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

Agregue 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

Guarde el archivo y reinicie el servicio de Apache para que los cambios surtan efecto:

systemctl restart httpd

Acceder a phpMyAdmin

Ahora, su instancia de phpMyAdmin está protegida con una capa adicional de seguridad. Abra su navegador web y escriba la URL http://your-server-ip/phpmyadmin. Se le pedirá que ingrese las credenciales de inicio de sesión del usuario que creó anteriormente, como se muestra a continuación:

phpMyAdmin asegurado

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

Inicie sesión como usuario root en phpMyAdmin

Ahora, proporcione sus credenciales de inicio de sesión de usuario administrativo de MySQL y haga clic en el botón Ir. Deberías ver la siguiente página, lo que significa que ha logrado ingresar a phpMyAdmin con éxito:

Tablero de la base de datos de phpMyAdmin

Conclusión

¡Felicidades! Ha instalado y asegurado con éxito phpMyAdmin en su servidor CentOS 8. Ahora puede crear bases de datos, usuarios, tablas y administrarlos desde la interfaz basada en web. No dude en preguntarme si tiene alguna pregunta.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *