So installieren und sichern Sie phpMyAdmin mit Nginx auf einem Debian 9-Server

Einführung

Während viele Benutzer die Funktionalität eines Datenbanksystems wie MySQL benötigen, erfordert die Interaktion mit dem System ausschließlich über den MySQL-Befehlszeilenclient Kenntnisse in der SQL-Sprache, sodass dies für einige Benutzer möglicherweise nicht die bevorzugte Schnittstelle ist.

phpMyAdmin wurde erstellt, damit Benutzer mit MySQL über eine intuitive Weboberfläche interagieren können, die neben einer PHP-Entwicklungsumgebung ausgeführt wird. In diesem Handbuch wird erläutert, wie Sie phpMyAdmin auf einem Nginx-Server installieren und den Server für erhöhte Sicherheit konfigurieren.

Voraussetzungen

Bevor Sie mit diesem Handbuch beginnen, benötigen Sie Folgendes:

Da phpMyAdmin die Authentifizierung mit MySQL-Anmeldeinformationen durchführt, wird dringend empfohlen, ein SSL / TLS-Zertifikat zu installieren, um den verschlüsselten Verkehr zwischen Server und Client zu ermöglichen. Wenn Sie keine vorhandene Domain mit einem gültigen Zertifikat konfiguriert haben, können Sie dem Leitfaden unter https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt folgen -on-debian-9 [Wie man Nginx unter Debian 9 mit Let’s Encrypt sichert].

Sobald Sie diese Voraussetzungen erfüllt haben, können Sie mit dem Rest des Handbuchs fortfahren.

Schritt 1 - phpMyAdmin installieren

Als erstes müssen wir phpMyAdmin auf dem LEMP-Server installieren. Wir werden die Standard-Debian-Repositorys verwenden, um dieses Ziel zu erreichen.

Beginnen wir mit der Aktualisierung des Paketindex des Servers mit:

sudo apt update

Jetzt können Sie phpMyAdmin installieren mit:

sudo apt install phpmyadmin

Während des Installationsvorgangs werden Sie aufgefordert, den zu konfigurierenden Webserver (Apache oder Lighthttp) auszuwählen. Da wir Nginx als Webserver verwenden, sollten wir hier keine Wahl treffen. Drücken Sie "+ Tab" und dann "+ OK", um mit dem nächsten Schritt fortzufahren.

Als nächstes werden Sie gefragt, ob Sie "+ dbconfig-common " zum Konfigurieren der Anwendungsdatenbank verwenden möchten. Wählen Sie ` Ja +`. Dadurch werden die interne Datenbank und der administrative Benutzer für phpMyAdmin eingerichtet. Sie werden aufgefordert, ein neues Passwort für den MySQL-Benutzer * phpmyadmin * festzulegen. Sie können es auch leer lassen und phpMyAdmin ein zufälliges Passwort erstellen lassen.

Die Installation wird nun beendet. Damit der Nginx-Webserver die phpMyAdmin-Dateien richtig findet und bereitstellt, müssen wir eine symbolische Verknüpfung von den Installationsdateien zum Dokumentenstammverzeichnis von Nginx erstellen:

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

Ihre phpMyAdmin-Installation ist jetzt betriebsbereit. Um auf die Benutzeroberfläche zuzugreifen, rufen Sie in Ihrem Webbrowser den Domänennamen oder die öffentliche IP-Adresse Ihres Servers auf, gefolgt von "+ / phpmyadmin +":

https:///phpmyadmin

Wie bereits erwähnt, verarbeitet phpMyAdmin die Authentifizierung mithilfe von MySQL-Anmeldeinformationen. Dies bedeutet, dass Sie denselben Benutzernamen und dasselbe Kennwort verwenden sollten, die Sie normalerweise für die Verbindung zur Datenbank über die Konsole oder über eine API verwenden würden. Wenn Sie Hilfe beim Erstellen von MySQL-Benutzern benötigen, lesen Sie dieses Handbuch unter How To Manage an SQL-Datenbank.

