So installieren und sichern Sie phpMyAdmin mit Apache auf einem CentOS 7-Server

Einführung

Relationale Datenbankverwaltungssysteme wie MySQL und MariaDB werden für einen Groß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 CentOS 7-Server installieren und sichern. Wir werden dieses Setup auf dem Apache-Webserver aufbauen, dem beliebtesten Webserver der Welt.

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 unsereinitial server setup guide for CentOS 7 durchlaufen. Dies führt Sie unter anderem durch das Einrichten eines Nicht-Root-Benutzers mitsudo-Zugriff für Verwaltungsbefehle.

Die zweite Voraussetzung, die erfüllt sein muss, um in diesem Handbuch zu starten, ist die Installation eines LAMP-Stacks (Linux, Apache, MariaDB und PHP) auf Ihrem CentOS 7-Server. Dies ist die Plattform, auf der wir unsere phpMyAdmin-Schnittstelle bereitstellen (MariaDB ist auch die Datenbankverwaltungssoftware, die wir verwalten möchten). Wenn Sie noch keine LAMP-Installation auf Ihrem Server haben, folgen Sie unserem Tutorial zuinstalling LAMP on CentOS 7.

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

[[step-one -—- install-phpmyadmin]] == Step One - Installiere phpMyAdmin

Mit unserer bereits vorhandenen 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 unserem System ein zusätzliches Repo hinzufügen. Das EPEL-Repo (ExtraPackages fürEnterpriseLinux) enthält viele zusätzliche Pakete, einschließlich des von uns gesuchten phpMyAdmin-Pakets.

Das EPEL-Repository kann Ihrem Server zur Verfügung gestellt werden, indem ein spezielles Paket namensepel-release installiert wird. Dadurch wird Ihre Repository-Liste neu konfiguriert und Sie erhalten Zugriff auf die EPEL-Pakete.

Geben Sie zum Installieren einfach Folgendes ein:

sudo yum install epel-release

Nachdem das EPEL-Repo konfiguriert wurde, können Sie das phpMyAdmin-Paket mithilfe des Verpackungssystemsyuminstallieren, indem Sie Folgendes eingeben:

sudo yum install phpmyadmin

Die Installation wird nun abgeschlossen. Die Installation enthielt eine Apache-Konfigurationsdatei, die bereits installiert wurde. Wir müssen dies etwas ändern, damit es für unsere Installation richtig funktioniert.

Öffnen Sie die Datei jetzt in Ihrem Texteditor, damit wir einige Änderungen vornehmen können:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

Im Inneren sehen wir einige Verzeichnisblöcke mit einer bedingten Logik, um die Zugriffsrichtlinie für unser Verzeichnis zu erläutern. Es gibt zwei unterschiedliche Verzeichnisse und innerhalb dieser Konfigurationen Konfigurationen, die sowohl für Apache 2.2 als auch für Apache 2.4 (die wir ausführen) gültig sind.

Derzeit ist dieses Setup so konfiguriert, dass der Zugriff auf Verbindungen, die nicht vom Server selbst hergestellt werden, verweigert wird. Da wir remote an unserem Server arbeiten, müssen wir einige Zeilen ändern, um die IP-Adresse Ihrerhome-Verbindung anzugeben.

Ändern Sie alle Zeilen, in denenRequire ip 127.0.0.1 oderAllow from 127.0.0.1 stehen, um auf die IP-Adresse Ihrer Heimverbindung zu verweisen. Wenn Sie Hilfe beim Ermitteln der IP-Adresse Ihrer Heimverbindung benötigen, lesen Sie den nächsten Abschnitt. Die Datei sollte vier Speicherorte enthalten, 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 Folgendes eingeben:

sudo systemctl restart httpd.service

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

http://server_domain_or_IP/phpMyAdmin

phpMyAdmin login screen

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

phpMyAdmin admin interface

Finden Sie Ihre IP-Adresse

Sie müssen die IP-Adresse des Computers kennen, den Sie für den Zugriff auf Ihre Datenbanken verwenden, um den obigen Schritt ausführen zu können. Dies ist eine Sicherheitsmaßnahme, damit nicht autorisierte Personen keine Verbindung zu Ihrem Server herstellen können.

Hinweis: Dies istnot die IP-Adresse Ihres VPS, es ist die IP-Adresse Ihres Heim- oder Arbeitscomputers.

Sie können herausfinden, wie das größere Web Ihre IP-Adresse sieht, indem Sie eine dieser Sites in Ihrem Webbrowser besuchen:

Vergleichen Sie einige verschiedene Websites und stellen Sie sicher, dass Sie alle den gleichen Wert erhalten. Verwenden Sie diesen Wert in der obigen Konfigurationsdatei.

[[Schritt zwei - sichern Sie Ihre phpmyadmin-Instanz]] == 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 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 Authentifizierungsgateway auf Webserverebene erstellen, das übergeben werden muss, bevor der phpMyAdmin-Anmeldebildschirm aufgerufen werden kann.

Ändern des Zugriffsorts der Anwendung

Damit unser Apache-Webserver mit phpMyAdmin zusammenarbeiten kann, verwendet unsere phpMyAdmin-Apache-Konfigurationsdatei einen Alias, um auf den Verzeichnispfad der Dateien zu verweisen.

