Nginx: SSL Zertifikat (https) für lokal genutzte Domains/Container


Recommended Posts

51 minutes ago, sonic6 said:

jap zusammen mit pihole

so nutze ich es auch auf einem Raspi4.

aber irgendwie scheint nicht alles "richtig" zu laufen.

 

Kannst du mal über meine Konfigs schauen ob ich irgendwo einen fehler drinne habe?

Ich habe pihole und Unbound unter dieser Anleitung installiert.

 

Bei meinem Raspi4, wo Pihole und unbound läuft, habe ich unter

/etc/dnsmasq.d/07-example.de.conf 

folgendes stehen.

address=/.example.de/192.168.178.110

wobei die 192.168.178.110 mein Nginx Proxy Manager ist, der als Docker im Unraid-Server läuft.

 

cat /etc/resolv.conf

spuckt beim Raspi4 das aus

domain fritz.box
search fritz.box
nameserver 192.168.178.20

wobei die

192.168.178.20

mein Raspi4 ist auf den Pihole und Unbound läuft.

 

 

 

beim Unraid-Server habe ich unter

Local-TLD: local

stehen und bei

IPv4 DNS server: 192.168.178.1

 

 

 

 

bei der Fritzbox habe ich unter

Internet > Zugangsdaten > DNS-Server

bei beiden Feldern die IP des Pihole`s eingetragen und unter

Heimnetzwerk > Netzwerk > Netzwerkeinstellungen > IPv4-Einstellungen > Lokaler DNS-Server:

habe ich ebenfalls die IP vom Pihole`s eingetragen.

 

 

 

Dann habe ich in Pihole unter DNS-Records folgendes eingetragen:

 

server.fritz.box > 192.168.178.200

 

das ist mein Unraid-Server.

 

und unter CNAME-Records

 

proxy.example.de > server.fritz.box

cloud.example.de > server.fritz.box

....

 

Wenn ich jetzt z.b. cloud.example.de anpinge bekomme ich die ip vom Unraid-Server und nicht die IP vom Nextcloud Container, wo ich eine static IP vergeben habe.

Habe ich da ein denkfehler oder stimmt da was nicht?

Link to comment
53 minutes ago, sakistech said:

beim Unraid-Server habe ich unter

Local-TLD: local

da müsste fritz.box rein, das wird aber nicht der Grund sein, warum es nicht läuft.

 

Hast du den dns-rebind Schutz für deine Domains in der der Fritzbox und am Unbound deaktivert? Besonders der vom Unbound wird gerne mal vergessen.

Link to comment
20 minutes ago, sonic6 said:

da müsste fritz.box rein, das wird aber nicht der Grund sein, warum es nicht läuft.

 

Hast du den dns-rebind Schutz für deine Domains in der der Fritzbox und am Unbound deaktivert? Besonders der vom Unbound wird gerne mal vergessen.

Danke für den Hinweis.

 

wie kann ich es auf beiden deaktivieren?

Link to comment
15 minutes ago, Revan335 said:

Muss ich da jede einzelne Domain eintragen? sprich nextcloud.example.de oder nur example.de oder die vom NPM ?

Und wo trage ich was bei unbound ein? konnte dazu nichts finden.

Link to comment
  • 2 months later...

Hi zusammen,

beschäftige mich aktuell auch mit dem Thema. 

Hab einige Subdomains aktuell über NGINX Proxy Manager und meinem Hoster übers Inet veröffentlicht, vorallem auch wegen Bitwarden (Vaultwarden) https.

Da ich zukünftig auf meiner Domain eine Homepage erstellen möchte, könnte man über nen Subdomain Scanner die Subdomains ausfindig machen und hat durch nen Ping

meine IP Adresse (dadurch evtl. DDOS Attacken oder weiteren Blödsinn anstellen). 

 

Das was ich mir nun vorstelle ist: 

- Wireguard einrichten auf der PFSense

- Alle Clients wo drauf sollen, Wireguard einrichten

- Einen lokalen DNS einrichten (könnte ja NPM dafür nehmen)

- Eigene Zertifikate erstellen und diese im NPM auf den Host als SSL eintragen

 

So könnte man sich dann von außerhalb mit dem Wireguard einloggen und via DNS auf die Web Pages der verschiedenen Docker zugreifen (Jellyfin, piwigo usw....) vor allem aber auch via https auf den Vaultwarden.