Ihre phpMyAdmin-Installation sollte zu diesem Zeitpunkt voll funktionsfähig sein. Durch die Installation einer Webschnittstelle haben wir unseren MySQL-Datenbankserver jedoch der Außenwelt zugänglich gemacht. Aufgrund der Popularität von phpMyAdmin und der großen Datenmengen, auf die es möglicherweise zugreifen kann, sind Installationen wie diese häufige Ziele für Angriffe. In den folgenden Abschnitten dieses Handbuchs werden einige verschiedene Methoden vorgestellt, mit denen wir die Sicherheit unserer phpMyAdmin-Installation erhöhen können.

Schritt 2 - Ändern des Standardverzeichnisses von phpMyAdmin

Eine der grundlegendsten Möglichkeiten zum Schutz Ihrer phpMyAdmin-Installation besteht darin, das Auffinden zu erschweren. Bots suchen nach gemeinsamen Pfaden wie "+ / phpmyadmin", "+ / pma", "+ / admin", "+ / mysql" und so weiter. Wenn Sie die URL der Benutzeroberfläche von "+ / phpmyadmin +" in eine andere als die Standard-URL ändern, wird es für automatisierte Skripte viel schwieriger, Ihre phpMyAdmin-Installation zu finden und Brute-Force-Angriffe zu starten.

Mit unserer phpMyAdmin-Installation haben wir einen symbolischen Link erstellt, der auf "+ / usr / share / phpmyadmin +" verweist, wo sich die eigentlichen Anwendungsdateien befinden. Um die URL der Benutzeroberfläche von phpMyAdmin zu ändern, benennen wir diesen symbolischen Link um.

Navigieren Sie zunächst zum Stammverzeichnis des Nginx-Dokuments und listen Sie die darin enthaltenen Dateien auf, um einen besseren Überblick über die vorgenommenen Änderungen zu erhalten:

cd /var/www/html/
ls -l

Sie erhalten folgende Ausgabe:

Outputtotal 8
-rw-r--r-- 1 root root 612 Apr  8 13:30 index.nginx-debian.html
lrwxrwxrwx 1 root root  21 Apr  8 15:36  -> /usr/share/phpmyadmin

Die Ausgabe zeigt, dass wir in diesem Verzeichnis einen symbolischen Link mit dem Namen "+ phpmyadmin +" haben. Wir können diesen Linknamen nach Belieben ändern. Dadurch wird wiederum die Zugriffs-URL von phpMyAdmin geändert. Dies kann dazu beitragen, den Endpunkt vor Bots zu verbergen, die hartcodiert sind, um nach allgemeinen Endpunktnamen zu suchen.

Wählen Sie einen Namen, der den Zweck des Endpunkts verdeckt. In diesem Handbuch nennen wir unseren Endpunkt "+ / +", aber Sie * sollten einen alternativen Namen wählen *. Um dies zu erreichen, benennen wir den Link um:

sudo mv phpmyadmin
ls -l

Nachdem Sie die obigen Befehle ausgeführt haben, erhalten Sie folgende Ausgabe:

Outputtotal 8
-rw-r--r-- 1 root root 612 Apr  8 13:30 index.nginx-debian.html
lrwxrwxrwx 1 root root  21 Apr  8 15:36  -> /usr/share/phpmyadmin

Wenn Sie jetzt zur alten URL wechseln, wird der Fehler 404 angezeigt:

https:///phpmyadmin

Ihre phpMyAdmin-Oberfläche ist jetzt unter der neuen URL verfügbar, die wir gerade konfiguriert haben:

https:///

Indem Sie den tatsächlichen Standort von phpMyAdmin auf dem Server verschleiern, schützen Sie die Benutzeroberfläche vor automatisierten Scans und manuellen Brute-Force-Versuchen.

Schritt 3 - Deaktivieren der Root-Anmeldung

Unter MySQL sowie auf normalen Linux-Systemen ist das Konto * root * ein spezielles Administratorkonto mit uneingeschränktem Zugriff auf das System. Es ist nicht nur ein privilegierter Account, sondern auch ein bekannter Anmeldename, was es zu einem offensichtlichen Ziel für Brute-Force-Angriffe macht. Um Risiken zu minimieren, konfigurieren wir phpMyAdmin so, dass Anmeldeversuche des Benutzers * root * abgelehnt werden. Auf diese Weise wird auch dann, wenn Sie gültige Anmeldeinformationen für den Benutzer * root * eingeben, der Fehler "Zugriff verweigert" angezeigt, und Sie können sich nicht anmelden.

Da wir zum Konfigurieren und Speichern der phpMyAdmin-Einstellungen "+ dbconfig-common " ausgewählt haben, wird die Standardkonfiguration derzeit in der Datenbank gespeichert. Wir müssen eine neue " config.inc.php" -Datei erstellen, um Ihre benutzerdefinierten Einstellungen zu definieren.

Obwohl sich die PHP-Dateien für phpMyAdmin in + / usr / share / phpmyadmin + befinden, verwendet die Anwendung Konfigurationsdateien in + / etc / phpmyadmin +. Wir erstellen eine neue Datei mit benutzerdefinierten Einstellungen in "+ / etc / phpmyadmin / conf.d " und nennen sie " pma_secure.php +":

sudo nano /etc/phpmyadmin/conf.d/pma_secure.php

Die folgende Konfigurationsdatei enthält die erforderlichen Einstellungen zum Deaktivieren kennwortloser Anmeldungen (+ AllowNoPassword + auf + false + gesetzt) ​​und Root-Anmeldungen (+ AllowRoot + auf + false + gesetzt):

/etc/phpmyadmin/conf.d/pma_secure.php

<?php

# PhpMyAdmin Settings
# This should be set to a random string of at least 32 chars
$cfg['blowfish_secret'] = '';

$i=0;
$i++;

$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['Servers'][$i]['AllowRoot'] = false;

?>

Speichern Sie die Datei, wenn Sie mit der Bearbeitung fertig sind, indem Sie "+ CTRL " + " X " und dann " y " drücken, um die Änderungen zu bestätigen, und " ENTER +" drücken. Die Änderungen werden automatisch übernommen. Wenn Sie die Anmeldeseite jetzt neu laden und versuchen, sich als root anzumelden, erhalten Sie die Fehlermeldung * Zugriff verweigert *:

Root Login ist jetzt auf Ihrer phpMyAdmin-Installation verboten. Diese Sicherheitsmaßnahme verhindert, dass Brute-Force-Skripts versuchen, das root-Datenbankkennwort auf Ihrem Server zu erraten. Darüber hinaus wird die Verwendung von weniger privilegierten MySQL-Konten für den Zugriff auf das Webinterface von phpMyAdmin erzwungen, was für sich genommen eine wichtige Sicherheitspraxis darstellt.

Schritt 4 - Erstellen eines Authentifizierungsgateways

Wenn Sie Ihre phpMyAdmin-Installation an einem ungewöhnlichen Ort verstecken, können einige automatisierte Bots das Netzwerk nicht durchsuchen. Gegen gezielte Angriffe ist sie jedoch nutzlos. Um eine Webanwendung mit eingeschränktem Zugriff besser zu schützen, ist es im Allgemeinen effektiver, Angreifer zu stoppen, bevor sie überhaupt auf die Anwendung zugreifen können. Auf diese Weise können sie keine allgemeinen Exploits und Brute-Force-Angriffe verwenden, um die Zugangsdaten zu erraten.

Im speziellen Fall von phpMyAdmin ist es noch wichtiger, die Anmeldeschnittstelle nicht zu öffnen. Indem Sie es für die Welt offen halten, bieten Sie Angreifern eine Brute-Force-Plattform, mit der sie Ihre Datenbankanmeldeinformationen erraten können.

Durch Hinzufügen einer zusätzlichen Authentifizierungsebene zu Ihrer phpMyAdmin-Installation können Sie die Sicherheit erhöhen. Benutzer müssen eine HTTP-Authentifizierungsaufforderung durchlaufen, bevor sie den Anmeldebildschirm von phpMyAdmin sehen können. Die meisten Webserver, einschließlich Nginx, bieten diese Funktion von Haus aus an.

