Docker möglichst sicher nach Außen öffnen - Orientierungshilfe


Recommended Posts

Hallo,

 

Das Thema kommt bestimmt immer wieder mal auf, aber es tut sich ja auch was bei den Möglichkeiten. Ich habe mich jetzt einige Zeit mit der Frage beschäftigt, wie ich einie Docker nach Außen hin öffnen kann und dabei möglichst wenig Risiko eingehe. Dass ganz ohne Risiko nicht geht, ist mir klar.

Da ich aber nicht vom Fach bin und momentan den Wald vor lauter Bäumen nicht mehr sehe, wollte ich versuchen hier einige Meinungen zu verschiedenen Möglichkeiten zu hören, von Menschen die mehr Expertise haben. Das würde mir helfen die verschiedenen Möglichkeiten besser einzuordnen.

 

Mit öffnen meine ich aber tatsächlich über eine Domain von außen erreichbar, also keine VPN-Lösung bei der der Client erst entsprechende Software installieren muss.

 

Soweit:

  1. Klassische Möglichkeit scheint mir das Port-Forwarding am eigenen Router + Weiterleitung auf Reverse Proxy mit Fail2Ban usw zu sein. Bei einem typischen Setup mit privatem Internetanschluss dann über DynDNS (DuckDNS) und Domain die darauf weist.
    • Das scheint mir eine Möglichkeit zu sein, bei der ich alle Sicherheitsaspekte permanent selbst in der Hand habe. Was mir sympathisch ist, aber mich auch etwas zu viel fordert. Vor allem scheint es mir so, dass das ein Setup ist, bei dem immer wieder viel Zeit in die Wartung fließt.
  2. Zweite Möglichkeit wäre ein Cloudflare Tunnel, der auf einen Reverse Proxy Docker verweist, der dann an den entsprechenden Docker weiterleitet. Verstehe ich das richtig, dass in diesem Fall die Verschlüsselung vom Reverse Proxy bis zum Client durchgehend ist? Also eine Lücke nur noch zwischen Reverse Proxy und dem eigentlichen Docker besteht?
    • Cloudflare allein öffnet mir ja wohl den ganzen Datenverkehr Cloudflare gegenüber, was mir schon vom Prinzip her nicht gefällt, auch wenn ich Cloudflare nichts unterstellen will.
  3. Ich zahle für einen VPS Server (z.B. IONOS für 1€/Monat) und installiere darauf Reverse Proxy + Tailscale. Dann weist meine Domain auf den Reverse Proxy auf dem VPS und von dort wird der Verkehr durch den Tailscale Tunnel zu meinem Server und durch die Porteinschränkung auf den entsprechenden Docker gelenkt.
    • Was mir daran nicht gefällt (In meinem beschränkten Verständnis) ist, dass ich dazu das Tailscale Plugin nutzen muss, da ich die Route advertisen muss und das der Docker wohl nicht macht. Damit ist es schwierig den Tailscale Zugang durch Docker Network zu isolieren. Heißt doch, theoretisch expose ich den ganzen host.

 

Ein Problem das ich bei allen Möglichkeiten habe ist, dass ich gerne den Docker den ich beispielsweise exposen will (z.B. Wizarr) durch ein custom network isolieren möchte. Ich brauche aber gleichzeitig, dass dieser mit dem Plex Docker kommunizieren kann, der wiederum im host network läuft und das scheinbar auch braucht um das Plexeigene Remote-System nutzen zu können und gleichzeitig im lokalen Heimnetz direct streaming zu machen. Oder irre ich mich da?

 

Eigentlich wäre ich auch damit einverstanden Plex selbst nach außen hin zu öffnen, weil ich immer wieder mit dem Umstieg auf Jellyfin liebäugele (Ich bevorzuge einfach den Offenen Ansatz). In diesem Fall scheint Cloudflare Tunnel dann auszuscheiden, wegen der hohen Datenmengen.

 

Achja: Ich möchte nicht alle Docker die ich aus der Ferne nutze exposen. Für viele nutze ich auch gerne Wireguard.

 

Ich bin gespannt, ob es dazu Stimmen gibt!

 

Vielen Dank und einen schönen Tag zusammen

Edited by vonwanja
Link to comment
2 hours ago, vonwanja said:

der wiederum im host network läuft und das scheinbar auch braucht um das Plexeigene Remote-System nutzen zu können und gleichzeitig im lokalen Heimnetz direct streaming zu machen. Oder irre ich mich da?

ja, da irrst du dich

 

2 hours ago, vonwanja said:

Ich bin gespannt, ob es dazu Stimmen gibt!

 

10 Antworten, 10 Meinungen ...

 

vielleicht um den direkten RP Weg überhaupt offen zu halten, du hast einen Dual Stack Anschluss mit öffentlicher ipv4,

wenn ja, dann hast du alle Optionen ...

 

Anmerkungen meinerseits

 

1/ klassisch RP, mein Weg, direkte Verbindung ist meiner Meinung nach immer die beste Lösung, einlesen, einarbeiten, dann ist das auch sicher genug für alle Privatuser ...

 

2/ Cloudflare Tunnel, ist ne Alternative, aber die "free" Variante schließt streaming aus ... sollte man wissen, bezahlt sicher ne gute Lösung, für mich persönlich kein echter Mehrwert außer dem bissel ddos Schutz inkl. ... ein sauber konfigurierter RP inkl. f2b, geo block, ... reicht mMn aus.

 

3/ Notfall Plan, wenn kein dual stack anliegt die beste Alternative, nutze ich auch als Fallback (LTE) falls mein Anschluss mal aussetzt, geht ja über diverse Wege, VPN (Bsp. wg9, SSH, FRP, Tailscale, ... was auch immer man mag.

 

prüf ob 1/ überhaupt geht, wenn ja hast du immer noch die Wahl, wenn Nein wird es eh klarer ;)

  • Like 1
Link to comment
3 hours ago, vonwanja said:

Da ich aber nicht vom Fach bin und momentan den Wald vor lauter Bäumen nicht mehr sehe, wollte ich versuchen hier einige Meinungen zu verschiedenen Möglichkeiten zu hören, von Menschen die mehr Expertise haben. Das würde mir helfen die verschiedenen Möglichkeiten besser einzuordnen.

Du musst dich auf jeden Fall für einen "Weg" entscheiden, erst dann kannst du diesen best möglich absicher...
Ich bin auch kein freund von externen Diensten, egal ob Cloudflare oder sonstige Remote Proxy.
Vor allem wenn es um den privaten zweck geht. Wenn es jetzt um das veröffentlichen für Weltweit geht, ist das private Hosten des Servers sowieso die flasche Wahl, also geht es hier um den Privaten zweck und das teilen mit Familie/Freunde/eine kleine Community und diesen Weg kann man natürlich absichern.

Um dir einen kleinen Leitfaden anzubieten:

1. Firewall
Alles beginnt mit einer guten Firewall...
Gute Hardware-Firewall kann schnell in die hohen Kosten gehen deshalb beziehe ich mich lieber auf Software-Firewall.
Ganz oben an der Spitze liegt hier OpnSense / pfSense, möglich wäre natürlich auch ein Flashen mit der richtigen Hardware von OpenWRT.
Wichtig ist nur was die Firewall an möglichkeiten bietet.
Aufgabe: Über vernünfigte Firewall Informieren, besorgen, einrichten. Ich persönlich verwende OpnSense und nutze nichts anderes mehr.

2. Netzwerk

Das segmentieren von Netzwerken ist quasi Pflicht. Egal ob VLAN oder Physische Trennung. Wähle entweder Virtuelle oder Physische Trennung. Jenachdem was deine Hardware hergibt. Ich bevorzuge eine Kombination aus beiden, ein VLAN Switch und an Unraid eine physische Trennung durch 2 Netzwerkanschlüsse (oder mehr) und Performance zu bieten.
Dienste die aus dem Internet aus erreichbar sind, befinden sich in einem eigenen Netzwerk.
Aufgabe: Erstelle 2 Netzwerke mit eigenen IP Bereich.
1. Netzwerk: LAN/Home
2. Netzwerk: DMZ/Server
Jetzt muss das Netzwerk noch konfiguriert werden. Das sollte einfach sein den wichtig ist nur eines:
LAN hat vollen zugriff auf DMZ.
DMZ sind alle Ports gesperrt nach LAN.

