So richten Sie HTTPS (SSL-Zertifikate) ein, um die PhpMyAdmin-Anmeldung zu sichern
Um diesen Tipp einzuführen, lassen Sie uns den HTTP-Verkehr zwischen einem Client-Rechner und dem Debian 8-Server ausspionieren, bei dem wir den unschuldigen Fehler gemacht haben, uns mit den Anmeldeinformationen des Datenbank-Root-Benutzers anzumelden.
Wie wir im vorherigen Tipp erwähnt haben, sollten Sie dies noch nicht versuchen, wenn Sie Ihre Anmeldeinformationen nicht preisgeben möchten. Um mit dem Sniffing des Datenverkehrs zu beginnen, haben wir den folgenden Befehl eingegeben und die Eingabetaste gedrückt:
# 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
Es wird nicht lange dauern, bis wir feststellen, dass der Benutzername und das Passwort im Klartextformat über die Leitung gesendet wurden, wie Sie in der abgeschnittenen Ausgabe von tcpdump in der Abbildung unten sehen können.
Bitte beachten Sie, dass wir einen Teil des Root-Passworts mit einer blauen Markierung darüber versteckt haben:
Um dies zu vermeiden, sichern wir die Anmeldeseite mit einem Zertifikat. Installieren Sie dazu mod_ssl Paket auf CentOS-basierten Distributionen.
# yum install mod_ssl
Obwohl wir den Debian/Ubuntu-Pfad und die Namen verwenden werden, gilt das gleiche Verfahren für CentOS und RHEL, wenn Sie die folgenden Befehle und Pfade durch die CentOS-Äquivalente ersetzen.
Erstellen Sie ein Verzeichnis zum Speichern des Schlüssels und des Zertifikats:
# mkdir /etc/apache2/ssl [On Debian/Ubuntu based systems]
mkdir /etc/httpd/ssl [On CentOS based systems]
Erstellen Sie den Schlüssel und das Zertifikat:
----------- 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
Beispiel-Ausgabe
........................+++
.....................................................+++
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
Überprüfen Sie als Nächstes den Schlüssel und das Zertifikat.
# 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
Stellen Sie in Debian/Ubuntu sicher, dass Apache auf Port 443 für die Standardsite (/etc/apache2/sites-available/000-default.conf) lauscht, und fügen Sie die 3 SSL-bezogenen Zeilen in der VirtualHost-Deklaration hinzu:
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
In CentOS-basierten Distributionen weisen Sie Apache an, auf Port 443 zu lauschen und suchen Sie nach der Listen-Direktive in /etc/httpd/conf/httpd.conf und fügen Sie die obigen Zeilen darunter hinzu.
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl/apache.key
Speichern Sie die Änderungen, laden Sie das SSL-Apache-Modul auf Debian/Ubuntu-Distributionen (in CentOS wird dies automatisch geladen, wenn Sie mod_ssl zuvor installiert haben):
# a2enmod ssl
Zwingen Sie phpmyadmin, SSL zu verwenden, stellen Sie sicher, dass die folgende Zeile in der Datei /etc/phpmyadmin/config.inc.php oder /etc/phpMyAdmin/config.inc.php vorhanden ist:
$cfg['ForceSSL'] = true;
und starten Sie den Webserver neu:
# systemctl restart apache2 [On Debian/Ubuntu based systems]
systemctl restart httpd [On Debian/Ubuntu based systems]
Starten Sie als Nächstes Ihren Webbrowser und geben Sie https://<IP-Adresse>/my ein (erfahren Sie, wie Sie die PhpMyAdmin-Anmelde-URL ändern), wie unten gezeigt.
Wichtig: Bitte beachten Sie, dass es nur bedeutet, dass die Verbindung nicht sicher ist, weil wir ein selbstsigniertes Zertifikat verwenden. Klicken Sie auf Erweitert und bestätigen Sie die Sicherheitsausnahme:
Nachdem Sie die Sicherheitsausnahme bestätigt haben und bevor Sie sich anmelden, beginnen wir mit dem Sniffing des HTTP- und HTTPS-Datenverkehrs:
# 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
Melden Sie sich dann mit denselben Anmeldeinformationen wie zuvor an. Der Traffic Sniffer erfasst bestenfalls Kauderwelsch:
Das war's fürs Erste, im nächsten Artikel werden wir Ihnen mitteilen, wie Sie den PhpMyAdmin-Zugriff mit Benutzername/Passwort einschränken können, bis dahin bleiben Sie auf dem Laufenden über Tecmint.



