So installieren und sichern Sie phpMyAdmin mit Nginx auf einem Ubuntu 18.04-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 die Kenntnis der SQL-Sprache, sodass dies für einige Benutzer möglicherweise nicht die bevorzugte Schnittstelle ist.

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

[.note] #Note: Bei der Verwendung von Software wie phpMyAdmin gibt es wichtige Sicherheitsaspekte, da sie auf dem Datenbankserver ausgeführt wird, Datenbankanmeldeinformationen verarbeitet und es einem Benutzer ermöglicht, beliebige SQL-Abfragen einfach in Ihrer Datenbank auszuführen. Da phpMyAdmin eine weit verbreitete PHP-Anwendung ist, wird sie häufig angegriffen. Wir werden einige Sicherheitsmaßnahmen durchgehen, die Sie in diesem Lernprogramm ergreifen können, damit Sie fundierte Entscheidungen treffen können.
#

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 Domäne mit einem gültigen Zertifikat konfiguriert haben, können Sie diese Anleitung untersecuring Nginx with Let’s Encrypt on Ubuntu 18.04 befolgen.

[.warning] #Warning: Wenn auf dem Server kein SSL / TLS-Zertifikat installiert ist und Sie dennoch fortfahren möchten, sollten Sie den Zugriff über SSH-Tunnel erzwingen, wie in Schritt 5 dieses Handbuchs erläutert.
#

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

[[Schritt-1 - Installation von phpmyadmin]] == Schritt 1 - Installation von phpMyAdmin

Als erstes müssen wir phpMyAdmin auf dem LEMP-Server installieren. Wir werden die Standard-Ubuntu-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 (entwederApache oderLighthttp) auszuwählen. Da wir Nginx als Webserver verwenden, sollten wir hier keine Wahl treffen. Drücken Sietab und dannOK, um zum nächsten Schritt zu gelangen.

Als Nächstes werden Sie gefragt, ob Siedbconfig-common zum Konfigurieren der Anwendungsdatenbank verwenden möchten. Wählen SieYes. Dadurch werden die interne Datenbank und der administrative Benutzer für phpMyAdmin eingerichtet. Sie werden aufgefordert, ein neues Kennwort für den MySQL-Benutzer vonphpmyadminzu definieren. 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 Domainnamen oder die öffentliche IP-Adresse Ihres Servers gefolgt von/phpmyadmin auf:

https://server_domain_or_IP/phpmyadmin

phpMyAdmin login screen

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 diese Anleitung unterHow To Manage an SQL Database.

Note: Die Anmeldung bei phpMyAdmin als MySQL-Benutzer vonroot wird nicht empfohlen, da dies ein erhebliches Sicherheitsrisiko darstellt. In einem nachfolgenden Schritt dieses Handbuchs erfahren Sie, wie Sieroot login deaktivieren.

Ihre phpMyAdmin-Installation sollte zu diesem Zeitpunkt voll funktionsfähig sein. Durch die Installation einer Weboberfläche 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 phpmyadmin-39-s-Standardspeicherorts]] == Schritt 2 - Ändern des Standardspeicherorts von phpMyAdmin

Eine der grundlegendsten Möglichkeiten zum Schutz Ihrer phpMyAdmin-Installation besteht darin, das Auffinden zu erschweren. Bots suchen nach gemeinsamen Pfaden wiephpmyadmin,pma,admin,mysql und dergleichen. Wenn Sie die URL der Schnittstelle von/phpmyadmin auf einen nicht standardmäßigen Wert ändern, wird es für automatisierte Skripte viel schwieriger, Ihre phpMyAdmin-Installation zu finden und Brute-Force-Angriffe zu versuchen.

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 phpmyadmin -> /usr/share/phpmyadmin

Die Ausgabe zeigt, dass wir in diesem Verzeichnis einen symbolischen Link namensphpmyadmin 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/nothingtosee, aber Sieshould choose an alternate name. Um dies zu erreichen, benennen wir den Link um:

sudo mv phpmyadmin nothingtosee
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 nothingtosee -> /usr/share/phpmyadmin

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

https://server_domain_or_IP/phpmyadmin

phpMyAdmin 404 error

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

https://server_domain_or_IP/nothingtosee

phpMyAdmin login screen

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]] == Schritt 3 - Deaktivieren der Root-Anmeldung

Unter MySQL sowie auf normalen Linux-Systemen ist das Kontorootein 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 Benutzersroot abgelehnt werden. Auf diese Weise erhalten Sie auch dann einen Fehler "Zugriff verweigert", wenn Sie gültige Anmeldeinformationen für den Benutzerroot angeben, und Sie können sich nicht anmelden.