3. Unraid

Wie schon erwähnt was gibt die Hardware her? VLAN oder Physich. Im primzip beides gleich. Wichtig ist jetzt zuerst die Netzwerkkonfiguration von Unraid:
Aufgaben:
1. Netzwerkeinstellungen > Schnitstellenregeln richtig wählen. (Wenn VLAN nicht gewählt wird)
eth0 = MAC Adresse von LAN
eth1 = MAC Adresse von DMZ
Neustarten von Unraid nicht vergessen.
2. Ganz WICHTIG ist jetzt das erste Netzwerk ist LAN, das zweite Netzwerk ist DMZ! DMZ MUSS zusätzlich die Netzwerkbrückung aktiviert werden (br1).

3. Unter Schnittstellen Extras wird br1 (DMZ Bridge) ausgeschlossen. Damit kein Unraid zugriff möglich ist für die DMZ Dienste.

 

4. Proxy mit LetsEncrypt SSL

Jetzt wird ein Proxy installiert und zwar als custom Bridge im br1 Netzwerk. Wähle eine schöne IP

Beliebt ist hier der Nginx Proxy Manager mit WebGUI und SSL.

Erstelle eine Portfreigabe auf deiner Firewall mit 80+443 die auf deine Nginx custom IP zeigt.

Nicht vergessen in Nginx Proxy Manager unter Settings die Default Site auf "No Response" stellen.
PS: Nicht vergessen in deinem DNS Server die IP für deine Domain auf die Proxy IP umschreiben.

 

5. Zusatz Dienste

Hier wird einen bewust das die meisten Firewalls sehr begrenz sind und kaum Sicherheit bieten für zusätzliche absicherungen...
Die möglichkeiten sind hier endlos aber ein kleiner Leitfaden der auf jeder OpnSense / pfSense funktioniert:
1. IP Table Blocker aktivieren
Im Internet findet man Listen von gefährlichen IP-Adressen die das WWW "snifen" und nach offnen Ports schnüffeln oder sonstige unseriöse Angriffe auf offene Systeme vornehmen. Bekannt hier sind Listen von spamhaus.org oder abuse.ch. Es gibt viele weitere Listen.
Dieser Blocker sollte an deiner Firewall auf Nr. 1 stehen über der Portfreigabe von 80/443. Dann ist für diese Snifer Netzwerke auch die Ports gesperrt.
2. GeoIP Blocker einrichten
Mit einer kostenlosen API von maxmind.com bekommst du die möglichkeit GeoIP Blocking zu betreiben.
Hier kannst du eine Alias erstellen mit Länder die generell von deiner Firewall gesperrt werden soll.
Zb zu empfehlen alle Länder außer Europa / USA. Damit wird jede Anfrage aus Russland, China, und jeden anderen gesperrten Land sowieso zu 100% an deiner Firewall blockiert trotz geöffneter Ports.
HINWEIS: Wenn du in den Urlaub fährst. zb nach Thailand, musst du zuvor das Land an deiner Firewall freigeben sonst hast du keinen Zugriff auf deine Firewall/Dienste.
Diese Regel kommt auf Nr. 2 ebenfall trotzdem ÜBER der Portfreigabe von 80+443.
Wenn du dir nicht sicher bist was du sperren sollst und was nicht, nimm die üblichen verdächtigen und sperr Russland, Afrika, Asien.
Warum ganz Europa und USA freigegeben bleibt hat den einfachen Grund da oft einige Dienste / Internetseiten evtl. auch für dich dann nicht mehr Aufrufbar sind. Wenn du diese 2 offen lässt, habe ich bisher nie einschrönkungen erlebt, außer du treibst dich in sehr "exotischen" Teilen des Internets herum.
3. CrowdSec einrichten

