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 erheblichen Teil der Websites und Anwendungen benötigt. Allerdings fühlen sich nicht alle Benutzer wohl dabei, 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 zeigen wir Ihnen, 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 erfüllt werden.

Um sicherzustellen, dass Sie eine solide Basis haben, auf der Sie dieses System aufbauen können, sollten Sie unsere Anleitung zur anfänglichen Servereinrichtung für CentOS 7 durchgehen. Dies führt Sie unter anderem durch die Einrichtung eines Nicht-Root-Benutzers mit sudo -Zugriff für Verwaltungsbefehle.

Die zweite Voraussetzung, die erfüllt sein muss, um mit diesem Handbuch zu beginnen, 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 werden (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 unter CentOS 7.

Wenn Ihr Server ordnungsgemäß funktioniert, nachdem Sie diese Anleitungen befolgt haben, können Sie mit dem Rest dieser Seite fortfahren.

Erster Schritt — Installieren Sie phpMyAdmin

Da unsere LAMP-Plattform bereits vorhanden ist, 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 (Extra Packages for Enterprise Linux) enthält viele zusätzliche Pakete, einschließlich des phpMyAdmin-Pakets, nach dem wir suchen.

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

Zu installieren, geben sie einfach:

sudo yum install epel-release

Nachdem das EPEL-Repo konfiguriert ist, können Sie das phpMyAdmin-Paket mithilfe des yum -Verpackungssystems installieren, indem Sie Folgendes eingeben:

sudo yum install phpmyadmin

Die Installation wird nun abgeschlossen. Die Installation enthielt eine Apache-Konfigurationsdatei, die bereits eingerichtet wurde. Wir müssen dies ein wenig ändern, damit es für unsere Installation korrekt 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 erklären. Es gibt zwei verschiedene Verzeichnisse, die definiert sind, und innerhalb dieser 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 verweigert wird, die nicht vom Server selbst hergestellt werden. Da wir remote an unserem Server arbeiten, müssen wir einige Zeilen ändern, um die IP-Adresse Ihrer Heimverbindung anzugeben.

Ändern Sie alle Zeilen mit Require ip 127.0.0.1 oder Allow from 127.0.0.1, um auf die IP-Adresse Ihrer Heimverbindung zu verweisen. Wenn Sie Hilfe bei der Suche nach 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 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:

http://server_domain_or_IP/phpMyAdmin

 phpMyAdmin-Anmeldebildschirm

Verwenden Sie zum Anmelden ein Benutzername / Passwort-Paar eines gültigen MariaDB-Benutzers. Der Benutzer root und 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, mit dem Sie auf Ihre Datenbanken zugreifen, um den obigen Schritt auszuführen. Dies ist eine Sicherheitsmaßnahme, damit nicht autorisierte Personen keine Verbindung zu Ihrem Server herstellen können.

Hinweis: Dies ist nicht die IP-Adresse Ihres VPS, sondern die IP-Adresse Ihres Heim- oder Arbeitscomputers.

Sie können herausfinden, wie the greater Web Ihre IP-Adresse sieht, indem Sie eine dieser Websites in Ihrem Webbrowser besuchen:

  • Wie lautet meine IP-Adresse?
  • Was ist meine IP?
  • Meine IP-Adresse

Vergleichen Sie einige verschiedene Websites und stellen Sie sicher, dass sie alle denselben Wert erhalten. 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 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 Kombination mit der großen Datenmenge, auf die es zugreifen kann, sind Installationen wie diese häufige Ziele für Angreifer.

Wir werden zwei einfache Strategien implementieren, um die Wahrscheinlichkeit zu verringern, dass unsere Installation angegriffen und kompromittiert wird. Wir werden den Speicherort der Schnittstelle von /phpMyAdmin in 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 Sie überhaupt zum phpMyAdmin-Anmeldebildschirm gelangen.

Ändern des Zugriffsorts der Anwendung

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

Um die URL zu ändern, unter der auf unsere phpMyAdmin-Schnittstelle zugegriffen werden kann, müssen wir lediglich den Alias umbenennen. Öffnen Sie jetzt die phpMyAdmin Apache-Konfigurationsdatei:

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

Am oberen Rand der Datei sehen Sie zwei Zeilen, die folgendermaßen aussehen:

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

Diese beiden Zeilen sind unsere Aliase, was bedeutet, dass, wenn wir auf den Domainnamen oder die IP-Adresse unserer Website zugreifen, gefolgt von /phpMyAdmin oder /phpmyadmin, der Inhalt bei /usr/share/phpMyAdmin angezeigt wird.

Wir möchten diese spezifischen Aliase deaktivieren, da sie stark von Bots und böswilligen Benutzern angegriffen werden. Stattdessen sollten wir über unseren eigenen Alias entscheiden. 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/phpMyAdminAlias /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 ein 404-Fehler angezeigt:

http://server_domain_or_IP/phpMyAdmin

 phpMyAdmin 404 Fehler

Ihre phpMyAdmin-Schnittstelle ist jedoch an dem von uns ausgewählten neuen Speicherort verfügbar:

http://server_domain_or_IP/nothingtosee

 phpMyAdmin-Anmeldebildschirm

Einrichten eines Webserver-Authentifizierungsgatters

Die nächste Funktion, die wir für unsere Installation wollten, war eine Authentifizierungsaufforderung, die ein Benutzer übergeben musste, bevor er den phpMyAdmin-Anmeldebildschirm sah.

Glücklicherweise bieten die meisten Webserver, einschließlich Apache, diese Funktion 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 eines der darin enthaltenen Blöcke, müssen wir eine Override-Direktive hinzufügen. Es wird so aussehen:

. . .<Directory /usr/share/phpMyAdmin/> AllowOverride All <IfModule mod_authz_core.c> . . .</Directory>. . .

Auf diese Weise können wir zusätzliche Konfigurationsdetails in einer Datei mit dem Namen .htaccess angeben, die sich im phpMyAdmin-Verzeichnis selbst befindet. Wir werden diese Datei verwenden, um unsere Passwort-Authentifizierung 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

Nun, da wir die Override-Direktive in unserer Konfiguration haben, sucht Apache nach einer Datei namens .htaccess im Verzeichnis /usr/share/phpMyAdmin. Wenn es eine findet, verwendet es die darin enthaltenen Anweisungen, um seine vorherigen Konfigurationsdaten zu ergänzen.

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

sudo nano /usr/share/phpMyAdmin/.htaccess

In dieser Datei müssen wir die folgenden Informationen eingeben:

AuthType BasicAuthName "Admin Login"AuthUserFile /etc/httpd/pma_passRequire valid-user

Lassen Sie uns darüber nachdenken, 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 Meldung für das Authentifizierungsdialogfeld festgelegt. Sie sollten dies generisch halten, damit nicht autorisierte Benutzer kein Wissen darüber erhalten, was geschützt wird.
  • AuthUserFile: Legt den Speicherort der tatsächlichen Kennwortdatei fest, die für die Authentifizierung verwendet wird. Dies 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. Dies ist, was tatsächlich verhindert, dass unbefugte Benutzer eintreten.

Wenn Sie diese Informationen eingegeben haben, 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 Direktive AuthUserFile in unserer Datei .htaccess angegeben haben, müssen wir die Kennwortdatei erstellen und füllen.

Dies kann durch die Verwendung eines Apache-Dienstprogramms 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

Das Flag -c zeigt an, dass dadurch eine erste Datei erstellt wird. Der Verzeichnisspeicherort ist der Pfad und 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 weitere Benutzer zur Authentifizierung hinzufügen möchten, können Sie denselben Befehl ohne das Flag -c und mit einem neuen Benutzernamen erneut aufrufen:

sudo htpasswd /etc/httpd/pma_pass seconduser

Nachdem unsere Passwortdatei erstellt wurde, wurde ein Authentifizierungsgateway implementiert, und beim nächsten Besuch unserer Website sollte nun eine Passwortaufforderung angezeigt werden:

http://server_domain_or_IP/nothingtosee

 Apache-Authentifizierungsseite

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

Fazit

Sie können Ihre MySQL-Datenbanken jetzt über eine einigermaßen sichere Weboberfläche verwalten. Diese Benutzeroberfläche macht die meisten Funktionen verfügbar, 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.

You might also like

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.