Hab leider keine Lösung gefunden, via http bei Vaultwarden zugreifen zu können....

 

Hoffe ich bin nicht ganz auf dem falschen Dampfer 🙂 

Link to comment
1 hour ago, High-Tower said:

dadurch evtl. DDOS Attacken oder weiteren Blödsinn anstellen

Das Problem hast du immer, wenn du was erreichbar machst. Auch wenn du nur einen Port für den VPN aufmachst. Nur warum sollte jemand überhaupt seine Ressourcen für so einen Angriff verschwenden. 

Link to comment
On 9/11/2022 at 4:22 PM, mgutt said:

Das Problem hast du immer, wenn du was erreichbar machst. Auch wenn du nur einen Port für den VPN aufmachst. Nur warum sollte jemand überhaupt seine Ressourcen für so einen Angriff verschwenden. 


Das mit der eigenen Domain wäre eine Idee.

Würde das aber eigentlich gerne über Wireguard regeln (Zugriff über das Internet). Im eigenen Lan spielt das ja keine Rolle, wenn ein Gerät verbunden ist. 
Einzig Vaultwarden benötigt https, die anderen Geräte sind auch ohne SSL erreichbar, bzw. Funktionieren. 
 

Das ob, warum, usw.. ist das eine Glaubensfrage.

Ob man es braucht oder nicht, darf man sich als IT verrückter nicht stellen 😂

eher, wie bekommt man das hin…

 

Auch in dem Hinblick, wenn das Internet ausfällt und ich aber auf Vaultwarden Zugreifen muss, dann spätestens hab ich ein Problem. 

 

Edited by High-Tower
Link to comment

Ich hatte kurz einen Schreck bekommen. Richtig, was ist wennn das Netz ausfällt, und ich nicht mehr an meine Passwörter ran komme. Doch die Weboberfläche brauche ich dafür nicht zwingend. Es gibt da ja noch das Handy. Und wenn das Netz wirklich ausfällt. Wozu dann einen Passwortmanager über die Weboberfläche öffnen wollen?

Gesendet von meinem Pixel 6 Pro mit Tapatalk

Link to comment
  • 4 months later...
On 10/30/2021 at 3:44 PM, mgutt said:

Ich möchte möglichst alle Docker über https verschlüsseln. Über NPM kann ich jedem Docker eine Domain zuweisen und dann ein Let's Encrypt Zertifikat anfordern. Allerdings möchte ich nicht jeden Container öffentlich erreichbar machen. Daher kam ich auf die Idee nur lokale Zugriffe zu erlauben:

 

1.) Ich trage in NPM bei jedem Host, der nur lokal erreichbar sein soll, unter "Advanced" folgende Regel ein:

location / {
  # allow anyone in 192.168.178.0/24
  allow 192.168.178.0/24;
  # allow our public ipv4
  allow 169.254.1.1;
  # allow our public ipv6
  allow fe80::/10;
  # drop rest of the world
  deny all;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection $http_connection;
  proxy_http_version 1.1;
  # Proxy!
  include conf.d/include/proxy.conf;
}

 

2.) Nun wird das folgende Skript alle 5 Minuten ausgeführt, damit die Platzhalter IP 169.254.1.1 bzw fe80::/10 aus der zuvor genannten Konfiguration gegen meine öffentliche IP ersetzt wird:

#!/bin/bash

# make script race condition safe
if [[ -d "/tmp/${0//\//_}" ]] || ! mkdir "/tmp/${0//\//_}"; then exit 1; fi; trap 'rmdir "/tmp/${0//\//_}"' EXIT;

# get public ipv4
ipv4=$(getent ahostsv4 server.example.com | grep STREAM | head -n 1 | cut -d ' ' -f 1)
ipv6=$(ip -6 addr show dev br0 scope global | grep -oP "(?<=inet6 )[^/]+" | head -n 1 | cut -d ':' -f 1-4)"::/56"

