Linux Tutorial: phpMyAdmin installieren und absichern


In dieser Anleitung lernt Ihr, wie Ihr phpMyAdmin und deren Abhängigkeiten installieren könnt. Vorraussetzung: Bereits konfigurierter MariaDB und Apache2 Server mit PHP Grundinstallation

Benötigte PHP Extensions

Mit diesem Befehl installieren wir alle nötigen PHP Extensions, um danach phpMyAdmin zu installieren:

sudo apt install php-mbstring php-zip php-json php-gd php-curl php-gd

phpMyAdmin installieren

Mit diesem Befehl startet Ihr die Installation von phpMyAdmin:

sudo apt install phpmyadmin

Da ich den Apache2 installiert und konfiguriert habe, wähle ich den Apache mit „LEER“ aus und navigiere mit den Pfeiltasten auf OK und klicke erneu auf „LEER“. WICHTIG! Ihr müsst eine Auswahl treffen, sonst werden nötige Dateien nicht erstellt!

Mit „Leertaste“ den Webserver auswählen

Mit der „dbconfig-common“ erstellen wir uns eine Datenbank für phpMyAdmin mit Standardberechtigungen, usw. Also bestätigen wir mit Yes:

Standard Datenbank erstellen Yes/no?

Nun werden wir nach einem swort für die Benutzeroberfläche gefragt. Wenn Ihr kein Passwort eingebt, wird ein zufälliges Passwort generiert. In meinem Fall setze ich ein Passwort:

Wählt ein sicheres Passwort!

Nach der Konfiguration müssen wir mbstring einmal explizit ausführen und unseren Apache2 Service neustarten:

sudo phpenmod mbstring
sudo systemctl restart apache2

Benutzer für MySQL / MariaDB anlegen

In meinem Fall benutze ich MariaDB, daher geben wir den folg. Befehl ein, um unseren Benutzer zu erstellen:

CREATE USER '<NAME>'@'localhost' IDENTIFIED BY '<SICHERESPW>';

Sollte bei diesem Befehl:

SELECT user, authentication_string, plugin, host FROM mysql.user;

unter „plugin“ nichts stehen, müssen wir noch eins auswählen. Ab PHP7.4 empfehle ich „caching_sha2_password“, sollte es damit nicht gehen (Wie in meinem Beispiel, Keine Ahnung warum) – könnt Ihr auch „mysql_native_password“ nehmen. Der Befehl für die Benutzer ist:

 UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = '<NAME>';

Wichtig: Dieser Befehl geht nur mit MariaDB! Wenn Ihr das mit MySQL machen wollt, lautet der Befehl so:

ALTER USER '<NAME>'@'localhost' IDENTIFIED WITH mysql_native_password BY '<SICHERESPW>';

Zum Schluss geben wir unserem Nutzer Vollzugriff auf die Datenbank:

GRANT ALL PRIVILEGES ON *.* TO '<NAME>'@'localhost' WITH GRANT OPTION;

Mit „exit;“ kommen wir aus der SQL Befehlszeile raus.

phpMyAdmin Zugang testen

Wenn Ihr alles richtig gemacht habt, könnt Ihr euer phpMyAdmin testen, indem Ihr https://seite.tld/phpmyadmin/ aufruft. Es sollte euch nun dieses Login Fenster entgegen kommen:

phpMyAdmin Login Fenster (Hat also alles geklappt;)

Nun ist phpMyAdmin eigentlich einsatzbereit. Wir wollen aber auf Nummer Sicher gehen und den Login mit einem htaccess Passwortschutz ausstatten.

Dadurch gehen wir sicher, dass man nicht direkt die Login-Form sieht, sondern sich erst auf dem Webserver authentifizieren muss.

Leider hatte PMA immer mal wieder Sicherheitsprobleme, vor Allem wenn es um den Zugang ging. Daher gehe ich diese Extra-Meile und sichere PMA doppelt ab.

PMA mit htpasswd absichern

Wir müssen folg. Datei bearbeiten:

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

In dieser Datei fügen wir zwischen dem ersten <Directory> Tag folg. ein:

AllowOverride All

Dadurch sollte die Datei ungefähr so aussehen:

Ich hab es mal dazwischen gepackt.

Nun die Datei abspeichern und den Apache2 Dienst neustarten:

sudo systemctl restart apache2

In der Datei:

sudo nano /usr/share/phpmyadmin/.htaccess

können wir nun die Authentifizierung via .htpasswd aktivieren, indem wir folg. in die Datei schreiben:

AuthType Basic
AuthName "Bitte Authentifizieren"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

Jetzt legen wir mit diesem Befehl unsere .htpasswd an:

nano /etc/phpmyadmin/.htpasswd

In meinem letzten Tutorial, habe ich bereits gezeigt, wie das geht – daher hier nur die Kurzfassung. Generiert euch über z.B. diesen Link einen Benutzer und das Passworthash und fügt beides dort ein. Also so:

username:passwordhash

Wenn wir also jetzt die phpMyAdmin Seite nochmal aufrufen, werden wir nach einem Passwort gefragt:

Hier nutzt Ihr eure zuvor in die .htpasswd eingetragenen Zugangsdaten

Wichtiger Hinweis zur Sicherheit

Natürlich ist eure Seite nur so sicher, wie Ihr es selbst festlegt. Erstellt Ihr kurze und unsichere Passwörter, werdet ihr einfacher gehacked, als wenn Ihr sichere und öfter gewechselte Passwörter nutzt. Passt also gut auf!


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.