Cum să configurați HTTPS (certificatele SSL) pentru a securiza autentificarea PhpMyAdmin


Pentru a introduce acest sfat, să observăm traficul HTTP dintre o mașină client și serverul Debian 8 unde am făcut greșeala nevinovată de a ne autentifica folosind datele de conectare ale utilizatorului rădăcină a bazei de date în ultimul nostru articol la: Schimbare și securitate Adresa URL implicită de conectare PhpMyAdmin

După cum am menționat în sfatul anterior, nu încercați să faceți acest lucru încă dacă nu doriți să vă expuneți acreditările. Pentru a începe să adulmecăm traficul, am tastat următoarea comandă și am apăsat 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

Nu ne va dura mult să ne dăm seama că numele de utilizator și parola au fost trimise prin cablu în format text simplu, așa cum puteți vedea în rezultatul trunchiat al tcpdump din imaginea de mai jos.

Rețineți că am ascuns o parte a parolei rădăcină cu un semn albastru deasupra:

Pentru a evita acest lucru, să securizăm pagina de conectare cu un certificat. Pentru a face acest lucru, instalați pachetul mod_ssl pe distribuțiile bazate pe CentOS.

yum install mod_ssl

Deși vom folosi calea și numele Debian/Ubuntu, aceeași procedură este valabilă pentru CentOS și RHEL dacă înlocuiți comenzile și căile de mai jos cu echivalentele CentOS.

Creați un director pentru a stoca cheia și certificatul:

mkdir /etc/apache2/ssl    [On Debian/Ubuntu based systems]
mkdir /etc/httpd/ssl      [On CentOS based systems]

Creați cheia și certificatul:

----------- 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
Ieșire eșantion
........................+++
.....................................................+++
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 

Apoi, verificați cheia și certificatul.

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

În Debian/Ubuntu, asigurați-vă că Apache ascultă pe portul 443 pentru site-ul implicit (/etc/apache2/sites- available/000-default.conf) și adăugați cele 3 linii legate de SSL în interiorul declarației VirtualHost:

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

În distribuțiile bazate pe CentOS, spuneți Apache să asculte pe portul 443 și căutați directiva Listen în /etc/httpd/conf/ httpd.confși adăugați liniile de mai sus sub el.

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

Salvați modificările, încărcați modulul SSL Apache pe distribuțiile Debian/Ubuntu (în CentOS acesta se încarcă automat când ați instalat mod_ssl puternic> mai devreme):

a2enmod ssl

Forțați phpmyadmin să folosească SSL, asigurați-vă că următoarea linie este prezentă în /etc/phpmyadmin/config.inc.php sau / etc/phpMyAdmin/config.inc.php fișier:

$cfg['ForceSSL'] = true;

și reporniți serverul web:

systemctl restart apache2   [On Debian/Ubuntu based systems]
systemctl restart httpd     [On Debian/Ubuntu based systems]

Apoi, lansați browserul web și tastați https:///my (aflați cum să schimbați adresa URL de conectare PhpMyAdmin) așa cum se arată mai jos.

Important: vă rugăm să rețineți că se spune doar că conexiunea nu este sigură, deoarece folosim un certificat autosemnat. Faceți clic pe Avansat și confirmați excepția de securitate:

După confirmarea excepției de securitate și înainte de a vă autentifica, să începem să analizăm traficul 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

Apoi conectați-vă folosind aceleași date de conectare ca mai devreme. Sniffer-ul de trafic va capta, în cel mai bun caz, numai farfurie:

Asta este deocamdată, în articolul următor vă vom împărtăși pentru a restricționa accesul PhpMyAdmin cu nume de utilizator/parolă, până atunci rămâneți pe Tecmint.