Wyszukiwanie w witrynie

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