phpMyAdmin installieren und absichern (Bild © PCMasters.de)
Systemvoraussetzungen
Bevor du mit der Installation fortfährst, muss der Server die folgenden technischen Anforderungen erfüllen:
- Webserver: Eine funktionierende Installation von Apache oder Nginx.
- PHP: Version 7.4 oder höher, wobei Version 8.x für bessere Leistung und Sicherheit empfohlen wird.
- Datenbank-Engine: Eine aktive Instanz von MySQL oder MariaDB.
phpMyAdmin Installation auf Ubuntu- und Debian-Systemen
Automatische Installation über APT
Für Nutzer auf Debian-basierten Systemen kann die Software mit dem Advanced Package Tool (apt) installiert werden.
**1.Aktualisieren und installieren: **
apt update
apt install phpmyadmin
2.Konfigurationsschritte:
Während des Installationsvorgangs fordert das System den Nutzer auf:
- Den Webserver auszuwählen (wähle apache2 für die automatische Konfiguration oder wähle Nginx manuell aus).
- Bestätige die Verwendung von dbconfig-common, um die Datenbank für phpMyAdmin zu konfigurieren.
- Lege ein Passwort für den internen phpMyAdmin-Benutzer fest.
Wenn Apache ausgewählt wurde, ist die Oberfläche sofort über http://serverip/phpmyadmin erreichbar.
Manuelle Installation für Nginx-Umgebungen
Nginx erfordert eine manuelle Einrichtung, da es das phpMyAdmin-Verzeichnis nicht automatisch konfiguriert.
1.PHP-FPM und Abhängigkeiten installieren:
apt install php-fpm php-mysql php-mbstring php-zip php-gd
2.Quellcode herunterladen und entpacken:
cd /usr/share
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.zip
tar -xzf phpMyAdmin-5.2.3-all-languages.tar.gz
mv phpMyAdmin-5.2.3-all-languages phpmyadmin
rm phpMyAdmin-5.2.3-all-languages.tar.gz
3.Konfiguriere die Anwendung:
Kopiere die Beispielkonfigurationsdatei:
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
Mit OpenSSL ein 32-Zeichen-Blowfish-Secret erstellen:
openssl rand -base64 32
Füge diese Zeichenfolge in die Datei /usr/share/phpmyadmin/config.inc.php ein:
...
$cfg['blowfish_secret'] = 'SICHERES_32_CHAR_GEHEIMNIS';
...
4.Temporäres Verzeichnis einrichten:
mkdir /usr/share/phpmyadmin/tmp
chown www-data:www-data /usr/share/phpmyadmin/tmp
chmod 755 /usr/share/phpmyadmin/tmp
5.Nginx-Serverblock-Konfiguration:
Füge die folgende Konfiguration zu den Nginx-Site-Einstellungen hinzu:
server {
listen 80;
server_name pa.deinedomain.de;
root /usr/share/phpmyadmin;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.5-fpm.sock; # oder andere Version von PHP fpm
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Änderungen übernehmen:
nginx -t
systemctl reload nginx
Erste Authentifizierung und Zugriff
Der Zugriff auf die Anwendung erfolgt über den Browser unter http://serverip/phpmyadmin. Benutzer müssen sich mit bestehenden MySQL/MariaDB-Zugangsdaten authentifizieren. Der root-Benutzer kann zwar verwendet werden, stellt jedoch ein Sicherheitsrisiko dar.
Erstellen eines dedizierten Administratorbenutzers
Es wird empfohlen, einen separaten Benutzer für die Datenbankverwaltung anzulegen:
CREATE USER 'pma_admin'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON *.* TO 'pma_admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Maßnahmen zur Sicherheitshärtung
Da phpMyAdmin ein besonders attraktives Ziel für Angreifer ist, werden folgende Sicherheitsmaßnahmen empfohlen:
1.Verschlüsselung über HTTPS
Sichere die Verbindung mit Let’s Encrypt:
certbot --nginx -d pa.deinedomain.de
2.IP-basierte Zugriffskontrolle Beschränke den Zugriff auf bestimmte bekannte IP-Adressen.
Für Nginx:
location / {
allow 192.168.1.0/24;
allow 72.100.11.50; # deine public IP
deny all;
try_files $uri $uri/ /index.php?$args;
}
Für Apache (.htaccess):
Require ip 192.168.1.0/24
Require ip 72.100.11.50
3.Sekundäre Authentifizierung
Implementiere die Basic-Authentifizierung über eine Passwortdatei:
htpasswd -c /etc/nginx/.htpasswd pma_admin
Aktualisiere die Nginx-Konfiguration:
location / {
auth_basic "phpMyAdmin";
auth_basic_user_file /etc/nginx/.htpasswd;
try_files $uri $uri/ /index.php?$args;
}
4.URL-Verschleierung
Ändere den Standardzugriffspfad, um automatisiertes Bot-Scannen zu verhindern:
ln -s /usr/share/phpmyadmin /var/www/html/custom-db-path
5. Root-Zugriff deaktivieren
Verhindere, dass sich der Root-Benutzer in die Weboberfläche einloggt, indem du config.inc.php bearbeitest:
$cfg['Servers'][$i]['AllowRoot'] = false;
Erweiterte Konfiguration und Aktivierung von Funktionen
Um erweiterte Funktionen wie den SQL-Verlauf, Lesezeichen und die Designer-Ansicht zu aktivieren, muss der Konfigurationsspeicher initialisiert werden.
1.SQL-Struktur importieren:
mysql -u root -p < /usr/share/phpmyadmin/sql/create_tables.sql
2. config.inc.php aktualisieren:
Definiere den Kontrollbenutzer und die Speichertabellen:
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'password';
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
Softwarewartung und Updates
APT-basierte Updates
apt update
apt upgrade phpmyadmin
Manueller Update-Vorgang
1.Erstelle eine Sicherungskopie der bestehenden config.inc.php.
2.Lade die neueste Version von der offiziellen Quelle herunter.
3.Ersetze den Anwendungsordner.
4.Stelle die config.inc.php-Datei wieder her und lege die Besitzrechte fest:
chown -R www-data:www-data phpmyadmin
.
