phpMyAdmin unter nginx sperren

Jeder der auf einem Hoster oder einer NAS MariaDB/MySQL installiert hat, ist mit Sicherheit auch schon über phpMyAdmin gestolpert. Es ermöglicht das anlegen, edititieren oder löschen von Datenbanken über eine grafische Oberfläche (GUI). 
phpmNun wird das Programm auf meiner Synology DS415+ per default in den Ordner /web installiert, welcher auch die Dateien beinhaltet, welche die Web Station (Webserver) ausliefert. Somit ist phpMyAdmin unter domain.de/phpMyAdmin (bzw. DynDNS/phpMyAdmin) zugänglich. Ein für mich unbefriedigender Zustand. Obwohl phpMyAdmin mit einem Passwortschutz versehen ist, muß man es nicht unbedingt öffentlich zugänglich machen. Ich sehe in meinem Anwendungsfall keinen Grund warum ich von unterwegs auf meine Datenbanken zugreifen sollte oder gar muß.
Der Zugriff auf Webseiten, einzelne Ordner oder Dateien ließ sich mit Apache2 als Webserver relativ leicht mit einer .htaccess eingrenzen, bzw. auch sperren..

Da phpMyAdmin aber nicht über den Apache2 sondern mit nginx ausgeliefert wird greifen hier keine Regeln welche über eine .htaccess festgelegt worden sind.

phpMyAdmin erstellt während der Installation aber eine Konfigurationsdatei, in welcher wir den Zugriff ebenfalls einschränken können. Die Datei findet sich unter /var/packages/phpMyAdmin/target/synology_added, und heißt www.phpMyAdmin.enable.conf. In meinem Setup wird der Zugriff auf phpMyAdmin generell verboten, mit zwei Ausnahmen für lokale Netze. 

location ~ ^/phpMyAdmin/(.*)/\. {
deny all;
}
location ~* ^/phpMyAdmin/(.*)\.(jpg|jpeg|png|gif|css|js|ico)$ {
allow 192.168.178.0/24;
allow 192.168.179.0/24;
deny all;
root /var/services/web/;
expires max;
log_not_found off;
}
location ~ ^/phpMyAdmin/(.*)\.php$ {
allow 192.168.178.0/24;
allow 192.168.179.0/24;
deny all;
root /var/services/web/;
include fastcgi.conf;
fastcgi_pass unix:/run/php-fpm/php56-fpm.sock;
}
location ~ ^/phpMyAdmin {
allow 192.168.178.0/24;
allow 192.168.179.0/24;
deny all;
root /var/services/web/;
try_files $uri $uri/ /phpMyAdmin/index.php$is_args$args;

Damit die blau hinterlegten Änderungen auch geschrieben werden, muß nur noch der Webserver der NAS mittels synoservicectl –restart nginx neu gestartet werden.
Mit diesen Änderungen ist es nur noch möglich, phpMyAdmin aus den lokalen Netzen 192.168.178.x und 192.168.179.x aufzurufen, andere IPs werden abgewiesen.

504


Kommentare

phpMyAdmin unter nginx sperren — 4 Kommentare

    • Hallo Gerald,

      Danke für Deinen Kommentar.
      Ich habe eben nochmal nachgesehen.
      Unter DSM 6.2.2-24922 Update 2 ist obiges Verfahren weiterhin gültig.
      Mit der Direktive wird PMA auf das lokale Netz begrenzt.

      Mit freundlichen Grüßen

      Markus

Schreibe einen Kommentar

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