phpMyAdmin-Zugriff von extern einschränken

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
590
Punkte für Reaktionen
0
Punkte
36
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
 

Fusion

Benutzer
Mitglied seit
06. Apr 2013
Beiträge
12.285
Punkte für Reaktionen
389
Punkte
359
Forumsuche benutzen...

Vorinstalliertes/Installierbares Paket läuft unter nginx (egal welches Backend du in der Web Station einstellst)

Deine Optionen sind u.a. hier beschrieben
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
590
Punkte für Reaktionen
0
Punkte
36
Danke dir!
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
590
Punkte für Reaktionen
0
Punkte
36
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
Mitglied seit
06. Apr 2013
Beiträge
12.285
Punkte für Reaktionen
389
Punkte
359
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
590
Punkte für Reaktionen
0
Punkte
36
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
Mitglied seit
06. Apr 2013
Beiträge
12.285
Punkte für Reaktionen
389
Punkte
359
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
590
Punkte für Reaktionen
0
Punkte
36
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
590
Punkte für Reaktionen
0
Punkte
36
Ä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
Mitglied seit
05. Sep 2012
Beiträge
1.740
Punkte für Reaktionen
64
Punkte
74
@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
590
Punkte für Reaktionen
0
Punkte
36
@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
Mitglied seit
06. Apr 2013
Beiträge
12.285
Punkte für Reaktionen
389
Punkte
359
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
Mitglied seit
04. Jan 2012
Beiträge
3.336
Punkte für Reaktionen
133
Punkte
129
Man kann für die Eingangsfrage auch einfach das Paket starten / stoppen, wenn man phpMyAdmin lediglich aller halben Jahre braucht ;)
 

luddi

Benutzer
Mitglied seit
05. Sep 2012
Beiträge
1.740
Punkte für Reaktionen
64
Punkte
74
@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.
 
  AdBlocker gefunden!

Du bist nicht hier, um Support für Adblocker zu erhalten, denn dein Adblocker funktioniert bereits ;-)

Klar machen Adblocker einen guten Job, aber sie blockieren auch nützliche Funktionen.

Das Forum wird mit einem hohen technischen, zeitlichen und finanziellen Aufwand kostenfrei zur Verfügung gestellt. Wir zeigen keine offensive oder Themen fremde Werbung. Bitte unterstütze dieses Forum, in dem du deinen Adblocker für diese Seite deaktivierst.