Um dies einzurichten, müssen wir zunächst eine Kennwortdatei erstellen, in der die Anmeldeinformationen für die Authentifizierung gespeichert werden. Für Nginx müssen Kennwörter mit der Funktion + crypt () + verschlüsselt werden. Die OpenSSL-Suite, die bereits auf Ihrem Server installiert sein sollte, enthält diese Funktionalität.

Geben Sie Folgendes ein, um ein verschlüsseltes Kennwort zu erstellen:

openssl passwd

Sie werden aufgefordert, das gewünschte Passwort einzugeben und zu bestätigen. Das Dienstprogramm zeigt dann eine verschlüsselte Version des Kennworts an, die ungefähr so ​​aussieht:

Output

Kopieren Sie diesen Wert, da Sie ihn in die zu erstellende Authentifizierungsdatei einfügen müssen.

Erstellen Sie nun eine Authentifizierungsdatei. Wir rufen diese Datei "+ pma_pass +" auf und legen sie im Nginx-Konfigurationsverzeichnis ab:

sudo nano /etc/nginx/pma_pass

In dieser Datei geben Sie den Benutzernamen an, den Sie verwenden möchten, gefolgt von einem Doppelpunkt (": +") und der verschlüsselten Version des Kennworts, das Sie vom Dienstprogramm " openssl passwd +" erhalten haben.

Wir werden unseren Benutzer "+ sammy +" benennen, aber Sie sollten einen anderen Benutzernamen wählen. Die Datei sollte folgendermaßen aussehen:

/ etc / nginx / pma_pass

:

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Jetzt können wir die Nginx-Konfigurationsdatei ändern. In diesem Handbuch verwenden wir die Konfigurationsdatei unter "+ / etc / nginx / sites-available / +". Sie sollten die entsprechende Nginx-Konfigurationsdatei für den Webpfad verwenden, auf dem phpMyAdmin derzeit gehostet wird. Öffnen Sie diese Datei in Ihrem Texteditor, um zu beginnen:

sudo nano /etc/nginx/sites-available/

Suchen Sie den + server + Block und den + location / + Abschnitt darin. Wir müssen einen * neuen * + location n Abschnitt innerhalb dieses Blocks erstellen, um den aktuellen Pfad von phpMyAdmin auf dem Server abzugleichen. In diesem Handbuch ist der Speicherort von phpMyAdmin relativ zum Web-Stammverzeichnis "+ / nothingtosee +":

/ etc / nginx / sites-available / default

server {
   . . .

       location / {
               try_files $uri $uri/ =404;
       }

       location / {
               # Settings for phpMyAdmin will go here
       }

   . . .
}

In diesem Block müssen zwei verschiedene Anweisungen eingerichtet werden: "+ auth_basic ", das die Meldung definiert, die auf der Authentifizierungsaufforderung angezeigt wird, und " auth_basic_user_file +", das auf die gerade erstellte Datei verweist. So sollte Ihre Konfigurationsdatei aussehen, wenn Sie fertig sind:

/ etc / nginx / sites-available / default

server {
   . . .

       location / {
               auth_basic "";
               auth_basic_user_file ;
       }


   . . .
}

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Um zu überprüfen, ob die Konfigurationsdatei gültig ist, können Sie Folgendes ausführen:

sudo nginx -t

Die folgende Ausgabe wird erwartet:

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Um das neue Authentifizierungsgatter zu aktivieren, müssen Sie den Webserver neu laden:

sudo systemctl reload nginx

Wenn Sie nun die phpMyAdmin-URL in Ihrem Webbrowser aufrufen, sollten Sie aufgefordert werden, den Benutzernamen und das Kennwort einzugeben, die Sie zur Datei "+ pma_pass +" hinzugefügt haben:

https:///

Sobald Sie Ihre Anmeldeinformationen eingegeben haben, werden Sie zur Standard-Anmeldeseite von phpMyAdmin weitergeleitet.

