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