Cómo configurar HTTPS (certificados SSL) para asegurar el inicio de sesión de PhPMyAdmin

Cómo configurar HTTPS (certificados SSL) para asegurar el inicio de sesión de PhPMyAdmin

Para introducir este consejo, olfaticemos el tráfico HTTP entre una máquina cliente y el Debian 8 Servidor donde hemos cometido el error inocente para iniciar sesión utilizando las credenciales del usuario de la base de datos en nuestro último artículo en: Cambiar y asegurar la URL de inicio de sesión PhPMyAdmin seguro

Como mencionamos en el consejo anterior, no intente hacer esto todavía si no desea exponer sus credenciales. Para comenzar a olfatear el tráfico, escribimos el siguiente comando y presionamos Enter:

# TCPDUMP PORT HTTP -L -A | egrep -i 'pass = | pwd = | log = | login = | user = | username = | pw = | passw = | passwd = | contraseña = | pass: | user: | nombre de usuario: | contraseña: | inicio de sesión: | pass | Usuario ' -Línea Tombinada -B20 

No nos llevará mucho tiempo darnos cuenta de que el nombre de usuario y contraseña se han enviado a través del cable en formato de texto plano, como puede ver en la salida truncada de tcpdump en la imagen a continuación.

Tenga en cuenta que tenemos parte oculta del raíz Contraseña con una marca azul sobre él:

Olfateo de tráfico HTTP

Para evitar esto, aseguremos la página de inicio de sesión con un certificado. Para hacer esto, instale el paquete mod_ssl en Cento distribuciones basadas.

# yum instalación mod_ssl 

Aunque usaremos el Debian/Ubuntu ruta y nombres, el mismo procedimiento es válido para Cento y Rhel Si reemplaza los comandos y rutas a continuación con el Cento equivalentes.

Cree un directorio para almacenar la clave y el certificado:

# mkdir/etc/apache2/ssl [encendido Debian/Ubuntu sistemas basados] # mkdir/etc/httpd/ssl [encendido Cento sistemas basados] 

Crea la clave y el certificado:

----------- En Debian/Ubuntu Sistemas basados ​​----------- # OpenSSL Req -x509 -nodes -days 365 -Newkey RSA: 2048 -keyout/etc/apache2/ssl/apache2.clave -out/etc/apache2/ssl/apache.CRT ----------- Cento Sistemas basados ​​----------- # OpenSSL Req -x509 -nodes -days 365 -Newkey RSA: 2048 -Keyout/etc/httpd/ssl/apache.clave -out/etc/httpd/ssl/apache.CRT 
Salida de muestra
... +++ ... +++ escribiendo nueva clave privada para '/etc/httpd/ssl/apache.clave '------ Está a punto de que se le pida que ingrese información que se incorporará a su solicitud de certificado. Lo que está a punto de ingresar es lo que se llama un nombre distinguido o un DN. Hay bastantes campos, pero puede dejar algo de blanco para algunos campos, habrá un valor predeterminado, si ingresa '.', el campo se dejará en blanco. ----- Nombre del país (código de 2 letras) [xx]:EN Nombre de estado o provincia (nombre completo) []:Maharashtra Nombre de la localidad (por ejemplo, ciudad) [Ciudad predeterminada]:Mumbai Nombre de la organización (por ejemplo, empresa) [Ltd de compañía predeterminada]:Tecmenta Nombre de la unidad organizacional (por ejemplo, sección) []:Tecmenta Nombre común (por ejemplo, su nombre o el nombre de host de su servidor) []:Tecmenta Dirección de correo electrónico []:[correo electrónico protegido] 

A continuación, verifique la clave y el certificado.

# cd/etc/apache2/ssl/[encendido Debian/Ubuntu sistemas basados] # cd/etc/httpd/ssl/[en Cento sistemas basados] # ls -l total 8 -RW-R-R--. 1 raíz raíz 1424 7 de septiembre 15:19 Apache.CRT -RW-R-R--. 1 raíz raíz 1704 7 de septiembre 15:19 Apache.llave 

En Debian/Ubuntu, Asegúrate de eso apache está escuchando en el puerto 443 para el sitio predeterminado (/etc/apache2/sites disponible/000 deformientes.confusión) y agregue las 3 líneas relacionadas con SSL dentro del Anfitrión virtual declaración:

SSLEngine en SSLCertificateFile/Etc/Apache2/SSL/Apache.CRT SSLCertificAtekeyFile/Etc/Apache2/SSL/Apache.llave 
Habilitar SSL en VirtualHost

En Cento distribuciones basadas, contar apache para escuchar en el puerto 443 y busque la directiva de escuchar en /etc/httpd/conf/httpd.confusión y agregue las líneas anteriores debajo de él.

SSLEngine en SSLCertificateFile/etc/httpd/ssl/apache.CRT SSLCertificAtekeyFile/etc/httpd/ssl/apache.llave 

Guardar cambios, cargue el SSL Apache módulo Debian/Ubuntu distribuciones (en Cento Esto se carga automáticamente cuando instaló mod_ssl más temprano):

# a2enmod ssl 

Fuerza phpmyadmin usar Ssl, Asegúrese de que la siguiente línea esté presente en /etc/phpmyadmin/config.Cª.php o /etc/phpmyadmin/config.Cª.php archivo:

$ cfg ['Forcessl'] = true; 

y reiniciar el servidor web:

# SystemCTL reiniciar apache2 [ON Debian/Ubuntu sistemas basados] # systemCtl reiniciar httpd [en Debian/Ubuntu sistemas basados] 

A continuación, inicie su navegador web y escriba https: /// mi (Aprenda a cambiar la URL de inicio de sesión de PhPMyadmin) como se muestra a continuación.

Importante: Tenga en cuenta que solo está diciendo que la conexión no es segura porque estamos utilizando un certificado autofirmado. Haga clic en Avanzado y confirme la excepción de seguridad:

Habilitar phpmyadmin https

Después de confirmar la excepción de seguridad y antes de iniciar sesión, comencemos a oler Http y Https tráfico:

# TCPDUMP PORT HTTP o PORT HTTPS -L -A | egrep -i 'pass = | pwd = | log = | login = | user = | username = | pw = | passw = | passwd = | contraseña = | pass: | user: | nombre de usuario: | contraseña: | inicio de sesión: | pass | Usuario ' -Línea Tombinada -B20 

Luego inicie sesión usando las mismas credenciales que anteriormente. El rastreador de tráfico solo capturará galimatías en el mejor de los casos:

Olfateo del tráfico HTTP y HTTPS

Eso es todo por ahora, en el próximo artículo lo compartiremos para restringir el acceso de PhpMyadmin con nombre de usuario/contraseña, hasta entonces estén atentos a TecMint.