Dieses Gateway bietet nicht nur eine zusätzliche Sicherheitsebene, sondern sorgt auch dafür, dass Ihre MySQL-Protokolle frei von Spam-Authentifizierungsversuchen sind.

Schritt 5 - Einrichten des Zugriffs über verschlüsselte Tunnel (optional)

Zur Erhöhung der Sicherheit ist es möglich, Ihre phpMyAdmin-Installation nur für autorisierte Hosts zu sperren. Sie können autorisierte Hosts in Ihrer Nginx-Konfigurationsdatei whitelisten, sodass alle Anfragen von einer IP-Adresse, die nicht in der Liste enthalten ist, abgelehnt werden.

Auch wenn diese Funktion in einigen Anwendungsfällen ausreicht, ist sie auf lange Sicht nicht immer die beste Lösung. Dies liegt hauptsächlich daran, dass die meisten Benutzer nicht über statische IP-Adressen auf das Internet zugreifen. Sobald Sie eine neue IP-Adresse von Ihrem Internetprovider erhalten, können Sie die phpMyAdmin-Oberfläche erst aufrufen, wenn Sie die Nginx-Konfigurationsdatei mit Ihrer neuen IP-Adresse aktualisieren.

Für eine robustere langfristige Lösung können Sie die IP-basierte Zugriffskontrolle verwenden, um ein Setup zu erstellen, in dem Benutzer nur dann Zugriff auf Ihre phpMyAdmin-Oberfläche haben, wenn sie über SSH von einer * autorisierten IP-Adresse * oder * localhost aus zugreifen tunneling *. Wie Sie dies einrichten, erfahren Sie in den folgenden Abschnitten.

Durch die Kombination von IP-basierter Zugriffssteuerung mit SSH-Tunnelung wird die Sicherheit erheblich erhöht, da der Zugriff aus dem öffentlichen Internet (mit Ausnahme autorisierter IP-Adressen) vollständig blockiert wird. Außerdem wird durch die Verwendung verschlüsselter Tunnel ein sicherer Kanal zwischen Benutzer und Server bereitgestellt.

Einrichten der IP-basierten Zugriffssteuerung auf Nginx

Unter Nginx kann die IP-basierte Zugriffssteuerung im entsprechenden "+ location " -Block einer bestimmten Site definiert werden, indem die Direktiven " allow " und " deny " verwendet werden. Wenn wir zum Beispiel nur Anforderungen von einem bestimmten Host zulassen möchten, sollten wir die folgenden zwei Zeilen in dieser Reihenfolge in den relevanten " location +" - Block für die Site einfügen, die wir schützen möchten:

allow ;
deny all;

Sie können so viele Hosts zulassen, wie Sie möchten. Sie müssen für jeden autorisierten Host / jede autorisierte IP-Adresse nur eine "+ allow " - Zeile in den entsprechenden " location " - Block für die zu schützende Site einfügen. Die Direktiven werden in derselben Reihenfolge ausgewertet, in der sie aufgelistet sind, bis eine Übereinstimmung gefunden wird oder die Anforderung aufgrund der Direktive " Alle verweigern +" endgültig abgelehnt wird.

Wir konfigurieren Nginx jetzt so, dass nur Anforderungen von localhost oder Ihrer aktuellen IP-Adresse zugelassen werden. Zunächst müssen Sie die aktuelle öffentliche IP-Adresse kennen, die Ihr lokaler Computer für die Verbindung zum Internet verwendet. Es gibt verschiedene Möglichkeiten, diese Informationen abzurufen. Der Einfachheit halber verwenden wir den Dienst von https://ipinfo.io [ipinfo.io]. Sie können entweder die URL https://ipinfo.io/ip in Ihrem Browser öffnen oder den folgenden Befehl von Ihrem * lokalen Computer * aus ausführen:

curl https://ipinfo.io/ip

Sie sollten eine einfache IP-Adresse als Ausgabe erhalten, wie folgt:

Output

