Com configurar HTTPS (certificats SSL) per assegurar l'inici de sessió de PhpMyAdmin
Per introduir aquest consell, analitzem el trànsit HTTP entre una màquina client i el servidor Debian 8 on hem comès l'error innocent d'iniciar sessió amb les credencials de l'usuari root de la base de dades al nostre últim article a: Canviar i protegir l'URL d'inici de sessió de PhpMyAdmin predeterminat
Com hem esmentat al consell anterior, no intenteu fer-ho encara si no voleu exposar les vostres credencials. Per començar a detectar el trànsit, vam escriure la següent comanda i vam prémer Enter:
# tcpdump port http -l -A | egrep -i 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user ' --line-buffered -B20
No trigarem a adonar-nos que el nom d'usuari i la contrasenya s'han enviat per cable en format de text sense format, com podeu veure a la sortida truncada de tcpdump a la imatge següent.
Tingueu en compte que hem amagat part de la contrasenya d'arrel amb una marca blava a sobre:
Per evitar-ho, assegurem la pàgina d'inici de sessió amb un certificat. Per fer-ho, instal·leu el paquet mod_ssl a les distribucions basades en CentOS.
# yum install mod_ssl
Tot i que farem servir el camí i els noms de Debian/Ubuntu, el mateix procediment és vàlid per a CentOS i RHEL si substituïu les ordres i els camins següents amb els equivalents de CentOS.
Creeu un directori per emmagatzemar la clau i el certificat:
# mkdir /etc/apache2/ssl [On Debian/Ubuntu based systems] # mkdir /etc/httpd/ssl [On CentOS based systems]
Creeu la clau i el certificat:
----------- On Debian/Ubuntu based systems ----------- # openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt ----------- On CentOS based systems ----------- # openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/apache.key -out /etc/httpd/ssl/apache.crt
........................+++ .....................................................+++ writing new private key to '/etc/httpd/ssl/apache.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:IN State or Province Name (full name) []:Maharashtra Locality Name (eg, city) [Default City]:Mumbai Organization Name (eg, company) [Default Company Ltd]:TecMint Organizational Unit Name (eg, section) []:TecMint Common Name (eg, your name or your server's hostname) []:TecMint Email Address []:[email
A continuació, verifiqueu la clau i el certificat.
# cd /etc/apache2/ssl/ [On Debian/Ubuntu based systems] # cd /etc/httpd/ssl/ [On CentOS based systems] # ls -l total 8 -rw-r--r--. 1 root root 1424 Sep 7 15:19 apache.crt -rw-r--r--. 1 root root 1704 Sep 7 15:19 apache.key
A Debian/Ubuntu, assegureu-vos que Apache escolta al port 443 el lloc predeterminat (/etc/apache2/sites-available/000-default.conf) i afegiu les 3 línies relacionades amb SSL dins de la declaració de VirtualHost:
SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key
A les distribucions basades en CentOS, digueu a Apache que escolti al port 443 i cerqui la directiva Listen a /etc/httpd/conf/httpd.conf i afegiu-hi les línies anteriors a sota.
SSLEngine on SSLCertificateFile /etc/httpd/ssl/apache.crt SSLCertificateKeyFile /etc/httpd/ssl/apache.key
Deseu els canvis, carregueu el mòdul SSL Apache a les distribucions Debian/Ubuntu (a CentOS això es carrega automàticament quan heu instal·lat mod_ssl anteriorment):
# a2enmod ssl
Força phpmyadmin a utilitzar SSL, assegureu-vos que la línia següent estigui present al fitxer /etc/phpmyadmin/config.inc.php o /etc/phpMyAdmin/config.inc.php:
$cfg['ForceSSL'] = true;
i reinicieu el servidor web:
# systemctl restart apache2 [On Debian/Ubuntu based systems] # systemctl restart httpd [On Debian/Ubuntu based systems]
A continuació, inicieu el vostre navegador web i escriviu https://
(obteniu informació sobre com canviar l'URL d'inici de sessió de PhpMyAdmin) tal com es mostra a continuació.
Important: tingueu en compte que només diu que la connexió no és segura perquè estem utilitzant un certificat autofirmat. Feu clic a Avançat i confirmeu l'excepció de seguretat:
Després de confirmar l'excepció de seguretat i abans d'iniciar la sessió, comencem a analitzar el trànsit HTTP i HTTPS:
# tcpdump port http or port https -l -A | egrep -i 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user ' --line-buffered -B20
A continuació, inicieu la sessió amb les mateixes credencials que abans. El rastrejador de trànsit només capturarà, en el millor dels casos:
Això és tot de moment, en el proper article us compartirem per restringir l'accés PhpMyAdmin amb nom d'usuari/contrasenya, fins aleshores estigueu atents a Tecmint.