So installieren und sichern Sie phpMyAdmin unter Ubuntu 18.04

Eine frühere Version dieses Tutorials wurde vonBrennan Bearnes geschrieben.

Einführung

Während viele Benutzer die Funktionalität eines Datenbankverwaltungssystems wie MySQL benötigen, fühlen sie sich möglicherweise nicht wohl, wenn sie nur über die MySQL-Eingabeaufforderung mit dem System interagieren.

phpMyAdmin wurde erstellt, damit Benutzer über eine Weboberfläche mit MySQL interagieren können. In diesem Handbuch wird erläutert, wie Sie phpMyAdmin installieren und sichern, damit Sie damit Ihre Datenbanken auf einem Ubuntu 18.04-System sicher verwalten können.

Voraussetzungen

Bevor Sie mit diesem Handbuch beginnen, müssen Sie einige grundlegende Schritte ausführen.

Zunächst wird davon ausgegangen, dass Ihr Server über einen Benutzer verfügt, der nichtrootmit den Berechtigungensudoist, sowie über eine Firewall, die mitufwkonfiguriert ist, wie ininitial server setup guide for Ubuntu 18.04beschrieben.

Wir gehen auch davon aus, dass Sie eine LAMP-Installation (Linux, Apache, MySQL und PHP) auf Ihrem Ubuntu 18.04-Server abgeschlossen haben. Wenn dies noch nicht abgeschlossen ist, können Sie dieser Anleitung unterinstalling a LAMP stack on Ubuntu 18.04 folgen.

Schließlich gibt es wichtige Sicherheitsaspekte bei der Verwendung von Software wie phpMyAdmin, da diese:

  • Kommuniziert direkt mit Ihrer MySQL-Installation

  • Verarbeitet die Authentifizierung mithilfe von MySQL-Anmeldeinformationen

  • Führt Ergebnisse für beliebige SQL-Abfragen aus und gibt sie zurück

Aus diesen Gründen und weil es sich um eine weit verbreitete PHP-Anwendung handelt, die häufig angegriffen wird, sollten Sie phpMyAdmin auf Remote-Systemen niemals über eine einfache HTTP-Verbindung ausführen. Wenn Sie keine vorhandene Domäne mit einem SSL / TLS-Zertifikat konfiguriert haben, können Sie diese Anleitung untersecuring Apache with Let’s Encrypt on Ubuntu 18.04 befolgen. Dazu müssen Sieregister a domain name,create DNS records for your server undset up an Apache Virtual Host eingeben.

Sobald Sie mit diesen Schritten fertig sind, können Sie mit diesem Handbuch beginnen.

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

Zunächst installieren wir phpMyAdmin aus den Standard-Ubuntu-Repositories.

Dazu aktualisieren Sie den Paketindex Ihres Servers und verwenden dann das Paketsystem vonapt, um die Dateien abzurufen und auf Ihrem System zu installieren:

sudo apt update
sudo apt install phpmyadmin php-mbstring php-gettext

Daraufhin werden Ihnen einige Fragen gestellt, um Ihre Installation korrekt zu konfigurieren.

[.warning] #Warning: Wenn die Eingabeaufforderung angezeigt wird, wird "apache2" hervorgehoben, abernot ausgewählt. Wenn Sie nichtSPACE drücken, um Apache auszuwählen, verschiebt das Installationsprogrammnot die erforderlichen Dateien während der Installation. Drücken SieSPACE,TAB und dannENTER, um Apache auszuwählen.
#

  • Wählen Sie für die Serverauswahlapache2

  • Wählen SieYes aus, wenn Sie gefragt werden, obdbconfig-common zum Einrichten der Datenbank verwendet werden soll

  • Sie werden dann aufgefordert, ein MySQL-Anwendungskennwort für phpMyAdmin auszuwählen und zu bestätigen

Der Installationsprozess fügt die Konfigurationsdatei phpMyAdmin Apache dem Verzeichnis/etc/apache2/conf-enabled/hinzu, wo sie automatisch gelesen wird. Sie müssen lediglich die PHP-Erweiterungmbstringexplizit aktivieren. Geben Sie dazu Folgendes ein:

sudo phpenmod mbstring

Starten Sie anschließend Apache neu, damit Ihre Änderungen erkannt werden:

sudo systemctl restart apache2

phpMyAdmin ist jetzt installiert und konfiguriert. Bevor Sie sich jedoch anmelden und mit Ihren MySQL-Datenbanken interagieren können, müssen Sie sicherstellen, dass Ihre MySQL-Benutzer über die für die Interaktion mit dem Programm erforderlichen Berechtigungen verfügen.

