Wie man phpMyAdmin mit Apache auf einem CentOS 7 Server installiert und sichert.
Verwendest du nicht CentOS 7?Wähle eine andere Version oder Distribution.
Einführung
Relationale Datenbankmanagementsysteme wie MySQL und MariaDB werden für einen wesentlichen Teil von Websites und Anwendungen benötigt. Allerdings fühlen sich nicht alle Benutzer wohl dabei, ihre Daten über die Kommandozeile zu verwalten.
Um dieses Problem zu lösen, wurde ein Projekt namens phpMyAdmin ins Leben gerufen, um eine Alternative in Form einer webbasierten Verwaltungsoberfläche anzubieten. In diesem Leitfaden zeigen wir, wie man eine phpMyAdmin-Konfiguration auf einem CentOS 7-Server installiert und absichert. Wir werden dieses Setup auf dem Apache-Webserver aufbauen, dem beliebtesten Webserver der Welt.
Voraussetzungen
Bevor wir beginnen, gibt es ein paar Anforderungen, die geklärt werden müssen.
Um sicherzustellen, dass Sie eine solide Grundlage zum Aufbau dieses Systems haben, sollten Sie unser anfängliches Server-Setup-Handbuch für CentOS 7 durchgehen. Unter anderem wird Ihnen dabei geholfen, einen Nicht-Root-Benutzer mit sudo-Zugriff für administrative Befehle einzurichten.
Die zweite Voraussetzung, die erfüllt sein muss, um mit diesem Leitfaden zu beginnen, ist die Installation eines LAMP (Linux, Apache, MariaDB und PHP) Stacks auf Ihrem CentOS 7 Server. Dies ist die Plattform, die wir verwenden werden, um unsere phpMyAdmin-Oberfläche bereitzustellen (MariaDB ist auch die Datenbankverwaltungssoftware, die wir verwalten möchten). Wenn Sie noch keine LAMP-Installation auf Ihrem Server haben, folgen Sie unserem Tutorial zur Installation von LAMP auf CentOS 7.
Wenn Ihr Server nach Befolgung dieser Anleitungen in einem einwandfrei funktionierenden Zustand ist, können Sie mit dem Rest dieser Seite fortfahren.
Schritt Eins — Installieren Sie phpMyAdmin
Mit unserer bereits eingerichteten LAMP-Plattform können wir sofort mit der Installation der phpMyAdmin-Software beginnen. Leider ist phpMyAdmin im Standard-Repository von CentOS 7 nicht verfügbar.
Um die benötigten Pakete zu erhalten, müssen wir ein zusätzliches Repository in unser System hinzufügen. Das EPEL-Repo (Extra Pakete für Enterprise Linux) enthält viele zusätzliche Pakete, einschließlich des phpMyAdmin-Pakets, das wir suchen.
Das EPEL-Repository kann Ihrem Server zur Verfügung gestellt werden, indem ein spezielles Paket namens epel-release installiert wird. Dies wird Ihre Repository-Liste neu konfigurieren und Ihnen Zugriff auf die EPEL-Pakete geben.
Um zu installieren, geben Sie einfach ein:
sudo yum install epel-release
Jetzt, da das EPEL-Repo konfiguriert ist, können Sie das phpMyAdmin-Paket mit dem yum Paketverwaltungssystem installieren, indem Sie Folgendes eingeben:
sudo yum install phpmyadmin
Die Installation wird jetzt abgeschlossen. Die Installation beinhaltete eine Apache-Konfigurationsdatei, die bereits eingerichtet wurde. Wir müssen diese etwas ändern, damit sie korrekt für unsere Installation funktioniert.
Öffne die Datei jetzt in deinem Texteditor, damit wir ein paar Änderungen vornehmen können:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
Innen sehen wir einige Verzeichnisblöcke mit einer bedingten Logik, um die Zugriffsrichtlinie für unser Verzeichnis zu erklären. Es gibt zwei getrennte Verzeichnisse, die definiert sind, und innerhalb dieser Konfigurationen, die sowohl für Apache 2.2 als auch für Apache 2.4 (welches wir verwenden) gültig sind.
Derzeit ist diese Einrichtung so konfiguriert, dass Zugriffe von Verbindungen, die nicht vom Server selbst ausgehen, verweigert werden. Da wir remote auf unseren Server zugreifen, müssen wir einige Zeilen ändern, um die IP-Adresse Ihrer Heim-Verbindung anzugeben.
Ändern Sie alle Zeilen, die Require ip 127.0.0.1 oder Allow from 127.0.0.1 lesen, so dass sie sich auf die IP-Adresse Ihrer Heimverbindung beziehen. Wenn Sie Hilfe benötigen, um die IP-Adresse Ihrer Heimverbindung zu finden, sehen Sie sich den nächsten Abschnitt an. Es sollte vier Stellen in der Datei geben, die geändert werden müssen:
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
Wenn Sie fertig sind, starten Sie den Apache-Webserver neu, um Ihre Änderungen zu implementieren, indem Sie eingeben:
sudo systemctl restart httpd.service
Damit ist unsere phpMyAdmin-Installation jetzt betriebsbereit. Um auf die Benutzeroberfläche zuzugreifen, gehen Sie in Ihrem Webbrowser zu dem Domainnamen oder der öffentlichen IP-Adresse Ihres Servers, gefolgt von /phpMyAdmin:
http://server_domain_or_IP/phpMyAdmin
Um sich anzumelden, verwenden Sie ein Nutzername/Passwort-Paar eines gültigen MariaDB-Benutzers. Der root-Benutzer und das MariaDB-Administrationspasswort sind eine gute Wahl, um zu beginnen. Sie werden dann in der Lage sein, auf die Verwaltungsoberfläche zuzugreifen:
Finde deine IP-Adresse
Um den obigen Schritt abzuschließen, müssen Sie die IP-Adresse des Computers kennen, den Sie verwenden, um auf Ihre Datenbanken zuzugreifen. Dies ist eine Sicherheitsvorkehrung, damit unbefugte Personen nicht auf Ihren Server zugreifen können.
Hinweis: Dies ist nicht die IP-Adresse Ihres VPS, sondern die IP-Adresse Ihres Heimat- oder Arbeitsplatzcomputers.
Sie können herausfinden, wie das größere Web Ihre IP-Adresse sieht, indem Sie eine dieser Seiten in Ihrem Webbrowser besuchen:
- Was ist meine IP-Adresse?
- Was ist meine IP?
- Meine IP-Adresse
Vergleichen Sie einige verschiedene Websites und stellen Sie sicher, dass sie alle denselben Wert angeben. Verwenden Sie diesen Wert in der obigen Konfigurationsdatei.
Schritt Zwei — Sichern Sie Ihre phpMyAdmin-Instanz
Die auf unserem Server installierte phpMyAdmin-Instanz sollte zu diesem Zeitpunkt vollständig nutzbar sein. Durch die Installation einer Weboberfläche haben wir jedoch unser MySQL-System der Außenwelt ausgesetzt.
Selbst mit dem enthaltenen Authentifizierungsbildschirm ist dies ein ziemlich großes Problem. Aufgrund der Beliebtheit von phpMyAdmin in Verbindung mit der großen Menge an Daten, auf die es Zugriff bietet, sind solche Installationen häufige Ziele für Angreifer.
Wir werden zwei einfache Strategien umsetzen, um die Wahrscheinlichkeit zu verringern, dass unsere Installation Ziel von Angriffen und Kompromittierungen wird. Wir werden den Standort der Schnittstelle von /phpMyAdmin auf etwas anderes ändern, um einige der automatisierten Bot-Brute-Force-Versuche zu umgehen. Außerdem werden wir ein zusätzliches Authentifizierungsgateway auf Webserver-Ebene erstellen, das durchlaufen werden muss, bevor man überhaupt zum Anmeldebildschirm von phpMyAdmin gelangt.
Ändern des Zugriffsstandorts der Anwendung
Damit unser Apache-Webserver mit phpMyAdmin funktioniert, verwendet unsere phpMyAdmin-Apache-Konfigurationsdatei ein Alias, um auf den Verzeichnisstandort der Dateien zu verweisen.
Um die URL zu ändern, über die unser phpMyAdmin-Interface aufgerufen werden kann, müssen wir einfach den Alias umbenennen. Öffnen Sie jetzt die phpMyAdmin-Apache-Konfigurationsdatei:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
Nahe dem oberen Ende der Datei finden Sie zwei Zeilen, die so aussehen:
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
Diese beiden Zeilen sind unsere Aliase, was bedeutet, dass wir, wenn wir auf den Domainnamen oder die IP-Adresse unserer Webseite zugreifen, gefolgt von entweder /phpMyAdmin oder /phpmyadmin, den Inhalt unter /usr/share/phpMyAdmin angezeigt bekommen.
Wir möchten diese spezifischen Aliasnamen deaktivieren, da sie stark von Bots und böswilligen Benutzern angegriffen werden. Stattdessen sollten wir unseren eigenen Aliasnamen wählen. Er sollte leicht zu merken, aber schwer zu erraten sein. Er sollte nicht den Zweck des URL-Standorts anzeigen. In unserem Fall wählen wir /nothingtosee.
Um unsere beabsichtigten Änderungen anzuwenden, sollten wir die bestehenden Zeilen entfernen oder auskommentieren und unsere eigenen hinzufügen:
# Alias /phpMyAdmin /usr/share/phpMyAdmin
# Alias /phpmyadmin /usr/share/phpMyAdmin
Alias /nothingtosee /usr/share/phpMyAdmin
Wenn Sie fertig sind, speichern Sie die Datei und schließen Sie sie.
Um die Änderungen umzusetzen, starten Sie den Webdienst neu:
sudo systemctl restart httpd.service
Wenn Sie jetzt zum vorherigen Speicherort Ihrer phpMyAdmin-Installation gehen, erhalten Sie einen 404-Fehler:
http://server_domain_or_IP/phpMyAdmin
Ihr phpMyAdmin-Interface wird jedoch am neuen Standort verfügbar sein, den wir ausgewählt haben:
http://server_domain_or_IP/nothingtosee
Einrichten eines Webserver-Authentifizierungsgateways
Die nächste Funktion, die wir für unsere Installation wollten, war eine Authentifizierungsaufforderung, die ein Benutzer bestehen musste, bevor er jemals den phpMyAdmin-Anmeldebildschirm zu Gesicht bekam.
Glücklicherweise bieten die meisten Webserver, einschließlich Apache, diese Funktionalität nativ an. Wir müssen nur unsere Apache-Konfigurationsdatei ändern, um eine Autorisierungsdatei zu verwenden.
Öffnen Sie die phpMyAdmin Apache-Konfigurationsdatei erneut in Ihrem Texteditor:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
Innerhalb des /usr/share/phpMyAdmin-Verzeichnisblocks, aber außerhalb aller inneren Blöcke, müssen wir eine Überschreibungsanweisung hinzufügen. Sie wird folgendermaßen aussehen:
. . .
<Directory /usr/share/phpMyAdmin/>
AllowOverride All
<IfModule mod_authz_core.c>
. . .
</Directory>
. . .
Dies ermöglicht es uns, zusätzliche Konfigurationsdetails in einer Datei namens .htaccess anzugeben, die sich innerhalb des phpMyAdmin-Verzeichnisses befindet. Wir werden diese Datei verwenden, um unsere Passwortauthentifizierung einzurichten.
Speichern Sie die Datei und schließen Sie sie, wenn Sie fertig sind.
Starten Sie den Webdienst neu, um diese Änderung umzusetzen:
sudo systemctl restart httpd.service
Erstellen Sie eine .htaccess-Datei
Jetzt, da wir die Überschreibungsanweisung in unserer Konfiguration haben, wird Apache nach einer Datei namens .htaccess im Verzeichnis /usr/share/phpMyAdmin suchen. Wenn es eine findet, wird es die darin enthaltenen Anweisungen verwenden, um seine vorherigen Konfigurationsdaten zu ergänzen.
Unser nächster Schritt ist es, die .htaccess Datei in diesem Verzeichnis zu erstellen. Verwenden Sie jetzt Ihren Texteditor dafür:
sudo nano /usr/share/phpMyAdmin/.htaccess
In dieser Datei müssen wir die folgenden Informationen eingeben:
AuthType Basic
AuthName "Admin Login"
AuthUserFile /etc/httpd/pma_pass
Require valid-user
Lass uns durchgehen, was jede dieser Zeilen bedeutet:
- AuthType Basic: Diese Zeile gibt den Authentifizierungstyp an, den wir implementieren. Dieser Typ wird die Passwortauthentifizierung mit einer Passwortdatei implementieren.
- AuthName: Dies legt die Nachricht für das Authentifizierungsdialogfeld fest. Sie sollten dies allgemein halten, damit unbefugte Benutzer keinen Einblick darüber erhalten, was geschützt wird.
- AuthUserFile: Dies legt den Speicherort der tatsächlichen Passwortdatei fest, die für die Authentifizierung verwendet wird. Diese sollte außerhalb der Verzeichnisse liegen, die bereitgestellt werden. Wir werden diese Datei in einem Moment erstellen.
- Gültiger Benutzer erforderlich: Dies gibt an, dass nur authentifizierte Benutzer Zugriff auf diese Ressource erhalten sollen. Das ist es, was tatsächlich unbefugte Benutzer daran hindert, einzutreten.
Wenn Sie mit der Eingabe dieser Informationen fertig sind, speichern Sie die Datei und schließen Sie sie.
Erstellen Sie die Passwortdatei zur Authentifizierung
Jetzt, da wir den Speicherort für unsere Passwortdatei durch die Verwendung der AuthUserFile-Direktive in unserer .htaccess-Datei festgelegt haben, müssen wir die Passwortdatei erstellen und befüllen.
Dies kann durch die Verwendung eines Apache-Tools namens htpasswd erreicht werden. Wir rufen den Befehl auf, indem wir ihm den Speicherort übergeben, an dem wir die Datei erstellen möchten, und den Benutzernamen, für den wir die Authentifizierungsdetails eingeben möchten:
sudo htpasswd -c /etc/httpd/pma_pass username
Die -c-Option zeigt an, dass dies eine Anfangsdatei erstellen wird. Der Verzeichnisstandort ist der Pfad und der Dateiname, der für die Datei verwendet wird. Der Benutzername ist der erste Benutzer, den wir hinzufügen möchten. Sie werden aufgefordert, ein Passwort für den Benutzer einzugeben und zu bestätigen.
Wenn Sie zusätzliche Benutzer zur Authentifizierung hinzufügen möchten, können Sie denselben Befehl erneut aufrufen ohne das -c Flag und mit einem neuen Benutzernamen:
sudo htpasswd /etc/httpd/pma_pass seconduser
Mit unserer erstellten Passwortdatei wurde ein Authentifizierungsgateway implementiert, und wir sollten jetzt bei unserem nächsten Besuch auf unserer Seite eine Passwortabfrage sehen:
http://server_domain_or_IP/nothingtosee
Sobald Sie Ihre Anmeldeinformationen eingeben, werden Sie zur normalen phpMyAdmin-Anmeldeseite weitergeleitet. Diese zusätzliche Schutzschicht hilft, Ihre MySQL-Protokolle von Authentifizierungsversuchen sauber zu halten, zusätzlich zu dem zusätzlichen Sicherheitsvorteil.
Schlussfolgerung
Sie können jetzt Ihre MySQL-Datenbanken über eine relativ sichere Weboberfläche verwalten. Diese Benutzeroberfläche bietet die meisten Funktionen, die über die MySQL-Befehlszeile verfügbar sind. Sie können Datenbanken und Schemata anzeigen, Abfragen ausführen und neue Datensätze und Strukturen erstellen.