Da wirdbconfig-common zum Konfigurieren und Speichern der phpMyAdmin-Einstellungen verwendet haben, wird die Standardkonfiguration derzeit in der Datenbank gespeichert. Wir müssen eine neueconfig.inc.php-Datei erstellen, um unsere 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 werden eine neue benutzerdefinierte Einstellungsdatei in/etc/phpmyadmin/conf.d erstellen und siepma_secure.php nennen:

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

Die folgende Konfigurationsdatei enthält die erforderlichen Einstellungen zum Deaktivieren von kennwortlosen Anmeldungen (AllowNoPassword auffalse) und Root-Anmeldungen (AllowRoot auffalse):

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

Speichern Sie die Datei, wenn Sie mit der Bearbeitung fertig sind, indem SieCTRL +X und danny drücken, um die Änderungen zu bestätigen, undENTER. Die Änderungen werden automatisch übernommen. Wenn Sie die Anmeldeseite jetzt neu laden und versuchen, sich als root anzumelden, wird der FehlerAccess Deniedangezeigt:

access denied

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

[[Schritt 4 - Erstellen eines Authentifizierungsgateways]] == 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 Funktioncrypt()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:

OutputO5az.RSPzd.HE

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

Erstellen Sie nun eine Authentifizierungsdatei. Wir rufen diese Dateipma_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 Dienstprogrammopenssl passwderhalten haben.

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

/etc/nginx/pma_pass

sammy:O5az.RSPzd.HE

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/example.com. 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/example.com

Suchen Sie den Blockserver und den Abschnittlocation / darin. In diesem Block muss ein Abschnittnewlocation erstellt werden, der dem aktuellen Pfad von phpMyAdmin auf dem Server entspricht. In diesem Handbuch beträgt der Speicherort von phpMyAdmin relativ zum Webstamm/nothingtosee:

/etc/nginx/sites-available/default

server {
    . . .

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

        location /nothingtosee {
                # Settings for phpMyAdmin will go here
        }

    . . .
}

Innerhalb dieses Blocks müssen zwei verschiedene Anweisungen eingerichtet werden:auth_basic, die die Nachricht definieren, die an der Authentifizierungsaufforderung angezeigt wird, undauth_basic_user_file, die auf die gerade erstellte Datei verweist. So sollte Ihre Konfigurationsdatei aussehen, wenn Sie fertig sind:

/etc/nginx/sites-available/default

server {
    . . .

        location /nothingtosee {
                auth_basic "Admin Login";
                auth_basic_user_file /etc/nginx/pma_pass;
        }


    . . .
}

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 URL phpMyAdmin in Ihrem Webbrowser besuchen, sollten Sie aufgefordert werden, den Benutzernamen und das Kennwort einzugeben, die Sie der Dateipma_passhinzugefügt haben:

https://server_domain_or_IP/nothingtosee

Nginx authentication page

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

Note: Wenn das Aktualisieren der Seite nicht funktioniert, müssen Sie möglicherweise Ihren Cache leeren oder eine andere Browsersitzung verwenden, wenn Sie bereits phpMyAdmin verwendet haben.

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]] == 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önnenwhitelist autorisierte Hosts in Ihrer Nginx-Konfigurationsdatei verwenden, sodass alle Anforderungen 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 Internet-Provider 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 mithilfe der IP-basierten Zugriffssteuerung ein Setup erstellen, in dem Benutzer nur dann Zugriff auf Ihre phpMyAdmin-Schnittstelle haben, wenn sie vonauthorized IP address oderlocalhost via SSH tunnelingauf sie zugreifen. s. 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 entsprechendenlocation-Block einer bestimmten Site mithilfe der Anweisungenallow unddeny definiert werden. Wenn wir beispielsweise nur Anforderungen von einem bestimmten Host zulassen möchten, sollten wir die folgenden zwei Zeilen in dieser Reihenfolge in den entsprechendenlocation-Block für die Site einfügen, die wir schützen möchten:

allow hostname_or_IP;
deny all;

Sie können so viele Hosts zulassen, wie Sie möchten. Sie müssen nur eineallow-Zeile für jeden autorisierten Host / jede autorisierte IP in den jeweiligenlocation-Block für die Site einschließen, die Sie schützen. Die Anweisungen werden in derselben Reihenfolge ausgewertet, in der sie aufgelistet sind, bis eine Übereinstimmung gefunden wird oder die Anforderung aufgrund der Anweisungdeny allendgü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 zu erhalten. Der Einfachheit halber werden wir den vonipinfo.io bereitgestellten Dienst verwenden. Sie können entweder die URLhttps://ipinfo.io/ip in Ihrem Browser öffnen oder den folgenden Befehl überlocal machine ausführen:

