Sådan opsættes HTTPS (SSL-certifikater) for at sikre PhpMyAdmin-login


For at introducere dette tip, lad os snuse HTTP-trafikken mellem en klientmaskine og Debian 8-serveren, hvor vi har lavet den uskyldige fejl at logge ind ved hjælp af databasens rodbrugerlegitimationsoplysninger i vores sidste artikel på: Skift og sikker standard PhpMyAdmin Login URL

Som vi nævnte i det forrige tip, skal du ikke forsøge at gøre dette endnu, hvis du ikke vil afsløre dine legitimationsoplysninger. For at begynde at snuse trafik skrev vi følgende kommando og trykkede på 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

Det vil ikke tage os lang tid at indse, at brugernavnet og adgangskoden er sendt over ledningen i almindeligt tekstformat, som du kan se i den afkortede output af tcpdump i billedet nedenfor.

Bemærk, at vi har skjult en del af rodadgangskoden med et blåt mærke over det:

For at undgå dette skal vi sikre login-siden med et certifikat. For at gøre dette skal du installere mod_ssl-pakken på CentOS-baserede distributioner.

# yum install mod_ssl

Selvom vi bruger Debian/Ubuntu-stien og navne, er den samme procedure gyldig for CentOS og RHEL, hvis du udskifter nedenstående kommandoer og stier med CentOS-ækvivalenter.

Opret en mappe for at gemme nøglen og certifikatet:

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

Opret nøglen og certifikatet:

----------- 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 

Bekræft derefter nøgle og certifikat.

# 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

I Debian/Ubuntu skal du sørge for, at Apache lytter til port 443 for standardsiden (/etc/apache2/sites-available/000-default.conf) og tilføje de 3 SSL-relaterede linjer inde i VirtualHost-erklæringen:

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

I CentOS-baserede distributioner skal du bede Apache om at lytte på port 443 og se efter lyttedirektivet i /etc/httpd/conf/httpd.conf og tilføj ovenstående linjer under det.

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

Gem ændringer, indlæs SSL Apache-modulet på Debian/Ubuntu-distributioner (i CentOS indlæses dette automatisk, når du installerede mod_ssl tidligere):

# a2enmod ssl

Tving phpmyadmin til at bruge SSL, sørg for, at følgende linje er til stede i /etc/phpmyadmin/config.inc.php eller /etc/phpMyAdmin/config.inc.php-filen:

$cfg['ForceSSL'] = true;

og genstart webserveren:

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

Start derefter din webbrowser og skriv https://my (lær hvordan du ændrer PhpMyAdmin login-URL) som vist nedenfor.

Vigtigt: Bemærk, at det kun siges, at forbindelsen ikke er sikker, fordi vi bruger et selvsigneret certifikat. Klik på Avanceret, og bekræft sikkerhedsundtagelsen:

Efter at have bekræftet sikkerhedsundtagelsen, og inden vi logger ind, skal vi begynde at snuse HTTP og HTTPS-trafik:

# 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

Log derefter ind med de samme legitimationsoplysninger som tidligere. Trafiksnifferen fanger kun i bedste fald gibberish:

Det er det for nu, i næste artikel deler vi dig for at begrænse PhpMyAdmin-adgang med brugernavn/adgangskode, indtil da forbliver tunet til Tecmint.