Zugriff auf Dienst teilweise mit Passwortschutz einschränken

oodoloo

Benutzer
Mitglied seit
18. Jan 2013
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen,

vorab möchte ich schon mal um Nachsicht bitten, da mein Eintrag hier vermutlich nur teilweise reinpasst, aber in andere Foren vermutlich ebenso, weshalb ich mich dann dafür entschieden hatte den Eintrag hier zu veröffentlichen.

ich habe auf meinem Synology NAS einen Docker Container der einen Dienst bereitstellt. Dieser Dienst läuft unter einem Port, als Beispiel 8088.
Über einen Reverse Proxy Eintrag leite ich den Aufruf auf den Port 8088 um, wenn "von aussen" die url https://meindienst.domain.de aufgerufen wird.
Über den Dienst kann man Texte erstellen und beispielsweise einschränken, wie oft dieser aufgerufen werden kann.
Dafür wird dann eine Url erstellt, wie beispielsweise

https://meindienst.domain.de/en/p/1ylbeufti8lcvg

Ich möchte nun gerne den Zugriff auf https://meindienst.domain.de über eine htaccess mit htpasswd Datei schützen und den Zugriff auf https://meindienst.domain.de/en/p/1ylbeufti8lcvg öffentlich lassen.

Ist das überhaupt möglich?
Ist das über die Webstation mit einer Rewrite Condition möglich?

Oder hat jemand vielleicht einen ganz anderen Ansatz?

Würde mich freuen, wenn mir da jemand weiterhelfen könnte...

Viele Grüße
oodoloo
 

its

Benutzer
Mitglied seit
27. Aug 2016
Beiträge
168
Punkte für Reaktionen
53
Punkte
78
Ich bin kein .htaccess Experte, aber mit so einer Bedingung sollte es funktionieren:

# Bedingung, um eine Ausnahme für bestimmte URLs festzulegen
<FilesMatch ".*">
Require valid-user
</FilesMatch>

<FilesMatch "^/en/p/1ylbeufti8lcvg$">
Require all granted
</FilesMatch>
 

oodoloo

Benutzer
Mitglied seit
18. Jan 2013
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Danke die Rückmeldung - das sieht ja schon mal recht vielversprechend aus.
Ich bin mir nur unsicher, wie das mit der Webstation in Kombination mit dem Reverse Proxy funktioniert.
Hat da jemand einen Ansatz?
Komme ich mit dem ersten Aufruf am Reverse Proxy an, der leitet an einen Port in der Web Station, dort dann die Condition und dann direkt an den Port des Docker Container oder muss ich dann nochmal über den Reverse Proxy?
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
14.243
Punkte für Reaktionen
4.949
Punkte
519
Nein, das muss nur einmal über den Reverse Proxy.
 

oodoloo

Benutzer
Mitglied seit
18. Jan 2013
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Und wie komme ich dann von der Web Station zum Docker Container an den Port 8088?
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
14.243
Punkte für Reaktionen
4.949
Punkte
519
Indem du es direkt an localhost mit Port 8088 weiterleitest und nicht an den FQDN
 

oodoloo

Benutzer
Mitglied seit
18. Jan 2013
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Also ich komme beim Reverse Proxy an, leite es dann an die WebStation an einen bestimmten Port weiter, dort hinterlege ich eine .htaccess datei mit

# Bedingung, um eine Ausnahme für bestimmte URLs festzulegen
<FilesMatch ".*">
Require valid-user
</FilesMatch>

<FilesMatch "^/en/p/1ylbeufti8lcvg$">
Require all granted
</FilesMatch>

Aber das reicht doch dann nicht endgültig, oder?
Muss ich dann noch die Weiterleitung in die .htaccess Datei schreiben?
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
14.243
Punkte für Reaktionen
4.949
Punkte
519
Das kann ich leider nicht beantworten, wie man das genau konfigurieren muss. Habe die Webstation nicht im Einsatz. Technisch müsste es aber so ablaufen
-du kommst rein mit dem FQDN (oder eben den Port, auf den der RP lauscht)
-die Webstation gibt es weiter an den gemappten Port des Docker Containers

