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:
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:
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:
Geben Sie nun Ihre MySQL-Administrationsbenutzer-Anmeldeinformationen ein und klicken Sie auf die Schaltfläche „Go“. Sie sollten die folgende Seite sehen:
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.