Dies ist Ihre aktuelle öffentliche IP-Adresse. Wir konfigurieren den Standortblock von phpMyAdmin so, dass neben localhost nur Anforderungen von dieser IP-Adresse zugelassen werden. Wir müssen den Konfigurationsblock für phpMyAdmin noch einmal in "+ / etc / nginx / sites-available / +" bearbeiten.

Öffnen Sie die Nginx-Konfigurationsdatei mit dem Befehlszeileneditor Ihrer Wahl:

sudo nano /etc/nginx/sites-available/

Da wir in unserer aktuellen Konfiguration bereits eine Zugriffsregel haben, müssen wir diese mit der IP-basierten Zugriffssteuerung kombinieren, indem wir die Direktive + satisf all + verwenden. Auf diese Weise können wir die aktuelle HTTP-Authentifizierungsaufforderung beibehalten, um die Sicherheit zu erhöhen.

So sollte Ihre phpMyAdmin Nginx-Konfiguration aussehen, nachdem Sie die Bearbeitung abgeschlossen haben:

/etc/nginx/sites-available/example.com

server {
   . . .

   location / {
       satisfy all; #requires both conditions

       allow ; #allow your IP
       allow 127.0.0.1; #allow localhost via SSH tunnels
       deny all; #deny all other sources

       auth_basic "Admin Login";
       auth_basic_user_file /etc/nginx/pma_pass;
   }

   . . .
}

Denken Sie daran, den Pfad, in dem sich phpMyAdmin befindet, und die hervorgehobene IP-Adresse durch Ihre aktuelle öffentliche IP-Adresse zu ersetzen.

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Um zu überprüfen, ob die Konfigurationsdatei gültig ist, können Sie Folgendes ausführen:

sudo nginx -t

Die folgende Ausgabe wird erwartet:

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Laden Sie nun den Webserver neu, damit die Änderungen wirksam werden:

sudo systemctl reload nginx

Da Ihre IP-Adresse ausdrücklich als autorisierter Host aufgeführt ist, sollte Ihr Zugriff nicht gestört werden. Alle anderen, die versuchen, auf Ihre phpMyAdmin-Installation zuzugreifen, erhalten jetzt einen 403-Fehler (verboten):

https:///

Im nächsten Abschnitt erfahren Sie, wie Sie mithilfe von SSH-Tunneling über lokale Anforderungen auf den Webserver zugreifen. Auf diese Weise können Sie auch dann auf die Benutzeroberfläche von phpMyAdmin zugreifen, wenn sich Ihre IP-Adresse ändert.

Zugriff auf phpMyAdmin über einen verschlüsselten Tunnel

Durch SSH-Tunneling wird der Netzwerkverkehr über verschlüsselte Kanäle umgeleitet. Indem Sie einen Befehl + ssh + ausführen, ähnlich dem, den Sie für die Anmeldung bei einem Server verwenden würden, können Sie einen sicheren „Tunnel“ zwischen Ihrem lokalen Computer und diesem Server erstellen. Der gesamte Datenverkehr, der an einem bestimmten lokalen Port eingeht, kann jetzt über den verschlüsselten Tunnel umgeleitet und der Remote-Server als Proxy verwendet werden, bevor auf das Internet zugegriffen wird. Ähnlich wie bei der Verwendung eines VPNs (virtuelles privates Netzwerk) ist das Einrichten des SSH-Tunnels jedoch viel einfacher.

Wir verwenden SSH-Tunneling, um unsere Anfragen an den Remote-Webserver zu senden, auf dem phpMyAdmin ausgeführt wird. Indem Sie einen Tunnel zwischen Ihrem lokalen Computer und dem Server erstellen, auf dem phpMyAdmin installiert ist, können Sie lokale Anforderungen an den Remote-Webserver umleiten. Außerdem wird der Datenverkehr verschlüsselt und die Anforderungen erreichen Nginx so, als ob sie von localhost stammen. Auf diese Weise können Sie unabhängig von der IP-Adresse, über die Sie eine Verbindung herstellen, sicher auf die Benutzeroberfläche von phpMyAdmin zugreifen.