curl https://ipinfo.io/ip

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

Output203.0.113.111

Dies ist die IP-Adresse Ihres aktuellenpublic. 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 innerhalb von/etc/nginx/sites-available/example.com erneut bearbeiten.

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

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

Da wir in unserer aktuellen Konfiguration bereits eine Zugriffsregel haben, müssen wir diese mit der IP-basierten Zugriffssteuerung unter Verwendung der Direktivesatisfy all kombinieren. 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 /nothingtosee {
        satisfy all; #requires both conditions

        allow 203.0.113.111; #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,nothingtosee durch den tatsächlichen Pfad zu ersetzen, in dem sich phpMyAdmin befindet, und die hervorgehobene IP-Adresse durch Ihre aktuelle öffentliche IP-Adresse.

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://server_domain_or_IP/nothingtosee

403 error

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. Durch Ausführen eines Befehlsssh, ähnlich dem, mit dem Sie sich bei einem Server anmelden 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. Es ist ähnlich wie bei Verwendung eines VPN (Virtual Private Network), das Einrichten von SSH-Tunneln ist jedoch viel einfacher.

Wir verwenden SSH-Tunneling, um unsere Anfragen an den Remote-Webserver zu senden, auf dem phpMyAdmin ausgeführt wird. Durch Erstellen eines Tunnels zwischen Ihrem lokalen Computer und dem Server, auf dem phpMyAdmin installiert ist, können Sie lokale Anforderungen an den Remote-Webserver umleiten. Was noch wichtiger ist, der Datenverkehr wird verschlüsselt und Anforderungen erreichen Nginx, als ob sie von{'t0': 'localhost'}tammen ( t0) s. 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.

From your local machine, führen Sie diesen Befehl aus, wenn Sie Zugriff auf phpMyAdmin benötigen:

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

Untersuchen wir jeden Teil des Befehls:

  • user: SSH-Benutzer, der eine Verbindung zu dem Server herstellt, 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: Führen Sie keine Remote-Befehle aus

[.note] #Note: Dieser Befehl blockiert das Terminal, bis er mitCTRL+C unterbrochen wird. In diesem Fall wird die SSH-Verbindung beendet und die Paketumleitung gestoppt. Wenn Sie diesen Befehl lieber im Hintergrundmodus ausführen möchten, können Sie die SSH-Option-f.
# verwenden

Gehen Sie jetzt zu Ihrem Browser und ersetzen Sieserver_domain_or_IP durchlocalhost:PORT, wobeiPORT entweder8000 für HTTP oder8443 für HTTPS ist:

http://localhost:8000/nothingtosee
https://localhost:443/nothingtosee

phpMyAdmin login screen

[.note] #Note: Wenn Sie überhttps auf phpMyAdmin zugreifen, wird möglicherweise eine Warnmeldung angezeigt, in der die Sicherheit des SSL-Zertifikats in Frage gestellt wird. Dies liegt daran, dass der von Ihnen verwendete Domainname (localhost) nicht mit der im Zertifikat registrierten Adresse übereinstimmt (Domain, in der phpMyAdmin tatsächlich bereitgestellt wird). Es ist sicher fortzufahren.
#

Alle Anforderungen fürlocalhost:8000 (HTTP) undlocalhost:8443 (HTTPS) werden jetzt über einen sicheren Tunnel an Ihre Remote-Anwendung phpMyAdmin 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 von SSH-Tunneling für alle Personen erzwingen möchten, die Zugriff auf Ihre phpMyAdmin-Schnittstelle wünschen (einschließlich Sie), können Sie dies tun, indem Sie alle anderen autorisierten IP-Adressen aus der Nginx-Konfigurationsdatei entfernen und127.0.0.1 als Nur Host darf auf diesen Speicherort zugreifen. 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 /nothingtosee {
        allow 127.0.0.1; #allow localhost only
        deny all; #deny all other sources
    }

    . . .
}

Sobald Sie die Konfiguration von Nginx mitsudo systemctl reload nginx neu laden, wird Ihre phpMyAdmin-Installation gesperrt und Benutzer müssenrequired SSH-Tunnel verwenden, um über umgeleitete Anforderungen auf die Schnittstelle von phpMyAdmin zuzugreifen.

Fazit

In diesem Tutorial haben wir gesehen, wie man phpMyAdmin auf Ubuntu 18.04 installiert, auf dem Nginx als Webserver ausgeführt wird. Wir haben auch fortgeschrittene Methoden behandelt, um eine phpMyAdmin-Installation unter Ubuntu zu sichern, wie 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.