Jak skonfigurować HTTPS (certyfikaty SSL), aby zabezpieczyć logowanie do PhpMyAdmin
Aby przedstawić tę wskazówkę, przeanalizujmy ruch HTTP pomiędzy komputerem klienckim a serwerem Debian 8, na którym popełniliśmy niewinny błąd, logując się przy użyciu danych uwierzytelniających użytkownika root bazy danych, w naszym ostatnim artykule pod adresem: Zmień i zabezpiecz Domyślny adres URL logowania do PhpMyAdmin
Jak wspomnieliśmy w poprzedniej wskazówce, nie próbuj jeszcze tego robić, jeśli nie chcesz ujawnić swoich danych uwierzytelniających. Aby rozpocząć wąchanie ruchu, wpisaliśmy następujące polecenie i wcisnęliśmy 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
Nie zajmie nam dużo czasu zorientowanie się, że nazwa użytkownika i hasło zostały przesłane przewodem w formacie zwykłego tekstu, jak widać na skróconym wyjściu tcpdump w pliku obrazek poniżej.
Pamiętaj, że ukryliśmy część hasła root z niebieskim znacznikiem:
Aby tego uniknąć, zabezpieczmy stronę logowania certyfikatem. Aby to zrobić, zainstaluj pakiet mod_ssl w dystrybucjach opartych na CentOS.
yum install mod_ssl
Chociaż użyjemy ścieżki i nazw Debian/Ubuntu, ta sama procedura obowiązuje w przypadku CentOS i RHEL, jeśli zastąpisz poniższe polecenia i ścieżki z odpowiednikami CentOS.
Utwórz katalog do przechowywania klucza i certyfikatu:
mkdir /etc/apache2/ssl [On Debian/Ubuntu based systems]
mkdir /etc/httpd/ssl [On CentOS based systems]
Utwórz klucz i certyfikat:
----------- 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
Przykładowe wyjście
........................+++
.....................................................+++
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
Następnie sprawdź klucz i certyfikat.
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
W Debianie/Ubuntu upewnij się, że Apache nasłuchuje na porcie 443 w poszukiwaniu domyślnej witryny (/etc/apache2/sites- available/000-default.conf) i dodaj 3 linie związane z SSL w deklaracji VirtualHost:
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
W dystrybucjach opartych na CentOS powiedz Apache, aby nasłuchiwał na porcie 443 i poszukaj dyrektywy Listen w /etc/httpd/conf/ httpd.conf i dodaj pod nim powyższe linie.
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl/apache.key
Zapisz zmiany, załaduj moduł SSL Apache na dystrybucje Debian/Ubuntu (w CentOS jest on ładowany automatycznie po zainstalowaniu mod_ssl silny> wcześniej):
a2enmod ssl
Zmuś phpmyadmin do korzystania z SSL, upewnij się, że następujący wiersz znajduje się w /etc/phpmyadmin/config.inc.php lub / plik etc/phpMyAdmin/config.inc.php:
$cfg['ForceSSL'] = true;
i zrestartuj serwer WWW:
systemctl restart apache2 [On Debian/Ubuntu based systems]
systemctl restart httpd [On Debian/Ubuntu based systems]
Następnie uruchom przeglądarkę internetową i wpisz https://
(dowiedz się, jak zmienić adres URL logowania PhpMyAdmin), jak pokazano poniżej.
Ważne: pamiętaj, że jest to tylko informacja, że połączenie nie jest bezpieczne, ponieważ używamy certyfikatu z podpisem własnym. Kliknij Zaawansowane i potwierdź wyjątek bezpieczeństwa:
Po potwierdzeniu wyjątku bezpieczeństwa, a przed zalogowaniem, zacznijmy wąchać ruch 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
Następnie zaloguj się przy użyciu tych samych danych uwierzytelniających, co wcześniej. Sniffer ruchu drogowego w najlepszym wypadku wychwyci jedynie bełkot:
To na razie tyle, w następnym artykule pokażemy Ci, jak ograniczyć dostęp PhpMyAdmin za pomocą nazwy użytkownika/hasła, do tego czasu bądź na bieżąco z Tecmint.