Am besten direkt auf der OpnSense installieren die für verdächtige IPs eine direkte Firewall Sperre zu erwirken.
CrowdSec ist ein trolles Projekt und lässt sich einfach als App auf der Firewall installieren, wieder etwas das unter üblichen Firewall-Routern nicht möglich ist...

Also jetzt sind wir schon an einem Punkt der recht einfach um zu setzten ist und man ultimativen Schutz vor Hacker und WWW Snifer hat.
Für komische fremde Lände erscheinst du sowieso offline als würde es dich nicht existieren.
Das ganze ohne VPN / Cloudflare Tunnel.
Desweiteren gibt es Software für Einbruchserkennung etc die zb OpnSense ebenfalls zu verfügung stellt.
Weiteres gebe es die möglichkeit für innere Sicherheit einen DNS-Blocker zu installieren wie AdGuard (Ebenfalls direkt als OpnSense App) / PiHole und das interne Tracking und versenden von Telemetriedaten zu verhindern.
Bis zu diesen Punkt schafft das jeder der zumindest eine OpnSense / pfSense im einsatz hat ganz easy wenn man nur ein bisschen IT/Netzwerk Expertise hat.
Jetzt könnte man noch an die Hardcore abhärtung weiter gehen. Das werde ich aber jetzt hier nicht weiter erleutern da die möglichkeiten endlos sind.
Erwähnen könnte man hier noch den einsatz von Fail2Ban, erkennung von DDoS und Brutforce, absicherung von WLAN gegen lokale Angriffe etc.

Persönliche empfehlung sind die 3. Punkte mit IP-Tabel + GeoIP + CrowdSec. Die installation der drei Punkte dauert 5 Minuten und laufen ab dann vollständig automatisch für immer auf deiner Firewall.

Als kleiner Tipp wenn du dir keine teuere Hardware für OpnSense zulegen möchtest gibt es noch den TP-Link ER605 v2 (WICHTIG ist hier "v2" zu bekommen)
Darauf lässt sich OpenWRT installieren als Firewall. Als reine "Firewall" bzw Router ist der richtig gut.
Alternativ wenn du Firewall + Wlan in einem benötigst, musst du dir einen geeigneten Router in der OpenWRT liste aussuchen. Wichtig ist hier der RAM und FLASH Speicher, nur wenn der Speicher groß genug ist lässt sich auf einen kleinen Router auch CrowdSec installieren.
Für OpnSense im Einsatz als Router benötigst du natürlich ein WLAN-Router im AccessPoint Modus.

  • Like 2
Link to comment
1 hour ago, vonwanja said:

Spricht etwas erstmal Wizarr über Cloudflare erreichbar zu machen, bis mein Leben mehr Zeit hergibt für eine eigene Firewall und das Anlesen des nötigen Wissens um dann Lösung 1 umzusetzen?

Du kannst erstmal auch nur mit NginxProxyManager und SSL starten.. Anfangs hatte ich auch nur einen Proxy.

 

Aber du wolltest doch eine Orientierungshilfe wie man sein Netzwerk absichert 😉

Link to comment

Ja das will ich auch! Ich war vorhin schon am Suchen nach diversen Firewall tauglichen Geräten. Dabei habe ich gemerkt, dass das erstmal einiges an Beschäftigung braucht um das sinnvoll zu machen. Allerdings rennt mir die Zeit davon, weil ich die nächsten Tage zum zweiten Mal Vater werde ...

 

Ich denke das Thema ist aber sowieso interessant, weil da draußen eine Menge an Tips rum geistern und viel mit wenig Verständnis gemacht wird. Außerdem sind einige Anleitungen schon viele Jahre alt. Für jemanden wie mich, der das nicht alles selbst beurteilen kann, ist eine Einordnung und auch eine Diskussion über die verschiedenen Möglichkeiten auf jeden Fall sehr hilfreich.

 

Link to comment
5 hours ago, vonwanja said:

Ja das will ich auch! Ich war vorhin schon am Suchen nach diversen Firewall tauglichen Geräten. Dabei habe ich gemerkt, dass das erstmal einiges an Beschäftigung braucht um das sinnvoll zu machen. Allerdings rennt mir die Zeit davon, weil ich die nächsten Tage zum zweiten Mal Vater werde ...

Dann ist klar die Priorität anders zu setzten und ich sag auf jeden Fall schon mal herzlichen glückwunsch 😉

 

5 hours ago, vonwanja said:

Ich denke das Thema ist aber sowieso interessant, weil da draußen eine Menge an Tips rum geistern und viel mit wenig Verständnis gemacht wird. Außerdem sind einige Anleitungen schon viele Jahre alt.

Da muss ich dir Recht geben... Ich musste mir das Thema auch 2-3 Jahre zusammen forschen.
Es gibt nur einzeln Tipps wie richte ich was ein.. Da muss man aber auch erstmal wissen das es diese Funktio/Software überhaupt gibt.
Komplette Anleitungen von A bis Z für eine vollständig gesicherte Firewall gibt es nicht oder diese ist veraltet.

Deshalb ist meine Anleitung für dich aus dem vorherigen Post ein gutes komplett Paket, mehr musst du nicht machen, natürlich habe ich nur geschrieben WAS zu tun ist und nicht WIE es installiert wird, ich weiß ja auch noch nicht welche Firewall am Ende zum Einsatz kommen wird 😉
 

5 hours ago, vonwanja said:

Ich war vorhin schon am Suchen nach diversen Firewall tauglichen Geräten.

Das ist auch einfach (Wenn man weiß was und wo haha)
Zb Auf Amazon such nach "mini pc firewall"
Kommt schon eine große Auswahl. Natürlich gibt es diese auch auf Alibaba & co.

Wichtige Punkte zu beachten für die Hardware:
-6 Lan Anschlüsse müssen es nicht sein aber zumidnest 4 sollten es sein auch wenn für VLAN 2 Theoretisch reichen würden
Hier ist wieder eine physische Trennung vorteilhafter.
-Der verbaute LAN Chip sollte von Intel sein nicht von Realtek
-Einfach nur eine Stromsparende CPU aussuchen. Keine "i3, i5" etc
-Arbeitssspeicher wird auf einer Firewall nie mehr als 2GB und Festplatte reicht ebenfalls ab 30GB
(Aktuell verbraucht eine OpnSense 800MB Ram und 4,5GB Festplatte, aber mit mehreren Netzwerken und etwas größerer Umfang als bei dir)

Preislich findet man diese bei ca 150€ mit 4x LAN Anschluss mit Intel Celeron CPU
Gut dabei bist du mit einer Mini-PC Firewall mit
- Intel Celeron N5100
- Intel Celeron J4125
- Intel Celeron N4505
CPU. mit 4x RJ45 Intel Anschluss bei ca 150€ für eine dicke Firewall.
Ich selbst sitze noch auf einer alten Pentium G4400 der weniger Leistung bietet (und mehr Strom frisst)
In der Regel läuft selbst meine Firewall auf ~0 bis 2% CPU Last. In der Regel geht die CPU nur nach oben bei Internet-Download last oder VPN verwendung.

Die Installation von OpnSense ist denkbar einfach:
Ein USB Stick mit der Installations ISO auf der Firewall Booten und die installation ist in 10 Minuten durch. Danach öffnet sich im Browser auch ein praktischer Wizard der dir das erst Setup macht mit der Frage was ist WAN und LAN Port, und dann ist die basis der Firewall bereits fertig.
OpnSense ist so ausgelegt das im Default das System komplett abgesichert ist und von außen nichts rein kommt. Man muss also mal nichts tun.
Also meine Empfehlung zum aktuellen Stand ist eine Mini-PC Firewall mit J4125 / N5100 um 150€ bzw ~180€ mit 4GB RAM + 128GB SSD
Wenn es dir das Geld Wert ist, bekommst du die beste Firewall die man sich nur wünschen kann, für die es quasi kein Limit gibt.

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.