# replace ipv4 in nginx config
sed -i "/# allow our public ipv4/!b;n;c\ \ allow $ipv4;" /mnt/user/appdata/npm/data/nginx/proxy_host/*.conf

# replace ipv6 in nginx config
sed -i "/# allow our public ipv6/!b;n;c\ \ allow $ipv6;" /mnt/user/appdata/npm/data/nginx/proxy_host/*.conf

# reload nginx configuration
docker exec -i npm nginx -s reload

 

Das ist wichtig, denn obwohl ich von lokal auf den Container zugreife, kommen meine Zugriffe "von außen" über die öffentliche IP-Adresse.

 

Ich komme nun über die Domain auf meinen Container (Falls ich den Proxy Host über NPM bearbeite, verliert er kurz die IP, aber nach 5 Minuten ist sie wieder erlaubt):

image.png.c97005237f35ea493a90898d233042c6.png

 

Haltet ihr das für die "einfachste" Lösung oder habt ihr eine bessere Idee wie man das umsetzen könnte?

 

 

Hi

 

ich komme hier leider nicht weiter und hoffe mal wieder auf deine Hilfe.

 

Deine Regel habe ich eingefügt, nur ist danach vaultwarden nicht erreichbar. Zum testen habe ich meine Public IP direkt in die Regel geschrieben, ansonsten alles so gelassen. Das Skript habe ich erstmal ignoriert, die IP habe ich ja wie gesagt eingetragen

 

VG

 

Edited by Daen
Link to comment

Guten Morgen/Mahlzeit

gerne:


 

daten.png

 

Damit kommt ein 403 Forbidden (openresty)

 

 

Wenn ich z.B. das deny all; entferne komme ich drauf, aber auch jeder andere, egal welche IP.

 

Ich habe auch das Gefühl, dass mir Ordner fehlen?! Wenn ich es richtig irgendwo gelesen habe, sollte im verzeichnis /etc/nginx/conf.d

eigentlich der ordner include sein oder nicht? Ist er aber nicht.
Dort sind nur zwei Dateien: 

 

• locations.conf

• server.conf

 

 

Edited by Daen
Link to comment

Sorry etwas arg verspätet. Meine Netzwerksituation sieht man auf dem Bild. Ich hatte im NGINX Proxy Manager mein Netz 192.168.178.0/24 auf allow. Der Fehler ist/war aber, dass ich das Netz des Routers bzw. die IP nicht auf auf allow gesetzt habe.

Nachdem ich das gemacht habe, ging alles.....

Rausgefunden habe ich das nur, weil ich den NGINX PM und vaultwarden im Docker auf einem Raspberry 4 installiert habe und diesen direkt an den Router..... war purer Zufall. Aber egal. Vielleicht gibt es ja noch einen ähnlichen und  gefährlichen Amateuer wie mich und mein Beitrag hilft diesem hier :)
 

netzwerk.png

Link to comment
  • 2 months later...

Versuche das Thema hier zu verstehen, klappt aber nicht so richtig.

 

Hier möchte man also den Zugriff von außen über Reverse Proxy nur auf ausgewählte Docker beschränken, richtig?

 

Geht das nicht einfach über den NPM, dort die jeweilig gewünschte Subdomain des Dockers ink. dem Port angeben und über Access List zusätzlich sichern? Also so wie hier z.B beschrieben: 

 (Das man evtl. die Unraid GUI nicht über Reverse Proxy zugänglich machen sollte, sollte eigentlich klar sein).

 

Ist an der Vorgehensweise im Video sicherheitstechnisch etwas als kritisch zu bezeichnen?

 

Edit: So wie ich das verstanden habe, soll hier auf alle Docker über die „einfachere/schönere“ custom-domain (anstelle der IP:PORT-Adresse) zugegriffen werden, aber trotzdem nur im lokalen Netzwerk, korrekt?

 

Hat das bis auf die einfachere Adresse sonst noch Vorteile?

 

 

 

Edited by Kazino43
Link to comment
30 minutes ago, Kazino43 said:

aber trotzdem nur im lokalen Netzwerk, korrekt?

Hat das bis auf die einfachere Adresse sonst noch Vorteile?

Es gibt Cornainer, die verlangen, dass man ausschließlich über https draufgeht. Und https bei einer lokalen IP, also ohne gültiges Zertifikat, quittiert der Browser mit einer Warnung/Fehlermeldung. Ist das dann auch noch ein Container, den du nur ausschließlich lokal nutzen willst, brauchst du eine Lösung.

 

Ansonsten gibt es bis auf leichter zu merkende Adressen keinen Mehrwert. 

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.