Installieren und absichern von phpMyAdmin unter CentOS 8

phpMyAdmin ist ein kostenloses und quelloffenes Tool zur Verwaltung von MySQL und MariaDB Servern über eine webbasierte Oberfläche. Mit phpMyAdmin können Sie Datenbanken und Benutzer anlegen und verwalten, SQL-Statements ausführen, Daten importieren und exportieren, sowie Datenbankaktivitäten wie z.B. Anlegen, Löschen, Tabellen, Spalten, Indizes, Berechtigungen und vieles mehr durchführen. phpMyAdmin ist eines der beliebtesten und meistgenutzten Administrationswerkzeuge, insbesondere für Webhosting-Dienste.

PHPMyAdmin Eigenschaften

  • Bietet eine einfache und benutzerfreundliche Web-Schnittstelle.
  • Daten aus CSV und SQL importieren.
  • Unterstützt die meisten MySQL-Features, einschließlich Erstellen, Kopieren, Löschen, Umbenennen, Löschen und Ändern von Datenbanken, Tabellen, Feldern und Indizes.
  • Ermöglicht den Export von Daten in verschiedene Formate wie PDF, CSV, SQL, XML und viele andere.
  • Verwaltung mehrerer Server.
  • Erstellung komplexer Abfragen mittels Query-by-example (QBE).

In diesem Tutorial zeigen wir Ihnen, wie Sie phpMyAdmin auf dem CentOS 8 Server installieren und sichern.

Anforderungen

  • Ein Server, auf dem CentOS 8 läuft.
  • Auf dem Server ist ein Root-Passwort konfiguriert.

LAMP-Server installieren

Zuerst müssen Sie Apache, MariaDB, PHP und andere PHP-Bibliotheken auf Ihrem Server installieren. Sie können alle mit dem folgenden Befehl installieren:

dnf install httpd mariadb-server php php-pdo php-pecl-zip php-json php-common php-fpm php-mbstring php-cli php-mysqlnd php-json php-mbstring wget unzip

Sobald alle Pakete installiert sind, starten Sie den Apache und den MariaDB-Dienst und aktivieren Sie diese nach dem Neustart des Systems mit dem folgenden Befehl:

systemctl start httpd
 systemctl start mariadb
 systemctl enable httpd
 systemctl enable mariadb

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

MariaDB konfigurieren

Standardmäßig ist MariaDB nicht gesichert. Also müssen Sie es zuerst sichern. Sie können es tun, indem Sie das mysql_secure_installationsskript ausführen:

mysql_secure_installation

Beantworten Sie alle Fragen wie unten gezeigt:

Set root password? [Y/n] Y
New password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Wenn Sie fertig sind, sollten Sie die folgende Ausgabe sehen:

 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Zu diesem Zeitpunkt ist Ihre MariaDB-Installation gesichert.

phpMyAdmin installieren

Standardmäßig ist phpMyAdmin nicht im CentOS 8 Standard-Repository verfügbar. Sie müssen also die neueste Version des phpMyAdmin von deren offizieller Website herunterladen. Sie können es mit dem folgenden Befehl herunterladen:

wget https://files.phpmyadmin.net/phpMyAdmin/4.9.2/phpMyAdmin-4.9.2-all-languages.zip

Entpacken Sie die heruntergeladene Datei nach dem Herunterladen mit dem folgenden Befehl:

unzip phpMyAdmin-4.9.2-all-languages.zip

Als nächstes verschieben Sie den extrahierten Inhalt in das Verzeichnis /usr/share wie unten gezeigt:

mv phpMyAdmin-4.9.2-all-languages /usr/share/phpmyadmin

Als nächstes wechseln Sie das Verzeichnis nach /usr/share/phpmyadmin und benennen die Datei config.sample.inc.php um:

cd /usr/share/phpmyadmin
 mv config.sample.inc.php config.inc.php

Als nächstes öffnen Sie die Datei mit Ihrem bevorzugten Texteditor wie unten gezeigt:

nano config.inc.php

Ändern Sie die folgende Zeile:

$cfg['blowfish_secret'] = 'your-secret-password';

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Dann importieren Sie die create_tables.sql mit dem folgenden Befehl:

mysql < /usr/share/phpmyadmin/sql/create_tables.sql -u root -p

Geben Sie Ihr Root-Passwort an, wenn Sie aufgefordert werden, die Tabelle zu importieren.

Als nächstes erstellen Sie ein tmp-Verzeichnis für phpmyadmin und vergeben die entsprechenden Rechte:

mkdir /usr/share/phpmyadmin/tmp
 chown -R apache:apache /usr/share/phpmyadmin
 chmod 777 /usr/share/phpmyadmin/tmp

Apache für phpMyAdmin konfigurieren

Als nächstes müssen Sie eine Konfigurationsdatei für den virtuellen Apache-Host für phpMyAdmin erstellen. Sie können sie mit dem folgenden Befehl erstellen:

nano /etc/httpd/conf.d/phpmyadmin.conf

Fügen Sie die folgenden Zeilen hinzu:

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny> 
      Require all granted
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpmyadmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require all granted
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den Apache-Dienst mit folgendem Befehl neu:

systemctl restart httpd

Sie können den Status des Apache mit dem folgenden Befehl überprüfen:

systemctl status httpd

Sie sollten die folgende Ausgabe sehen:

? httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/httpd.service.d
           ??php-fpm.conf
   Active: active (running) since Wed 2019-12-18 01:07:52 EST; 6s ago
     Docs: man:httpd.service(8)
 Main PID: 5636 (httpd)
   Status: "Started, listening on: port 80"
    Tasks: 213 (limit: 25044)
   Memory: 28.7M
   CGroup: /system.slice/httpd.service
           ??5636 /usr/sbin/httpd -DFOREGROUND
           ??5639 /usr/sbin/httpd -DFOREGROUND
           ??5640 /usr/sbin/httpd -DFOREGROUND
           ??5641 /usr/sbin/httpd -DFOREGROUND
           ??5642 /usr/sbin/httpd -DFOREGROUND

Dec 18 01:07:52 centos8 systemd[1]: Stopped The Apache HTTP Server.
Dec 18 01:07:52 centos8 systemd[1]: Starting The Apache HTTP Server...
Dec 18 01:07:52 centos8 httpd[5636]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::200:d0>
Dec 18 01:07:52 centos8 httpd[5636]: Server configured, listening on: port 80
Dec 18 01:07:52 centos8 systemd[1]: Started The Apache HTTP Server.

Konfigurieren Sie SELinux und Firewall

Standardmäßig ist SELinux in CentOS 8 aktiviert. Sie müssen also SELinux für phpMyAdmin konfigurieren, damit es korrekt funktioniert.

Installieren Sie zunächst das Paket policycoreutils-python-utils zur Verwaltung einer SELinux-Umgebung mit dem folgenden Befehl:

dnf install policycoreutils-python-utils

Als nächstes aktivieren Sie den Zugriff auf das Verzeichnis /usr/share/phpmyadmin mit dem folgenden Befehl:

semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/phpmyadmin/'
 semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/phpmyadmin/tmp(/.*)?"

Führen Sie nun erneut alle Dateien in Ihrem phpmyadmin-Verzeichnis durch, indem Sie den folgenden Befehl ausführen:

restorecon -Rv '/usr/share/phpmyadmin/'

Als nächstes müssen Sie eine Firewall-Regel erstellen, um den HTTP-Dienst von externen Netzwerken zuzulassen. Sie können es mit dem folgenden Befehl erlauben:

firewall-cmd --permanent --add-service=http
 firewall-cmd --reload

phpMyAdmin ist nun installiert und konfiguriert. Jetzt ist es Zeit zu prüfen, ob es funktioniert oder nicht.

Öffnen Sie Ihren Webbrowser und geben Sie die URL http://your-server-ip/phpmyadmin ein. Sie werden auf die folgende Seite weitergeleitet:

PHPMyAdmin Anmeldung

Sicheres phpMyAdmin

Zu diesem Zeitpunkt funktioniert die phpMyAdmin-Instanz einwandfrei. Die Sicherung Ihrer phpMyAdmin-Instanz von der Außenwelt ist jedoch eine wichtige Aufgabe für Sie. In diesem Abschnitt zeigen wir Ihnen, wie Sie Ihre phpMyAdmin-Instanz sichern können.

phpMyAdmin von bestimmter IP aus zulassen

Zuerst müssen Sie Ihren phpMyAdmin so konfigurieren, dass er nur von der IP-Adresse Ihres Heimatanschlusses aus erreichbar ist.

Sie können es konfigurieren, indem Sie die Datei /etc/httpd/conf.d/phpmyadmin.conf bearbeiten:

nano /etc/httpd/conf.d/phpmyadmin.conf

Finden Sie die folgenden Zeilen:

     <RequireAny>
       Require all granted
     </RequireAny>

Und, ersetzen Sie sie durch die folgenden:

<RequireAny>
    Require ip your-home--connection-ip-address
    Require ip ::1
</RequireAny>

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

Zusätzliche Authentifizierungsschicht konfigurieren

Es ist eine gute Idee, Ihr phpmyadmin-Verzeichnis mit einem Passwort zu schützen, indem Sie eine Basis-Authentifizierung einrichten.

Erstellen Sie dazu eine neue Authentifizierungsdatei mit dem Tool htpasswd wie unten gezeigt:

mkdir /etc/phpmyadmin
 htpasswd -c /etc/phpmyadmin/.htpasswd admin

Sie werden gebeten, Ihr Admin-Passwort wie unten gezeigt einzugeben:

New password: 
Re-type new password: 
Adding password for user admin

Als nächstes müssen Sie den Apache für die Verwendung der .htpasswd-Datei konfigurieren. Sie können dies tun, indem Sie die Datei /etc/httpd/conf.d/phpmyadmin.conf bearbeiten.

nano /etc/httpd/conf.d/phpmyadmin.conf

Fügen Sie die folgenden Zeilen unterhalb der Zeile „AddDefaultCharset UTF-8“ ein:

    Options  +FollowSymLinks +Multiviews +Indexes
    AllowOverride None
    AuthType basic
    AuthName "Authentication Required"
    AuthUserFile /etc/phpmyadmin/.htpasswd
    Require valid-user

Speichern Sie die Datei und starten Sie den Apache-Dienst neu, damit die Änderungen wirksam werden:

systemctl restart httpd

Zugang phpMyAdmin

Jetzt ist Ihre phpMyAdmin-Instanz mit einer zusätzlichen Sicherheitsebene gesichert. Öffnen Sie Ihren Webbrowser und geben Sie die URL http://your-server-ip/phpmyadmin ein. Sie werden aufgefordert, die Zugangsdaten des zuvor erstellten Benutzers wie unten dargestellt einzugeben:

Gesicherte phpMyAdmin

Geben Sie Ihren Admin-Benutzernamen und Ihr Passwort ein und klicken Sie dann auf die Schaltfläche OK. Sie werden auf die phpMyAdmin Login-Seite weitergeleitet:

Anmeldung als Root-Benutzer bei phpMyAdmin

Geben Sie nun Ihre MySQL-Administrationsbenutzer-Anmeldeinformationen ein und klicken Sie auf die Schaltfläche „Go“. Sie sollten die folgende Seite sehen:

phpMyAdmin Datenbank-Dashboard

Fazit

Herzlichen Glückwunsch! Sie haben phpMyAdmin erfolgreich auf dem CentOS 8 Server installiert und gesichert. Sie können nun Datenbanken, Benutzer und Tabellen anlegen und über die webbasierte Oberfläche verwalten. Wenn Sie Fragen haben, können Sie mich gerne fragen.

Das könnte Dich auch interessieren …