So installieren und sichern Sie phpMyAdmin mit Nginx auf einem Ubuntu 14.04-Server

Einführung

Relationale Datenbankverwaltungssysteme wie MySQL werden für einen erheblichen Teil der Websites und Anwendungen benötigt. Allerdings fühlen sich nicht alle Benutzer in der Lage, ihre Daten über die Befehlszeile zu verwalten.

Um dieses Problem zu lösen, wurde ein Projekt namens phpMyAdmin erstellt, um eine Alternative in Form einer webbasierten Verwaltungsoberfläche anzubieten. In diesem Handbuch wird gezeigt, wie Sie eine phpMyAdmin-Konfiguration auf einem Ubuntu 14.04-Server installieren und sichern. Wir werden dieses Setup auf dem Nginx-Webserver aufbauen, der ein gutes Leistungsprofil aufweist und mit hohen Lasten besser umgehen kann als einige andere Webserver.

Voraussetzungen

Bevor wir beginnen, müssen einige Anforderungen geklärt werden.

Um sicherzustellen, dass Sie eine solide Basis haben, auf der Sie dieses System aufbauen können, sollten Sie unsere initial server setup durchgehen Anleitung für Ubuntu 14.04. Dies führt Sie unter anderem durch das Einrichten eines Nicht-Root-Benutzers mit "+ sudo +" - Zugriff für Verwaltungsbefehle.

Die zweite Voraussetzung, die erfüllt sein muss, um in diesem Handbuch zu starten, ist die Installation eines LEMP-Stacks (Linux, Nginx, MySQL und PHP) auf Ihrem Ubuntu 14.04-Server. Dies ist die Plattform, auf der wir unsere phpMyAdmin-Schnittstelle bereitstellen (MySQL ist auch die Datenbankverwaltungssoftware, die wir verwalten möchten). Wenn Sie noch keine LEMP-Installation auf Ihrem Server haben, lesen Sie unser Tutorial unter https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on -ubuntu-14-04 [LEMP unter Ubuntu 14.04 installieren].

Befindet sich Ihr Server in einem ordnungsgemäß funktionierenden Zustand, nachdem Sie diese Anleitungen befolgt haben, können Sie mit dem Rest dieser Seite fortfahren.

Erster Schritt - Installieren Sie phpMyAdmin

Mit unserer bereits vorhandenen LEMP-Plattform können wir sofort mit der Installation der phpMyAdmin-Software beginnen. Dies ist in den Standard-Repositorys von Ubuntu verfügbar, so dass der Installationsprozess einfach ist.

Aktualisieren Sie zunächst den lokalen Paketindex des Servers, um sicherzustellen, dass er über neue Verweise auf verfügbare Pakete verfügt. Anschließend können wir mit den Pakettools "+ apt +" die Software aus den Repositorys herunterladen und auf unserem System installieren:

sudo apt-get update
sudo apt-get install phpmyadmin

Während der Installation werden Sie zur Eingabe einiger Informationen aufgefordert. Sie werden gefragt, welchen Webserver die Software automatisch konfigurieren soll. Da Nginx, der von uns verwendete Webserver, keine der verfügbaren Optionen ist, können Sie einfach die Tabulatortaste drücken, um diese Eingabeaufforderung zu umgehen.

Bei der nächsten Eingabeaufforderung werden Sie gefragt, ob Sie "+ dbconfig-common +" möchten, um eine Datenbank für die Verwendung von phpmyadmin zu konfigurieren. Wählen Sie "Ja", um fortzufahren.

Sie müssen das Datenbank-Administratorkennwort eingeben, das Sie während der MySQL-Installation konfiguriert haben, um diese Änderungen zuzulassen. Anschließend werden Sie aufgefordert, ein Passwort für eine neue Datenbank auszuwählen und zu bestätigen, die die eigenen Daten von phpMyAdmin enthält.

Die Installation wird nun abgeschlossen. Damit der Nginx-Webserver die phpMyAdmin-Dateien korrekt findet und bereitstellt, müssen Sie lediglich einen symbolischen Link von den Installationsdateien zu unserem Nginx-Dokumentenstammverzeichnis erstellen, indem Sie Folgendes eingeben:

sudo ln -s /usr/share/phpmyadmin /usr/share/nginx/html

