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 presentar este consejo, analicemos el tráfico HTTP entre una máquina cliente y el servidor Debian 8. donde cometimos el inocente error de iniciar sesión con las credenciales del usuario raíz de la base de datos en nuestro último artículo en: Cambiar y proteger la URL de inicio de sesión predeterminada de PhpMyAdmin

Como mencionamos en el consejo anterior, no intente hacer esto todavía si no desea exponer sus credenciales. Para comenzar a rastrear 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 = | password = | pass: | usuario: | nombre de usuario: | contraseña: | login: | pass | usuario ‘–line-buffer-B20

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

Tenga en cuenta que hemos ocultado parte de la contraseña root. con una marca azul sobre ella:

 Sniffing HTTP Traffic  Detectando tráfico HTTP Detectando 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 distribuciones basadas en CentOS.

# yum install mod_ssl freestar.config.enabled_slots.push

Aunque usaremos la ruta y los nombres de Debian/Ubuntu. el mismo procedimiento es válido para CentOS. y RHEL. si reemplaza los comandos y rutas a continuación con los equivalentes de CentOS.

Cree un directorio para almacenar la clave y el certificado:

# mkdir/etc/apache2/ssl [en Debian/Sistemas basados ​​en Ubuntu. # mkdir/etc/httpd/ssl [En sistemas basados ​​en CentOS.

Cree la clave y el certificado:

———–En sistemas basados ​​en Debian/Ubuntu. ———-# openssl req-x509-nodes-days 365-newkey rsa: 2048-keyout/etc/apache2/ssl/apache.key-out/etc/apache2/ssl/apache.crt———–En sistemas basados ​​en CentOS. ———-# req de openssl-x509-nodes-days 365-newkey rsa: 2048-keyout/etc/httpd/ssl/apache.key-out/etc/httpd/ssl/apache.crt Salida de muestra …………. ……….. +++ ……………………………… …………….. +++ escribiendo una nueva clave privada en ‘/etc/httpd/ssl/apache.key’—–Se le pedirá 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 DN. Hay bastantes campos, pero puede dejar algunos en 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]: IN. Nombre del estado o provincia (nombre completo) []: Maharashtra. Nombre de la localidad (p. ej., ciudad) [Ciudad predeterminada]: Mumbai. Nombre de la organización (p. ej., empresa) [Default Company Ltd]: TecMint. Nombre de la unidad organizativa (p. ej., sección) []: TecMint. Nombre común (p. ej., su nombre o el nombre de host de su servidor) []: TecMint. Dirección de correo electrónico []: [email protected].

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

# cd/etc/apache2/ssl/[En sistemas basados ​​en Debian/Ubuntu. # cd/etc/httpd/ssl/[En Sistemas basados ​​en CentOS. # ls-l total 8-rw-r-r–. 1 raíz raíz 1424 7 de septiembre 15:19 apache.crt-rw-r-r–. 1 root root 1704 7 de septiembre 15:19 apache.key

En Debian/Ubuntu. asegúrese de que Apache. esté escuchando en el puerto 443. para el sitio predeterminado (/etc/apache2/sites-available/000-default.conf. y agregue las 3 líneas relacionadas con SSL dentro de la declaración VirtualHost.

SSLEngine en SSLCertificateFile/etc/apache2/ssl/apache.crt SSLCertificateKeyFile/etc/apache2/ssl/apache.key Habilitar SSL en Virtualhost  Habilitar SSL en Virtualhost Habilitar SSL en Virtualhost

En distribuciones basadas en CentOS. dígale a Apache. que escuche en el puerto 443. y busque el Escuche la directiva en /etc/httpd/conf/httpd.conf. y agregue las líneas anteriores debajo de ella.

SSLEngine en SSLCertificateFile/etc/httpd/ssl/apache.crt SSLCertificateKeyFile/etc/httpd/ssl/apache.key

Guardar cambios, cargar el módulo SSL Apache. en distribuciones Debian/Ubuntu. (en CentOS. esto se carga automáticamente cuando instaló mod_ssl. anteriormente) :

# a2enmod ssl

Forzar a phpmyadmin. a usar SSL. asegúrese de que la siguiente línea esté presente en /etc/phpmyadmin/config.inc .php. o /etc/phpMyAdmin/config.inc.php. archivo:

$ cfg [‘ForceSSL’] = true;

y reinicie el servidor web:

# systemctl restart apache2 [En sistemas basados ​​en Debian/Ubuntu. # systemctl restart httpd [En sistemas basados ​​en Debian/Ubuntu. ]

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

Importante. tenga en cuenta que solo dice que la conexión no es segura porque estamos usando un certificado autofirmado. Haga clic en Avanzado. y confirme la excepción de seguridad:

 Habilitar PhpMyAdmin HTTPS  Habilitar PhpMyAdmin HTTPS Habilitar PhpMyAdmin HTTPS

Después de confirmar la excepción de seguridad, y antes de iniciar sesión, comencemos a rastrear el tráfico HTTP. y HTTPS.

# tcpdump puerto http o puerto https-l-A | egrep-i ‘pass = | pwd = | log = | login = | user = | username = | pw = | passw = | passwd = | contraseña = | contraseña: | usuario: | nombre de usuario: | contraseña: | login: | contraseña | usuario ‘–line-buffer-B20

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

 Detectando tráfico HTTP y HTTPS  Detectando tráfico HTTP y HTTPS Detectando HTTP y tráfico HTTPS

Eso es todo por ahora, en el próximo artículo lo compartiremos para restringir el acceso a PhpMyAdmin con nombre de usuario/contraseña, hasta entonces, estad atentos a Tecmint.