Kako postaviti HTTPS (SSL certifikate) za zaštitu PhpMyAdmin prijave


Da predstavimo ovaj savjet, njušimo HTTP promet između klijentskog računala i poslužitelja Debian 8 gdje smo napravili nevinu pogrešku prilikom prijave korištenjem vjerodajnica korijena baze podataka u našem posljednjem članku na: Promjena i zaštita zadanog URL-a za prijavu PhpMyAdmin-a

Kao što smo spomenuli u prethodnom savjetu, ne pokušavajte to još učiniti ako ne želite izložiti svoje vjerodajnice. Da bismo započeli njuškanje prometa, upisali smo sljedeću naredbu i pritisnuli 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

Neće nam trebati dugo da shvatimo da su korisničko ime i lozinka poslani žičanim putem u obliku običnog teksta, kao što možete vidjeti u skraćenom izlazu tcpdump na donjoj slici.

Napominjemo da smo sakrili dio root lozinke s plavom oznakom:

Da bismo to izbjegli, zaštitimo stranicu za prijavu certifikatom. Da biste to učinili, instalirajte paket mod_ssl na distribucije temeljene na CentOS-u.

# yum install mod_ssl

Iako ćemo koristiti Debian/Ubuntu put i imena, isti postupak vrijedi za CentOS i RHEL ako zamijenite naredbe i staze u nastavku s CentOS ekvivalentima.

Izradite direktorij za pohranu ključa i certifikata:

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

Stvorite ključ i certifikat:

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

Zatim provjerite ključ i 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

U Debianu/Ubuntuu osigurajte da Apache sluša na priključku 443 za zadanu stranicu (/etc/apache2/sites-available/000-default.conf) i dodajte 3 linije povezane sa SSL-om unutar izjave VirtualHost:

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

U distribucijama temeljenim na CentOS-u, recite Apacheu da presluša na priključku 443 i potražite direktivu Listen u /etc/httpd/conf/httpd.conf i dodajte gornje retke ispod nje.

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

Spremite promjene, učitajte SSL Apache modul na distribucije Debian/Ubuntu (u CentOS-u se to automatski učitava kada ste ranije instalirali mod_ssl):

# a2enmod ssl

Prisilite phpmyadmin da koristi SSL, provjerite je li sljedeći redak prisutan u datoteci /etc/phpmyadmin/config.inc.php ili /etc/phpMyAdmin/config.inc.php:

$cfg['ForceSSL'] = true;

i ponovno pokrenite web poslužitelj:

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

Zatim pokrenite web preglednik i upišite https://my (naučite kako promijeniti URL za prijavu PhpMyAdmin) kao što je prikazano u nastavku.

Važno: Imajte na umu da samo govori da veza nije sigurna jer koristimo samopotpisanu potvrdu. Kliknite Napredno i potvrdite sigurnosnu iznimku:

Nakon potvrde sigurnosne iznimke i prije prijave, krenimo njuškati HTTP i HTTPS promet:

# 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

Zatim se prijavite koristeći iste vjerodajnice kao i ranije. Promatrač prometa u najboljem će slučaju uhvatiti nerazumijevanje:

To je za sada, u sljedećem ćemo vas članku podijeliti s vama kako ograničiti PhpMyAdmin pristup korisničkim imenom/lozinkom, a do tada pratite Tecmint.