Um die URL zu ändern, über die auf unsere phpMyAdmin-Oberfläche zugegriffen werden kann, müssen wir lediglich den Alias ​​umbenennen. Öffnen Sie jetzt die Konfigurationsdatei von phpMyAdmin Apache:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

Oben in der Datei sehen Sie zwei Zeilen, die so aussehen:

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

Diese beiden Zeilen sind unsere Aliase. Wenn wir also auf den Domainnamen oder die IP-Adresse unserer Website zugreifen, gefolgt von/phpMyAdmin oder/phpmyadmin, wird uns der Inhalt mit/usr/share/phpMyAdmin zugestellt.

Wir möchten diese spezifischen Aliase deaktivieren, da sie stark von Bots und böswilligen Benutzern angegriffen werden. Stattdessen sollten wir uns einen eigenen Alias ​​aussuchen. Es sollte leicht zu merken sein, aber nicht leicht zu erraten. Es sollte nicht den Zweck des URL-Speicherorts angeben. In unserem Fall gehen wir mit/nothingtosee.

Um unsere beabsichtigten Änderungen anzuwenden, sollten wir die vorhandenen 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 und schließen Sie die Datei.

Starten Sie den Webdienst neu, um die Änderungen zu implementieren:

sudo systemctl restart httpd.service

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

http://server_domain_or_IP/phpMyAdmin

phpMyAdmin 404 error

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

http://server_domain_or_IP/nothingtosee

phpMyAdmin login screen

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 Apache, diese Funktion von Haus aus 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 Verzeichnisblocks/usr/share/phpMyAdmin, jedoch außerhalb eines der Blöcke innerhalb, müssen wir eine Überschreibungsanweisung hinzufügen. Es wird so aussehen:

. . .

   AllowOverride All
   
   . . .

. . .

Auf diese Weise können wir zusätzliche Konfigurationsdetails in einer Datei mit dem Namen.htaccess angeben, die sichwithinim phpMyAdmin-Verzeichnis selbst befindet. Wir werden diese Datei verwenden, um unsere Passwortauthentifizierung einzurichten.

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

Starten Sie den Webdienst neu, um diese Änderung zu implementieren:

sudo systemctl restart httpd.service

Erstellen Sie eine .htaccess-Datei

Nachdem wir die Override-Direktive in unserer Konfiguration haben, sucht Apache im Verzeichnis/usr/share/phpMyAdminnach einer Datei mit dem Namen.htaccess. Wenn es eine findet, werden die darin enthaltenen Anweisungen verwendet, um die vorherigen Konfigurationsdaten zu ergänzen.

Unser nächster Schritt besteht darin, die.htaccess-Datei in diesem Verzeichnis zu erstellen. Verwenden Sie dazu jetzt Ihren Texteditor:

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

Sehen wir uns an, was jede dieser Zeilen bedeutet:

  • AuthType Basic: Diese Zeile gibt den Authentifizierungstyp an, den wir implementieren. Dieser Typ implementiert die Kennwortauthentifizierung mithilfe einer Kennwortdatei.

  • AuthName: Hiermit wird die Nachricht für das Authentifizierungsdialogfeld festgelegt. Sie sollten dieses Generikum beibehalten, damit nicht autorisierte Benutzer keine Informationen darüber erhalten, was geschützt wird.

  • AuthUserFile: Hiermit wird der Speicherort der tatsächlichen Kennwortdatei festgelegt, die für die Authentifizierung verwendet wird. Dies sollte sich außerhalb der Verzeichnisse befinden, die bedient werden. Wir werden diese Datei gleich erstellen.

  • Require valid-user: Dies gibt an, dass nur authentifizierten Benutzern Zugriff auf diese Ressource gewährt werden soll. Dies ist es, was tatsächlich unbefugte Benutzer am Betreten hindert.

Wenn Sie mit der Eingabe dieser Informationen fertig sind, speichern und schließen Sie die Datei.

Erstellen Sie die Kennwortdatei für die Authentifizierung

Nachdem wir den Speicherort für unsere Kennwortdatei mithilfe der DirektiveAuthUserFilein unserer Datei.htaccessangegeben haben, müssen wir die Kennwortdatei erstellen und füllen.

Dies kann durch die Verwendung eines Apache-Dienstprogramms namenshtpasswd erreicht werden. Wir rufen den Befehl auf, indem wir ihm den Ort übergeben, an dem wir die Datei erstellen möchten, und den Benutzernamen, für den wir Authentifizierungsdetails eingeben möchten:

sudo htpasswd -c /etc/httpd/pma_pass username

Das Flag-c zeigt an, dass dadurch eine erste Datei erstellt wird. Der Verzeichnispfad ist der Pfad und der Dateiname, die für die Datei verwendet werden. Der Benutzername ist der erste Benutzer, den wir hinzufügen möchten. Sie werden aufgefordert, ein Kennwort 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.without-c Flag und mit einem neuen Benutzernamen:

sudo htpasswd /etc/httpd/pma_pass seconduser

Mit der Erstellung unserer Passwortdatei wurde ein Authentifizierungs-Gateway implementiert. Beim nächsten Besuch unserer Website sollte nun eine Passwortabfrage angezeigt werden:

http://server_domain_or_IP/nothingtosee

Apache authentication page

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.