phpMyAdmin-Zugriff von extern einschränken

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
705
Punkte für Reaktionen
11
Punkte
38
Hallo zusammen,

nachdem ich in letzter Zeit immer mehr versuche, Zugriff von außen zu erschweren, möchte ich nun den Zugriff auf phpMyAdmin einschränken.

Ich habe es damals über den Paket-Manager installiert, dadurch landet es ja im /web-Verzeichnis. Ich hatte mir nun überlegt dort einfach eine .htaccess-Datei abzulegen mit dem Inhalt
Code:
Order Deny,Allow
Deny from All
Allow from 192.168.1.11

Jedoch reagiert phpMyAdmin/Apache darauf gar nicht. Der Zugriff ist weiterhin möglich.

Was mache ich falsch, bzw. was ist Eure Empfehlung, den Zugriff nach außen am besten zu blockieren?

LG
Felix
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
705
Punkte für Reaktionen
11
Punkte
38
Danke dir!
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
705
Punkte für Reaktionen
11
Punkte
38
Und der Vollständigkeit halber, wenn hier auch nochmal jemand landet:
Ich hab folgenden Code in der

Code:
/var/packages/phpMyAdmin/target/nginx_conf/www.phpMyAdmin.enable.conf

eingefügt:

Code:
location ~ ^/phpMyAdmin/(.*)/\. {
    deny all;
}
location ~* ^/phpMyAdmin/(.*)\.(jpg|jpeg|png|gif|css|js|ico)$ {
    allow 192.168.1.0/24;
    deny all;
    root /var/services/web/;
    expires max;
    log_not_found off;
}
location ~ ^/phpMyAdmin/(.*)\.php$ {
    allow 192.168.1.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.1.0/24;
    deny all;
    root /var/services/web/;
    try_files $uri $uri/ /phpMyAdmin/index.php$is_args$args;
}
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.135
Punkte für Reaktionen
898
Punkte
424
Schön kopiert. Danke.

Ich würde allerdings den Zugriff wirklich konkret auf eine IP oder kleines Subnet einschränken und nicht nur das ganze LAN, wenn man sich schon die Mühe macht.
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
705
Punkte für Reaktionen
11
Punkte
38
Beitrag kam von goetz, der Vollständigkeit halber.

Ich hatte auch vor, es auf eine einzelne IP zu beschränken, aber mit
Code:
    allow 192.168.1.10;
    deny all;
wollte er nicht (192.168.1.10 ist die IP meines PC, der alleinig zugreift).

Was habe ich falsch gemacht?
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.135
Punkte für Reaktionen
898
Punkte
424
Vermutlich nur die falsche Notation. Wobei er eigentlich die IP auch ohne CIDR oder Subnet-Angabe nehmen sollte.
Was heißt "wollte er nicht"? Hat nginx -tein Fehler geworfen?
nginx -s reload Konfiguration neu geladen?

192.168.1.10/32 ist ein einzelner Host, sollte aber wie gesagt auch ohne die /32 gehen.
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
705
Punkte für Reaktionen
11
Punkte
38
Habe es sowohl mit als auch ohne Subnet-Angabe probiert. In beiden Fällen bekomme ich
"Es tut uns Leid, die von Ihnen gesuchte Seite konnte nicht gefunden werden."
zu sehen.
Neugestartet habe ich mit
Code:
synoservicectl --restart nginx
, aber auch
Code:
nginx -s reload
hatte keinen Erfolg.

Code:
nginx -t
liefert sowohl mit als auch ohne Subnet-Angabe keinen Fehler:
Code:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
705
Punkte für Reaktionen
11
Punkte
38
Ähem, hüstel. Ich nehm alles zurück. Habe meinen PC vor kurzem neu aufgesetzt und da wohl vergessen ihm die .10 als Default-IP zu geben...

Mein Fehler ?
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.237
Punkte für Reaktionen
581
Punkte
174
@maalik Sehr schön das ganze auf das lokale Netzwerk zu beschränken. Gefällt mir sehr gut. Vielleicht stelle ich das auch noch um.

Momentan habe ich den Zugriff von Außen über htaccess geschützt.

Unter /var/services/web/phpMyAdmin die Datei .htaccess anlegen...
Code:
nano /var/services/web/phpMyAdmin/.htaccess

mit folgendem Inahlt:
Code:
AuthType Basic
AuthName "Bitte melden Sie sich an"
AuthUserFile /var/services/web/phpMyAdmin/.htpasswd
require valid-user

Anschließend das dazugehörige .htpasswd File erezugt mit:
Code:
htpasswd -c /var/services/web/phpMyAdmin/.htpasswd username

"username" am Ende der Zeile ist ein beliebiger Benuztername den man hier festlegen kann.
Man wird nach einem Passwort gefragt das man hier erstellt.

Der Benutzername wird hier im Klartext in der Datei .htpasswd abgelegt, wohingegen vom Passwort nur der Hashwert in der Datei .htpasswd gespeichert wird.

