phpMyAdmin installieren und absichern  Bild © PCMasters.dephpMyAdmin 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

.