Da der Datenverkehr zwischen Ihrem lokalen Computer und dem Remote-Webserver verschlüsselt wird, ist dies eine sichere Alternative für Situationen, in denen auf dem Webserver, auf dem phpMyAdmin ausgeführt wird, kein SSL / TLS-Zertifikat installiert werden kann.

  • Führen Sie diesen Befehl von Ihrem lokalen Computer * aus, wenn Sie Zugriff auf phpMyAdmin benötigen:

ssh user@ -L 8000:localhost:80 -L 8443:localhost:443 -N

Untersuchen wir jeden Teil des Befehls:

  • * user *: SSH-Benutzer, um eine Verbindung zu dem Server herzustellen, auf dem phpMyAdmin ausgeführt wird

  • * hostname_or_IP *: SSH-Host, auf dem phpMyAdmin ausgeführt wird

  • * -L 8000: localhost: 80 * leitet den HTTP-Verkehr auf Port 8000 um

  • * -L 8443: localhost: 443 * leitet den HTTPS-Verkehr auf Port 8443 um

  • * -N *: keine Remote-Befehle ausführen

Rufen Sie nun Ihren Browser auf und ersetzen Sie ihn durch "+ localhost: PORT", wenn "+ PORT" entweder "+ 8000 " für HTTP oder " 8443 +" für HTTPS ist:

http://localhost:/
http://localhost:/

Alle Anfragen an + localhost: 8000 + (HTTP) und + localhost: 8443 + (HTTPS) werden jetzt über einen sicheren Tunnel an Ihre entfernte phpMyAdmin-Anwendung umgeleitet. Sie haben nicht nur die Sicherheit erhöht, indem Sie den öffentlichen Zugriff auf Ihr phpMyAdmin deaktiviert haben, sondern auch den gesamten Datenverkehr zwischen Ihrem lokalen Computer und dem Remote-Server mithilfe eines verschlüsselten Tunnels zum Senden und Empfangen von Daten geschützt.

Wenn Sie die Verwendung des SSH-Tunnels für alle erzwingen möchten, die Zugriff auf Ihre phpMyAdmin-Oberfläche wünschen (einschließlich Ihrer), können Sie dies tun, indem Sie alle anderen autorisierten IP-Adressen aus der Nginx-Konfigurationsdatei entfernen und dabei "+ 127.0.0.1 +" lassen als einziger erlaubter Host auf diesen Ort zuzugreifen. Da niemand in der Lage ist, direkte Anfragen an phpMyAdmin zu richten, ist es sicher, die HTTP-Authentifizierung zu entfernen, um die Einrichtung zu vereinfachen. So würde Ihre Konfigurationsdatei in einem solchen Szenario aussehen:

/etc/nginx/sites-available/example.com

server {
   . . .

   location / {
       allow 127.0.0.1; #allow localhost only
       deny all; #deny all other sources
   }

   . . .
}

Sobald Sie die Konfiguration von Nginx mit + sudo systemctl reload nginx + neu laden, wird Ihre phpMyAdmin-Installation gesperrt und Benutzer müssen SSH-Tunnel verwenden, um über umgeleitete Anfragen auf die Oberfläche von phpMyAdmin zugreifen zu können.

Fazit

In diesem Tutorial haben wir gesehen, wie man phpMyAdmin auf Ubuntu 18.04 installiert, auf dem Nginx als Webserver läuft. Wir behandelten auch erweiterte Methoden zum Sichern einer phpMyAdmin-Installation unter Ubuntu, z. B. das Deaktivieren der Root-Anmeldung, das Erstellen einer zusätzlichen Authentifizierungsebene und die Verwendung von SSH-Tunneling, um auf eine phpMyAdmin-Installation nur über lokale Anforderungen zuzugreifen.

Nach Abschluss dieses Lernprogramms sollten Sie in der Lage sein, Ihre MySQL-Datenbanken über eine einigermaßen sichere Weboberfläche zu verwalten. Diese Benutzeroberfläche bietet die meisten Funktionen, die über die MySQL-Befehlszeile verfügbar sind. Sie können Datenbanken und Schemas durchsuchen, Abfragen ausführen und neue Datensätze und Strukturen erstellen.