Cómo instalar y Proteger phpMyAdmin con Apache en un servidor CentOS 7

Introducción

Se necesitan sistemas de gestión de bases de datos relacionales como MySQL y MariaDB para una parte significativa de sitios web y aplicaciones. Sin embargo, no todos los usuarios se sienten cómodos administrando sus datos desde la línea de comandos.

Para resolver este problema, se creó un proyecto llamado phpMyAdmin con el fin de ofrecer una alternativa en forma de interfaz de gestión basada en web. En esta guía, demostraremos cómo instalar y asegurar una configuración de phpMyAdmin en un servidor CentOS 7. Construiremos esta configuración sobre el servidor web Apache, el servidor web más popular del mundo.

Requisitos

Antes de comenzar, hay algunos requisitos que deben resolverse.

Para asegurarse de que tiene una base sólida sobre la que construir este sistema, debe ejecutar nuestra guía de configuración inicial del servidor para CentOS 7. Entre otras cosas, esto le guiará a través de la configuración de un usuario no root con sudo acceso para comandos administrativos.

El segundo requisito previo que se debe cumplir para comenzar con esta guía es instalar una pila LAMP (Linux, Apache, MariaDB y PHP) en su servidor CentOS 7. Esta es la plataforma que utilizaremos para servir a nuestra interfaz phpMyAdmin (MariaDB es también el software de administración de bases de datos que deseamos administrar). Si aún no tiene una instalación de LAMP en su servidor, siga nuestro tutorial sobre la instalación de LAMP en CentOS 7.

Cuando su servidor está en un estado de funcionamiento correcto después de seguir estas guías, puede continuar con el resto de esta página.

Paso Uno: Instale phpMyAdmin

Con nuestra plataforma de LÁMPARAS ya instalada, podemos comenzar de inmediato con la instalación del software phpMyAdmin. Desafortunadamente, phpMyAdmin no está disponible en el repositorio predeterminado de CentOS 7.

Para obtener los paquetes que necesitamos, tendremos que agregar un repositorio adicional a nuestro sistema. El repositorio EPEL (Paquetes Adicionales para Enterprise Linux) contiene muchos paquetes adicionales, incluido el paquete phpMyAdmin que estamos buscando.

El repositorio EPEL se puede poner a disposición de su servidor instalando un paquete especial llamado epel-release. Esto reconfigurará su lista de repositorios y le dará acceso a los paquetes EPEL.

Para instalar, simplemente escriba:

sudo yum install epel-release

Ahora que el repositorio EPEL está configurado, puede instalar el paquete phpMyAdmin utilizando el sistema de empaquetado yum escribiendo:

sudo yum install phpmyadmin

La instalación se completará ahora. La instalación incluía un archivo de configuración de Apache que ya se ha instalado. Necesitaremos modificarlo un poco para que funcione correctamente para nuestra instalación.

Abra el archivo en su editor de texto ahora para que podamos hacer algunos cambios:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

En el interior, vemos algunos bloques de directorios con alguna lógica condicional para explicar la política de acceso para nuestro directorio. Hay dos directorios distintos que están definidos, y dentro de estos, configuraciones que serán válidas tanto para Apache 2.2 como para Apache 2.4 (que estamos ejecutando).

Actualmente, esta configuración está configurada para denegar el acceso a cualquier conexión que no se realice desde el propio servidor. Dado que estamos trabajando en nuestro servidor de forma remota, necesitamos modificar algunas líneas para especificar la dirección IP de su conexión doméstica.

Cambie cualquier línea que diga Require ip 127.0.0.1 o Allow from 127.0.0.1 para hacer referencia a la dirección IP de su conexión doméstica. Si necesita ayuda para encontrar la dirección IP de su conexión doméstica, consulte la siguiente sección. Debe haber cuatro ubicaciones en el archivo que deben cambiarse:

. . .Require ip your_workstation_IP_address. . .Allow from your_workstation_IP_address. . .Require ip your_workstation_IP_address. . .Allow from your_workstation_IP_address. . .

Cuando haya terminado, reinicie el servidor web Apache para implementar sus modificaciones escribiendo:

sudo systemctl restart httpd.service

Con eso, nuestra instalación de phpMyAdmin ya está operativa. Para acceder a la interfaz, vaya al nombre de dominio de su servidor o a la dirección IP pública seguida de /phpMyAdmin, en su navegador web:

http://server_domain_or_IP/phpMyAdmin

Pantalla de inicio de sesión de phpMyAdmin

Para iniciar sesión, utilice un par de nombre de usuario / contraseña de un usuario válido de MariaDB. El usuario root y la contraseña administrativa de MariaDB son una buena opción para comenzar. A continuación, podrá acceder a la interfaz administrativa:

Interfaz de administración de phpMyAdmin

Encuentre su dirección IP

Necesitará conocer la dirección IP del equipo que está utilizando para acceder a sus bases de datos para completar el paso anterior. Esta es una precaución de seguridad para que las personas no autorizadas no puedan conectarse a su servidor.

Nota: Esta no es la dirección IP de su VPS, es la dirección IP de su computadora doméstica o de trabajo.

Puede averiguar cómo The greater web ve su dirección IP visitando uno de estos sitios en su navegador web:

  • ¿Cuál Es Mi Dirección IP?
  • ¿Cuál es mi IP?
  • Mi dirección IP

Compare algunos sitios diferentes y asegúrese de que todos le den el mismo valor. Utilice este valor en el archivo de configuración anterior.

Paso Dos: Asegure su instancia phpMyAdmin

La instancia phpMyAdmin instalada en nuestro servidor debería ser completamente utilizable en este punto. Sin embargo, al instalar una interfaz web, hemos expuesto nuestro sistema MySQL al mundo exterior.

Incluso con la pantalla de autenticación incluida, esto es un gran problema. Debido a la popularidad de phpMyAdmin combinada con la gran cantidad de datos a los que proporciona acceso, instalaciones como estas son objetivos comunes para los atacantes.

Implementaremos dos estrategias simples para disminuir las posibilidades de que nuestra instalación se vea afectada y comprometida. Cambiaremos la ubicación de la interfaz de /phpMyAdmin a otra cosa para evitar algunos de los intentos de fuerza bruta de bots automatizados. También crearemos una puerta de enlace de autenticación adicional a nivel de servidor web que se debe pasar incluso antes de llegar a la pantalla de inicio de sesión de phpMyAdmin.

Cambiar la ubicación de acceso de la Aplicación

Para que nuestro servidor web Apache funcione con phpMyAdmin, nuestro archivo de configuración Apache phpMyAdmin utiliza un alias para apuntar a la ubicación de directorio de los archivos.

Para cambiar la URL donde se puede acceder a nuestra interfaz phpMyAdmin, simplemente necesitamos cambiar el nombre del alias. Abra el archivo de configuración de phpMyAdmin Apache ahora:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

Hacia la parte superior del archivo, verá dos líneas que se ven así:

Alias /phpMyAdmin /usr/share/phpMyAdminAlias /phpmyadmin /usr/share/phpMyAdmin

Estas dos líneas son nuestros alias, lo que significa que si accedemos al nombre de dominio o dirección IP de nuestro sitio, seguido de /phpMyAdmin o /phpmyadmin, se nos proporcionará el contenido en /usr/share/phpMyAdmin.

Queremos desactivar estos alias específicos, ya que están muy dirigidos por bots y usuarios maliciosos. En su lugar, deberíamos decidir sobre nuestro propio alias. Debería ser fácil de recordar, pero no fácil de adivinar. No debe indicar el propósito de la ubicación de la URL. En nuestro caso, vamos a ir con /nothingtosee.

Para aplicar los cambios previstos, debemos eliminar o comentar las líneas existentes y agregar las nuestras propias:

# Alias /phpMyAdmin /usr/share/phpMyAdmin# Alias /phpmyadmin /usr/share/phpMyAdminAlias /nothingtosee /usr/share/phpMyAdmin

Cuando haya terminado, guarde y cierre el archivo.

Para implementar los cambios, reinicie el servicio web:

sudo systemctl restart httpd.service

Ahora, si va a la ubicación anterior de su instalación de phpMyAdmin, obtendrá un error 404:

http://server_domain_or_IP/phpMyAdmin

Error phpMyAdmin 404

Sin embargo, su interfaz phpMyAdmin estará disponible en la nueva ubicación que seleccionamos:

http://server_domain_or_IP/nothingtosee

Pantalla de inicio de sesión de phpMyAdmin

Configuración de una puerta de autenticación de servidor Web

La siguiente característica que queríamos para nuestra instalación era una solicitud de autenticación que un usuario tendría que pasar antes de ver la pantalla de inicio de sesión de phpMyAdmin.