[[Schritt 2 - Anpassen der Benutzerauthentifizierung und -berechtigungen]] == Schritt 2 - Anpassen der Benutzerauthentifizierung und -berechtigungen

Bei der Installation von phpMyAdmin auf Ihrem Server wurde automatisch ein Datenbankbenutzer namensphpmyadmin erstellt, der bestimmte zugrunde liegende Prozesse für das Programm ausführt. Anstatt sich als dieser Benutzer mit dem Administratorkennwort anzumelden, das Sie während der Installation festgelegt haben, wird empfohlen, dass Sie sich entweder als MySQL-Benutzer vonrootoder als Benutzer anmelden, der Datenbanken über die phpMyAdmin-Schnittstelle verwaltet.

Konfigurieren des Passwortzugriffs für das MySQL-Root-Konto

In Ubuntu-Systemen mit MySQL 5.7 (und späteren Versionen) ist der MySQL-Benutzer vonrooto eingestellt, dass er sich standardmäßig mit dem Pluginauth_socketund nicht mit einem Kennwort authentifiziert. Dies bietet in vielen Fällen etwas mehr Sicherheit und Benutzerfreundlichkeit, kann aber auch kompliziert sein, wenn Sie einem externen Programm - wie phpMyAdmin - den Zugriff auf den Benutzer ermöglichen müssen.

Um sich bei phpMyAdmin als MySQL-Benutzer vonrootanzumelden, müssen Sie die Authentifizierungsmethode vonauth_socket aufmysql_native_password umstellen, falls Sie dies noch nicht getan haben. Öffnen Sie dazu die MySQL-Eingabeaufforderung von Ihrem Terminal aus:

sudo mysql

Überprüfen Sie als Nächstes mit dem folgenden Befehl, welche Authentifizierungsmethode jedes Ihrer MySQL-Benutzerkonten verwendet:

SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin       | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)

In diesem Beispiel können Sie sehen, dass sich der Benutzer vonroottatsächlich mit dem Pluginauth_socketauthentifiziert. Führen Sie den folgenden BefehlALTER USERaus, um das Konto vonrootfür die Authentifizierung mit einem Kennwort zu konfigurieren. Stellen Sie sicher, dass Siepassword in ein sicheres Passwort Ihrer Wahl ändern:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Führen Sie dannFLUSH PRIVILEGES aus, um den Server anzuweisen, die Grant-Tabellen neu zu laden und Ihre neuen Änderungen in Kraft zu setzen:

FLUSH PRIVILEGES;

Überprüfen Sie die von jedem Ihrer Benutzer verwendeten Authentifizierungsmethoden erneut, um sicherzustellen, dassroot nicht mehr mit demauth_socket-Plugin authentifiziert wird:

SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin       | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)

An dieser Ausgabe können Sie erkennen, dass sich der Benutzer vonrootmit einem Kennwort authentifiziert. Sie können sich jetzt alsroot-Benutzer mit dem hier festgelegten Kennwort bei der phpMyAdmin-Benutzeroberfläche anmelden.

Konfigurieren des Kennwortzugriffs für einen dedizierten MySQL-Benutzer

Alternativ könnten einige der Meinung sein, dass es besser für ihren Workflow ist, eine Verbindung zu phpMyAdmin mit einem dedizierten Benutzer herzustellen. Öffnen Sie dazu die MySQL-Shell noch einmal:

sudo mysql

[.Hinweis]##

Note: Wenn Sie die Kennwortauthentifizierung aktiviert haben, wie im vorherigen Abschnitt beschrieben, müssen Sie einen anderen Befehl verwenden, um auf die MySQL-Shell zuzugreifen. Folgendes führt Ihren MySQL-Client mit regulären Benutzerrechten aus und Sie erhalten nur Administratorrechte innerhalb der Datenbank, wenn Sie sich authentifizieren:

mysql -u root -p

Erstellen Sie von dort aus einen neuen Benutzer und geben Sie ihm ein sicheres Passwort:

CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

Gewähren Sie dann Ihrem neuen Benutzer die entsprechenden Berechtigungen. Mit dem folgenden Befehl können Sie beispielsweise allen Tabellen in der Datenbank Benutzerberechtigungen erteilen sowie die Berechtigung zum Hinzufügen, Ändern und Entfernen von Benutzerberechtigungen erteilen:

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Beenden Sie anschließend die MySQL-Shell:

exit

Sie können jetzt auf die Weboberfläche zugreifen, indem Sie den Domainnamen oder die öffentliche IP-Adresse Ihres Servers gefolgt von/phpmyadmin aufrufen:

http://your_domain_or_IP/phpmyadmin

phpMyAdmin login screen