Als letztes müssen wir das PHP-Modul + mcrypt + aktivieren, auf das sich phpMyAdmin stützt. Dies wurde mit phpMyAdmin installiert, also müssen wir es nur einschalten und unseren PHP-Prozessor neu starten:

sudo php5enmod mcrypt
sudo service php5-fpm restart

Damit ist unsere phpMyAdmin-Installation nun 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 +":

http:///phpmyadmin

Verwenden Sie zum Anmelden ein Benutzername / Passwort-Paar eines gültigen MySQL-Benutzers. Der Benutzer + root + und das MySQL-Administratorkennwort sind eine gute Wahl, um loszulegen. Sie können dann auf die Verwaltungsoberfläche zugreifen:

image: https: //assets.digitalocean.com/articles/phpmyadmin_lemp_1404/admin_interface.png [phpMyAdmin admin interface]

Klicken Sie sich durch, um sich mit der Benutzeroberfläche vertraut zu machen. Im nächsten Abschnitt werden wir Schritte unternehmen, um unsere neue Schnittstelle zu sichern.

Zweiter Schritt - Sichern Sie Ihre phpMyAdmin-Instanz

Die auf unserem Server installierte phpMyAdmin-Instanz sollte zu diesem Zeitpunkt vollständig nutzbar sein. Durch die Installation eines Webinterfaces haben wir unser MySQL-System jedoch der Außenwelt zugänglich gemacht.

Selbst mit dem mitgelieferten Authentifizierungsbildschirm ist dies ein ziemliches Problem. Aufgrund der Popularität von phpMyAdmin in Verbindung mit der großen Datenmenge, auf die es Zugriff bietet, sind Installationen wie diese häufige Ziele für Angreifer.

Wir werden zwei einfache Strategien implementieren, um die Chancen zu verringern, dass unsere Installation gezielt und kompromittiert wird. Wir werden die Position der Schnittstelle von "+ / phpmyadmin +" auf etwas anderes ändern, um einige der automatisierten Bot-Brute-Force-Versuche zu umgehen. Wir werden auch ein zusätzliches Authentifizierungs-Gateway auf Webserverebene erstellen, das übergeben werden muss, bevor der phpMyAdmin-Anmeldebildschirm angezeigt wird.

Ändern des Zugriffsorts der Anwendung

Damit unser Nginx-Webserver unsere phpMyAdmin-Dateien finden und bereitstellen kann, haben wir in einem früheren Schritt eine symbolische Verknüpfung vom phpMyAdmin-Verzeichnis zu unserem Dokumentenstamm erstellt.

Um die URL zu ändern, über die auf unsere phpMyAdmin-Oberfläche zugegriffen werden kann, müssen wir lediglich den symbolischen Link umbenennen. Wechseln Sie in das Stammverzeichnis des Nginx-Dokuments, um eine bessere Vorstellung davon zu erhalten, was wir tun:

cd /usr/share/nginx/html
ls -l
total 8
-rw-r--r-- 1 root root 537 Mar  4 06:46 50x.html
-rw-r--r-- 1 root root 612 Mar  4 06:46 index.html
lrwxrwxrwx 1 root root  21 Aug  6 10:50  -> /usr/share/phpmyadmin

Wie Sie sehen, befindet sich in diesem Verzeichnis ein symbolischer Link mit dem Namen "+ phpmyadmin +". Wir können diesen Linknamen nach Belieben ändern. Dadurch wird der Ort geändert, an dem über einen Browser auf phpMyAdmin zugegriffen werden kann. Dies kann dazu beitragen, den Zugriffspunkt vor hartcodierten Bots zu verbergen.

Wählen Sie einen Namen, der nicht den Zweck des Standorts angibt. In diesem Handbuch benennen wir unseren Zugriffspunkt "+ / nothingtosee +". Um dies zu erreichen, benennen wir den Link einfach um:

sudo mv phpmyadmin
ls -l
total 8
-rw-r--r-- 1 root root 537 Mar  4 06:46 50x.html
-rw-r--r-- 1 root root 612 Mar  4 06:46 index.html
lrwxrwxrwx 1 root root  21 Aug  6 10:50  -> /usr/share/phpmyadmin

Wenn Sie nun zum vorherigen Speicherort Ihrer phpMyAdmin-Installation wechseln, wird eine 404-Fehlermeldung angezeigt:

http:///phpmyadmin

Ihre phpMyAdmin-Oberfläche wird jedoch an dem neuen Ort verfügbar sein, den wir ausgewählt haben:

http:///nothingtosee

Einrichten eines Web Server Authentication Gate

Die nächste Funktion, die wir für unsere Installation wollten, war eine Authentifizierungsaufforderung, die ein Benutzer bestehen muss, bevor er den Anmeldebildschirm von phpMyAdmin sehen kann.

Glücklicherweise bieten die meisten Webserver, einschließlich Nginx, diese Funktion von Haus aus an. Wir müssen nur unsere Nginx-Konfigurationsdatei mit den Details ändern.

Zuvor erstellen wir eine Kennwortdatei, 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:

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

Erstellen Sie nun eine Authentifizierungsdatei. Wir werden diese Datei "+ pma_pass +" aufrufen und sie in das Nginx-Konfigurationsverzeichnis legen:

sudo nano /etc/nginx/pma_pass

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

Wir werden unseren Benutzer "+ demo +" nennen, aber Sie sollten einen anderen Benutzernamen wählen. Die Datei für dieses Handbuch sieht folgendermaßen aus:

:

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

Jetzt können wir unsere Nginx-Konfigurationsdatei ändern. Öffnen Sie diese Datei in Ihrem Texteditor, um zu beginnen:

sudo nano /etc/nginx/sites-available/default

In dieser Datei müssen wir einen neuen Standortabschnitt hinzufügen. Dies richtet sich nach dem Ort, den wir für unsere phpMyAdmin-Oberfläche ausgewählt haben (wir haben in diesem Handbuch "+ / nothingtosee +" ausgewählt).

Erstellen Sie diesen Abschnitt innerhalb des Blocks "+ server ", jedoch außerhalb aller anderen Blöcke. In unserem Beispiel werden wir unseren neuen Location-Block unter den " location / +" -Block setzen:

server {
   . . .

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




   . . .
}

Innerhalb dieses Blocks müssen wir den Wert einer Direktive mit dem Namen "+ auth_basic +" auf eine Authentifizierungsnachricht setzen, die unsere Eingabeaufforderung den Benutzern anzeigt. Wir möchten nicht authentifizierten Benutzern mitteilen, was wir schützen. Geben Sie daher keine spezifischen Details an. In unserem Beispiel verwenden wir einfach "Admin Login".

Wir müssen dann eine Direktive mit dem Namen "+ auth_basic_user_file +" verwenden, um unseren Webserver auf die von uns erstellte Authentifizierungsdatei zu verweisen. Nginx fordert den Benutzer zur Eingabe von Authentifizierungsdetails auf und überprüft, ob die eingegebenen Werte mit den in der angegebenen Datei gefundenen übereinstimmen.

Nachdem wir fertig sind, sollte die Datei so aussehen:

server {
   . . .

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

   location /nothingtosee {


   }

   . . .
}

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

Um unser neues Authentifizierungsgatter zu implementieren, müssen wir den Webserver neu starten:

sudo service nginx restart

Wenn wir jetzt unseren phpMyAdmin-Speicherort in unserem Webbrowser besuchen (Sie müssen möglicherweise Ihren Cache leeren oder eine andere Browsersitzung verwenden, wenn Sie bereits phpMyAdmin verwendet haben), sollten Sie aufgefordert werden, den Benutzernamen und das Kennwort einzugeben, die Sie dem `+ hinzugefügt haben pma_pass + `file:

http:///nothingtosee

Sobald Sie Ihre Anmeldeinformationen eingegeben haben, werden Sie zur normalen Anmeldeseite von phpMyAdmin weitergeleitet. Diese zusätzliche Schutzebene hilft, Ihre MySQL-Protokolle von Authentifizierungsversuchen freizuhalten, zusätzlich zu dem zusätzlichen Sicherheitsvorteil.

Fazit

Sie können Ihre MySQL-Datenbanken jetzt über eine einigermaßen sichere Weboberfläche verwalten. Diese Benutzeroberfläche stellt die meisten Funktionen zur Verfügung, die über die MySQL-Eingabeaufforderung verfügbar sind. Sie können Datenbanken und Schemata anzeigen, Abfragen ausführen und neue Datensätze und Strukturen erstellen.