Afortunadamente, la mayoría de los servidores web, incluido Apache, proporcionan esta capacidad de forma nativa. Solo necesitaremos modificar nuestro archivo de configuración de Apache para usar un archivo de autorización.

Abra de nuevo el archivo de configuración de phpMyAdmin Apache en su editor de texto:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

Dentro del bloque de directorio /usr/share/phpMyAdmin, pero fuera de cualquiera de los bloques dentro, necesitamos agregar una directiva de anulación. Se verá así.:

. . .<Directory /usr/share/phpMyAdmin/> AllowOverride All <IfModule mod_authz_core.c> . . .</Directory>. . .

Esto nos permitirá especificar detalles de configuración adicionales en un archivo llamado .htaccess ubicado dentro del propio directorio phpMyAdmin. Usaremos este archivo para configurar nuestra autenticación con contraseña.

Guarde y cierre el archivo cuando haya terminado.

Reinicie el servicio web para implementar este cambio:

sudo systemctl restart httpd.service

Crear un .htaccess File

Ahora que tenemos la directiva override en nuestra configuración, Apache buscará un archivo llamado .htaccess dentro del directorio /usr/share/phpMyAdmin. Si encuentra una, utilizará las directivas que contiene para complementar sus datos de configuración anteriores.

Nuestro siguiente paso es crear el archivo .htaccess dentro de ese directorio. Usa tu editor de texto para hacerlo ahora:

sudo nano /usr/share/phpMyAdmin/.htaccess

Dentro de este archivo, necesitamos ingresar la siguiente información:

AuthType BasicAuthName "Admin Login"AuthUserFile /etc/httpd/pma_passRequire valid-user

Repasemos lo que significan cada una de estas líneas:

  • AuthType Básico: 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: 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 conocimiento sobre lo que se está protegiendo.
  • AuthUserFile: Establece la ubicación del archivo de contraseña real que se utilizará para la autenticación. Esto debería estar fuera de los directorios que se están sirviendo. Crearemos este archivo en un momento.
  • Requerir usuario válido: Esto especifica que solo se debe dar acceso a este recurso a los usuarios autenticados. Esto es lo que en realidad impide la entrada de usuarios no autorizados.

Cuando haya terminado de introducir esta información, guarde y cierre el archivo.

Crear el archivo de contraseña para autenticación

Ahora que hemos especificado la ubicación de nuestro archivo de contraseña mediante el uso de la directiva AuthUserFile en nuestro archivo .htaccess, necesitamos crear y rellenar el archivo de contraseña.

Esto se puede lograr mediante el uso de una utilidad Apache llamada htpasswd. Invocamos el comando pasándole la ubicación donde nos gustaría crear el archivo y el nombre de usuario para el que nos gustaría ingresar los detalles de autenticación:

sudo htpasswd -c /etc/httpd/pma_pass username

El indicador -c indica que esto creará un archivo inicial. La ubicación del directorio es la ruta de acceso y el nombre de archivo que se utilizará para el archivo. El nombre de usuario es el primer usuario que nos gustaría agregar. Se le pedirá que introduzca y confirme una contraseña para el usuario.

Si desea agregar usuarios adicionales para autenticarse, puede volver a llamar al mismo comando sin la bandera -c y con un nuevo nombre de usuario:

sudo htpasswd /etc/httpd/pma_pass seconduser

Con nuestro archivo de contraseña creado, se ha implementado una puerta de enlace de autenticación y ahora deberíamos ver un mensaje de contraseña la próxima vez que visitemos nuestro sitio:

http://server_domain_or_IP/nothingtosee

Página de autenticación Apache

Una vez que ingrese sus credenciales, se le llevará a la página de inicio de sesión normal de phpMyAdmin. Esta capa de protección adicional ayudará a mantener sus registros MySQL limpios de intentos de autenticación, además del beneficio de seguridad adicional.

Conclusión

Ahora puede administrar sus bases de datos MySQL desde una interfaz web razonablemente segura. Esta interfaz de usuario expone la mayor parte de la funcionalidad que está disponible desde el símbolo del sistema MySQL. Puede ver bases de datos y esquemas, ejecutar consultas y crear nuevos conjuntos de datos y estructuras.

You might also like

Deja una respuesta

Tu dirección de correo electrónico no será publicada.