Melden Sie sich an der Schnittstelle an, entweder alsroot oder mit dem neuen Benutzernamen und Passwort, das Sie gerade konfiguriert haben.

Wenn Sie sich anmelden, wird die Benutzeroberfläche angezeigt, die ungefähr so ​​aussieht:

phpMyAdmin user interface

Nachdem Sie sich mit phpMyAdmin verbinden und interagieren können, müssen Sie nur noch die Sicherheit Ihres Systems verbessern, um es vor Angreifern zu schützen.

[[Schritt 3 - Sichern Ihrer phpmyadmin-Instanz]] == Schritt 3 - Sichern Ihrer phpMyAdmin-Instanz

Aufgrund seiner Allgegenwart ist phpMyAdmin ein beliebtes Ziel für Angreifer, und Sie sollten besonders darauf achten, nicht autorisierten Zugriff zu verhindern. Eine der einfachsten Möglichkeiten, dies zu tun, besteht darin, ein Gateway vor der gesamten Anwendung zu platzieren, indem die in Apache integrierten Authentifizierungs- und Autorisierungsfunktionen.htaccessverwendet werden.

Dazu müssen Sie zuerst die Verwendung von.htaccess Dateiüberschreibungen aktivieren, indem Sie Ihre Apache-Konfigurationsdatei bearbeiten.

Bearbeiten Sie die verknüpfte Datei, die in Ihrem Apache-Konfigurationsverzeichnis abgelegt wurde:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Fügen Sie im Abschnitt<Directory /usr/share/phpmyadmin> der Konfigurationsdatei eine AnweisungAllowOverride All hinzu:

/etc/apache2/conf-available/phpmyadmin.conf


    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All
    . . .

Wenn Sie diese Zeile hinzugefügt haben, speichern und schließen Sie die Datei.

Starten Sie Apache neu, um die vorgenommenen Änderungen zu implementieren:

sudo systemctl restart apache2

Nachdem Sie.htaccessfür Ihre Anwendung aktiviert haben, müssen Sie eine erstellen, um tatsächlich Sicherheit zu implementieren.

Damit dies erfolgreich ist, muss die Datei im Anwendungsverzeichnis erstellt werden. Sie können die erforderliche Datei erstellen und in Ihrem Texteditor mit Root-Rechten öffnen, indem Sie Folgendes eingeben:

sudo nano /usr/share/phpmyadmin/.htaccess

Geben Sie in diese Datei die folgenden Informationen ein:

/usr/share/phpmyadmin/.htaccess

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

Jede dieser Zeilen bedeutet Folgendes:

  • AuthType Basic: Diese Zeile gibt den Authentifizierungstyp an, den Sie 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 Kennwortdatei festgelegt, die für die Authentifizierung verwendet wird. Dies sollte sich außerhalb der Verzeichnisse befinden, die bedient werden. Wir werden diese Datei in Kürze 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 fertig sind, speichern und schließen Sie die Datei.

Der Speicherort, den Sie für Ihre Kennwortdatei ausgewählt haben, war/etc/phpmyadmin/.htpasswd. Sie können diese Datei jetzt erstellen und mit dem Dienstprogrammhtpasswdan einen Erstbenutzer übergeben:

sudo htpasswd -c /etc/phpmyadmin/.htpasswd username

Sie werden aufgefordert, ein Kennwort für den von Ihnen erstellten Benutzer auszuwählen und zu bestätigen. Anschließend wird die Datei mit dem von Ihnen eingegebenen Hash-Passwort erstellt.

Wenn Sie einen zusätzlichen Benutzer eingeben möchten, müssen Siewithout das-c-Flag wie folgt ausführen:

sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

Wenn Sie nun auf Ihr phpMyAdmin-Unterverzeichnis zugreifen, werden Sie aufgefordert, den zusätzlichen Kontonamen und das Passwort einzugeben, die Sie gerade konfiguriert haben:

https://domain_name_or_IP/phpmyadmin

phpMyAdmin apache password

Nach der Eingabe der Apache-Authentifizierung gelangen Sie zur regulären phpMyAdmin-Authentifizierungsseite, auf der Sie Ihre MySQL-Anmeldeinformationen eingeben können. Dieses Setup fügt eine zusätzliche Sicherheitsebene hinzu, die wünschenswert ist, da phpMyAdmin in der Vergangenheit unter Sicherheitslücken gelitten hat.

Fazit

Sie sollten nun phpMyAdmin auf Ihrem Ubuntu 18.04-Server konfiguriert und einsatzbereit haben. Über diese Schnittstelle können Sie auf einfache Weise Datenbanken, Benutzer, Tabellen usw. erstellen und die üblichen Vorgänge wie Löschen und Ändern von Strukturen und Daten ausführen.