Warum brauchst du die Webstation überhaupt? Ich erreiche alle meine Docker Container über den Reverse Proxy ohne die Webstation
 

oodoloo

Benutzer
Mitglied seit
18. Jan 2013
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Das geht bei mir auch. Habe es aktuell auch so eingerichtet und der Dienst ist von außen über den FQDN erreichbar.
Ich wollte es nur gerne etwas einschränken, sodass der Dienst bzw. die Website passwortgeschützt ist.
Aber die Links, die über den Dienst erstellt werden, sollen trotzdem öffentlich erreichbar sein.
Da hatte ich bisher nur den Ansatz gefunden, das über eine .htaccess Datei zu regeln, aber die kann ich ja nicht im Reverse Proxy hinterlegen und im Docker Container wüsste ich auch nicht wie. Deshalb blieb für mich da nur die Web Station über, mit der man das regeln könnte - so war zumindest meine Hoffnung.
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.622
Punkte für Reaktionen
760
Punkte
154
Der Reverse Proxy von DSM kann das nicht per GUI. Das müsstest du in der Config vom Reverse Proxy Eintrag hinzufügen oder einen anderen RP verwenden.
 

its

Benutzer
Mitglied seit
27. Aug 2016
Beiträge
168
Punkte für Reaktionen
53
Punkte
78
Die .htaccess kommt in das root-verzeichnis des Webservers, in deinem fall ist der in deinem Docker-Container. Um welchen Dienst handelt es sich eigentlich, oder habe ich da was überlesen?
 

oodoloo

Benutzer
Mitglied seit
18. Jan 2013
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Ne ne, ich hatte es nicht geschrieben, weil ich dachte es sei nicht relevant um welchen Dienst es sich handelt.
Im konkreten ist es ein Docker Container für diesen Dienst.

https://github.com/pglombardo/PasswordPusher

Ach, die kann man doch direkt in den Docker Container legen.
Wobei ich nun leider trotzdem nicht genau weiß, wo ich sie hinpacken muss.
Müsste doch dann eigentlich der Ordner unter "docker/{containerName}" sein, oder? Oder muss die da evtl. nochmal in einen Subfolder, was somit wiederum dann doch jeweils spezifisch für den jeweiligen Service wäre.
 

its

Benutzer
Mitglied seit
27. Aug 2016
Beiträge
168
Punkte für Reaktionen
53
Punkte
78
Hmm, die app scheint mit Ruby geschrieben zu sein - da kenne ich die Ordnerstruktur nicht. Beim Symfony-Framework wäre es der Public-Ordner. Leider kann ich dir da nicht wirklich weiter helfen, sicher ist, einfach nur in den Ordner "docker/{containerName}" zu kopieren, ist nicht die Lösung!
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.622
Punkte für Reaktionen
760
Punkte
154
.htaccess funktioniert doch eh nur beim Apache. Sollte Nginx benutzt werden geht es nicht mehr. Und selbst beim Apache könnte das deaktiviert sein...
Die beste Lösung ist einen anderen RP zu nutzen
 
  • Like
Reaktionen: its

oodoloo

Benutzer
Mitglied seit
18. Jan 2013
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Was würde es denn da für Alternativen geben? Gibt es da Zusatzpakete (evtl. Drittanbieter) für die Diskstation selbst? Oder dann evtl. ein Zusatzprogramm als Docker Container?
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.622
Punkte für Reaktionen
760
Punkte
154
Da gibt es den Nginx Proxy Manager, SWAG, Caddy, traefik... Alles Docker.
Der Einzige mit UI ist der erste.
 

oodoloo

Benutzer
Mitglied seit
18. Jan 2013
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Ok - Danke. Ich werde mir die mal anschauen, ob ich damit weiterkomme und meine ursprüngliche gewünschte Konfiguration damit umgesetzt bekomme.
 


 

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