phpMyAdmin unter Debian Buster installieren und absichern

Seit Debian Buster ist phpMyAdmin nicht mehr in den Repositories zu finden und muss manuell installiert werden.

Weseln Sie auf dem Server (auf dem ihr phpMyAdmin installiert werden soll) zu folgendem Pfad:

cd /usr/share

und holt euch mittels wget die aktuellste Version von https://www.phpmyadmin.net/ (zum Zeitpunkt des Blogbeitrags ist 4.9.0.1 die aktuellste Version)

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

Im Anschluss wird die Zip Datei entpackt, umbenannt und mit den passenden Rechten für den Apache Webserver ausgestattet:

unzip phpMyAdmin-4.9.0.1-all-languages.zip
mv phpMyAdmin-4.9.0.1-all-languages phpmyadmin
chown www-data:www-data -R phpmyadmin

Als nächstes erstellen wir unter MariaDB eine Datenbank sowie einen Benutzer für phpMyAdmin. ACHTUNG: Passwort unbedingt abändern!

mysql -u root
CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON phpmyadmin.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY 'Ihr-Sicheres-Passwort';
FLUSH PRIVILEGES;
EXIT;

Sollten nicht alle Abhängigkeiten von PHP installiert sein, so kann man dies wie folgt nachholen:

apt install php-phpseclib php-php-gettext php-imagick php7.3-imap php7.3-gmp php7.3-common php7.3-gd php7.3-mbstring php7.3-xml php7.3-json php7.3-curl php7.3-zip php7.3-bz2 php7.3-intl

Nun wird die Konfigurationsdatei für den Apache Server unter /etc/apache2/conf-available/phpmyadmin.conf angelegt:

Alias /nichtphpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
    AllowOverride All
    <IfModule mod_php5.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>
        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>
    <IfModule mod_php.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>

        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>
</Directory>

<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>

<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>

<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>

Bitte darauf achten nicht /phpmyadmin als Alias zu verwenden, da dieser Pfad von Hackern und Co immer zuerst ausprobiert wird. Im obigen Beispiel wurde der Alias /nichtphpmyadmin verwendet. Achten Sie auch auf die Zeile

AllowOverride All

Diese ist nur erforderlich, wenn Sie die Installation zusätzlich mit einem htaccess Passwortschutz versehen wollen (empfohlen). Um letzeren einzurichten, legen sie die Datei /usr/share/phpmyadmin/.htaccess mit folgendem Inhalt an:

AuthName "Restricted"
AuthType Basic
AuthUserFile /etc/phpmyadmin/.htpasswd
require valid-user

Die .htpasswd Datei wird unter /etc/phpmyadmin/.htpasswd erstellt. Der Ordner /etc/phpmyadmin muss dazu ggf. neu erstellt werden.

htpasswd -c /etc/phpmyadmin/.htpasswd meinBenutzerName

Jetzt erstellen wir ein temporäres Arbeitsverzeichnis für phpMyAdmin:

mkdir -p /var/lib/phpmyadmin/tmp
chown www-data:www-data /var/lib/phpmyadmin/tmp

Die Apache Konfigurationsdatei wird noch aktiviert und Apache neu gestartet:

a2enconf phpmyadmin.conf
systemctl restart apache2

Zum Schluss kann man entweder die URL von phpMyAdmin mit einem angehängten /setup aufrufen um die Konfiguration abzuschließen, oder man kopiert die config.sample.inc.php zu config.inc.php und ergänzt manuell einen 32stelligen Blowfish Secret Schlüssel. Dieser muss nicht gemerkt werden.

Da man sich mittels Root User nicht mehr von extern an der MariaDB anmelden kann, ist evtl auch folgender Artikel interessant: https://www.florian-fritsch.com/mariadb-kein-root-login-mit-phpmyadmin-moeglich/

Schreibe einen Kommentar

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