Den Eigentümer von Benutzer und Gruppe beider Dateien noch auf http setzen:
Code:
chown http:http /var/services/web/phpMyAdmin/.htaccess
chown http:http /var/services/web/phpMyAdmin/.htpasswd


Beim Aufruf des phpMyAdmin Webinterface wird man dann immer nach den Benutzerdaten (User/Password) gefragt bevor die Seite mit dem Login für phpMyAdmin dargestellt wird.
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
705
Punkte für Reaktionen
11
Punkte
38
@luddi Dann hast du phpMyAdmin aber nicht über den Paketmanager installiert oder? Weil da läuft er dann ja über nginx und da tut die .htaccess nicht mehr.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.135
Punkte für Reaktionen
898
Punkte
424
Komisch, ok. Hat sich ja geklärt, hatte grad überlegt, ob ich an den nginx Direktiven irgendwas übersehen hätte. hehe

Bei @luddi könnte ich mir vorstellen, dass er eventuell das Backend auf Apache gesetzt hat und es dann geht, weil er die .htaccess direkt in das Installationsverzeichnis /var/services/web/phpMyAdmin/.htaccess mit reingepackt hat und nicht in /web.

Das nginx / Apache Misch-Masch macht immer wieder Kopfschmerzen, auch wenn man es irgendwie auseinander gedröselt bekommt.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.371
Punkte für Reaktionen
1.188
Punkte
234
Man kann für die Eingangsfrage auch einfach das Paket starten / stoppen, wenn man phpMyAdmin lediglich aller halben Jahre braucht ;)
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.237
Punkte für Reaktionen
581
Punkte
174
@luddi Dann hast du phpMyAdmin aber nicht über den Paketmanager installiert oder?
Ich hatte es ursprünglich über den Paketmanager installiert aber irgendwann bin ich umgestiegen und habe es direkt selbst im webroot abgelegt um die neuere Version zu bekommen.

dass er eventuell das Backend auf Apache gesetzt hat
Aber das ist egal (ob über Paketmanager oder manuell installiert) wenn man wie @Fusion erwähnt das Backend mit Apache definiert. Und genau das ist bei mir auch der Fall.
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
705
Punkte für Reaktionen
11
Punkte
38
Nach dem Update auf DSM 7 und die Auslagerung von phpmyadmin in /web_packages funktioniert die Lösung nicht mehr. Die Datei
Code:
/var/packages/phpMyAdmin/target/nginx_conf/www.phpMyAdmin.enable.conf
ist nicht vorhanden. Habe sie auch sonst nicht auf dem System gefunden. Jemand eine Idee, wo sich das jetzt versteckt?
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
705
Punkte für Reaktionen
11
Punkte
38
Niemand eine Idee?
 

hoewer

Benutzer
Mitglied seit
29. Nov 2016
Beiträge
15
Punkte für Reaktionen
6
Punkte
3
Hallo @maalik ,

Die Zugriffssteuerung kann in DSM 7 direkt über die Weboberfläche gesteuert werden.
Dazu muss zunächst unter Systemsteuerung/Anmeldeportal/Erweitert ein Zugangskontrollprofil erstellt werden.

Dieses kann z.B. dem Eintrag aus obiger www.phpMyAdmin.enable.conf entsprechen oder auch komplizierter sein:

Profilname: Local Network

192.168.1.0/24zulassen
Alleverweigern

Anschließend muss dieses Profil in der WebStation unter "Webdienstportal" dem Dienst "phpMyAdmin" zugeordnet werden.
Manchmal werden die Dinge mit einem Upgrade tatsächlich einfacher... ;-)
 
  • Like
Reaktionen: Fusion

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.135
Punkte für Reaktionen
898
Punkte
424
Ja, hab ich neulich auch mal genommen für eine lokale WordPress Installation. Und es funktioniert sogar. 😁
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
705
Punkte für Reaktionen
11
Punkte
38
hey hoewer,

das ist ja praktisch, dass das jetzt auch über die gui geht. nur leider geht es bei mir nicht. ich bekomme immer einen 403, egal was ich eingebe und wie ich es verschiebe. also sowohl mit 192.168.1.0/24, als auch mit 192.168.1.10/32, auch die reihenfolge der einträge habe ich beachtet.
was mache ich falsch?
über lokal geht es übrigens immer, nur über die domain nicht.
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    13,7 KB · Aufrufe: 7

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.135
Punkte für Reaktionen
898
Punkte
424
Mehr Infos...

Ist das Profil zugewiesen?
Mit Profil immer 403, ohne immer phpmyadmin?

Wie ist die 'Domain' eingerichtet auf der DS?
Nur im Webdienst Portal für phpmyadmin, sonst nirgends eingetragen?
lokale DNS Auflösung oder extern und NAT Loopback (DNS Rebind Schutz Ausnahme) im Router?
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat