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:
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
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://
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
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 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.