Unraid-Server für Portfreigabe absichern, als Newbie möglich oder lieber gleich lassen ?


anima

Recommended Posts

Guten Morgen, vielleicht ein etwas dramatischer Titel, aber ich google nun seit ein Paar Tagen und versuche mich etwas in das Thema Netzwerksicherheit etc. einzulesen und es ergeben sich mehr Fragezeichen als Antworten eigentlich bei raus kommen.

Anfangs ging es nur um Plex, da ich gerne Zugriff von außen auf meine Bibliothek hätte (geht ja ganz einfach einzurichten in Plex) nun musste ich dafür aber einen Port in der Fritz.Box öffnen und ab da fing ich an mir über das ganze etwas gedanken zu machen.

Nach der ersten Google/Youtube Session sind dann so dinge wie Reverse-Proxy aufgetaucht (dann geschaut was macht das ganze eigentlich),

oder nur per VPN in das Netzwerk (was aber grade bei einem TV schwierig wird LG WebOS), dann über Cloudflare Zero Trust und den Cloudflare Argo Tunnel (da blicke ich noch nicht ganz so durch).

Nun ist halt die Frage was wäre dem die idealste Lösung, oder soll ich es lieber gleich lassen 😅

 

als Bonusfrage

Auch wäre es interessant alle laufenden Programme statt per IP per domain aufzurufen, aber geht das überhaupt ohne sie von außen zugänglich zu machen ?

  • Like 1
Link to comment

Grundsätzlich gilt: Es gibt überall Sicherheitslücken und alles lässt sich hacken. Die Frage ist ob sich der Aufwand für den Angreifer lohnt die Hürden zu überwinden.

 

Und genau diese Hürden kann man erhöhen.

 

Mal von oben nach unten wie der Zugriff auf Plex am sichersten wäre:

  1. man holt sich einen smarten Switch und erstellt VLANs, also virtuelle getrennte Netze mit eigenen IP-Adressräumen. In ein VLAN käme Plex und die Clients und in ein anderes Unraid. So wäre gewährleistet, dass nur der Admin auf Unraid selbst käme. Plex selbst und die Clients könnten zwar immer noch gehackt werden, wenn sich einer der Clients zB beim Surfen einen Virus einfährt, aber der Angreifer wäre auf die Clients dieses VLANs beschränkt.
  2. dann der Klassiker wie es die meisten haben. Alle Clients und auch Plex sind im selben Heimnetzwerk. Wird irgendein Client gehackt zB durch einen Trojaner, könnte dieser versuchen alle Clients und natürlich auch Unraid selbst zu attackieren.
  3.  
  4. Jetzt wie in 1., nur mit Zugriff über das Internet. Hier würde man sich von unterwegs per VPN Tunnel mit dem Plex VLAN verbinden. Der Angreifer kann in dem Szenario erst mal nur den VPN Server attackieren, Plex und Clients erreicht man erst, wenn man diese Hürde überwunden hat. Der potentielle Schwachpunkt wäre also der VPN Server. Stärkster VPN Server wäre eine gehärtete Hardware wie ein VPN-fähiger Router. Solche Komponenten werden jeden Tag angegriffen und gelten als besonders gut abgesichert gegen Angriffe. Schwächster VPN Server wäre Unraid selbst, da es sich um einen klassischen "Linux PC" handelt mit einem relativ umfangreichen Linux Kernel. Auch hier gibt es natürlich die Möglichkeit, dass ein Client durch einen Angreifer kontrolliert wird. Der stärkste Tunnel nützt dann natürlich wenig. Das kann zB schon ein Smartphone sein, dass unbeaufsichtigt herumliegt und wo jemand mal kurz den WLAN Hotspot aktiviert und dann über einen Laptop das heimische Netz angreifen könnte.
  5. Jetzt wie in 2., also klassisches Heimnetzwerk mit dem man sich per VPN-Tunnel verbindet. Auch hier wäre der VPN-Server bzw die Clients der Schwachpunkt, aber nach einem erfolgreichen Angriff könnte man auch Unraid selbst attackieren.
  6.  
  7. Jetzt wie in 2. nur diesmal mit einer simplen Port-Freigabe im Router auf einen Reverse Proxy Container mit IP-Whitelist, der wiederum die Zugriffe auf den Plex Container weiterleitet. Jetzt kann jeder aus Land X und ohne Login direkt den Reverse Proxy Container und/oder den Plex Container versuchen zu attackieren und erst im nächsten Schritt die Clients oder Unraid. Der Reverse Proxy gilt dabei aber als kleine zusätzliche Hürde, da hier Nginx im Einsatz ist, was sich nicht so schnell von Angriffen beeindrucken lässt, wie der Webserver, der beim Plex Container selbst zum Einsatz kommt. In wie weit aber Nginx die Angriffe einfach durchleitet, kann natürlich keiner abschätzen.
  8. Wie in 7. aber ohne eine IP-Whitelist ein, die ausschließlich Zugriffe aus Land X erlaubt.
  9. Jetzt wie in 7. mit einer simplen Port-Freigabe im Router, die aber nun direkt auf den Plex Container verweist.
  10. Jetzt wie in 9., aber Plex ist nicht als Container installiert, sondern direkt auf dem Server selbst (geht nicht in Unraid, nur zur Vollständigkeit). Hier hätte der Angreifer also nach einer erfolgreichen Attacke den kompletten Server übernommen.

Wie du siehst ist der dritte und sechste Punkt leer. Das habe ich bewusst gemacht um aufzuzeigen, dass alles was nur lokal oder mit VPN Tunneln stattfindet, deutlich sicherer ist als die dann folgenden Varianten.

 

Natürlich gibt es dann noch so Kleinigkeiten um weitere Hürden zu realisieren wie zB ob der Plex Container schreibend auf deine Film-Sammlung zugreifen kann. Bei mir ist zB ausschließlich ein lesender Zugriff möglich. Auch die Frage ob der Plex Container Zugriff auf das Internet erhält. Ohne Internet könnte Plex zB keine Cover, Filmnamen usw runterladen. Macht natürlich keinen Sinn. Aber vielleicht sperrt man alles bis auf die Domains von Plex.... Ein Container ohne Internetzugriff ist jedenfalls sicherer, weil der Angreifer keine Software nachladen könnte.

 

Und nach dieser Fülle an Varianten muss man sich nun fragen: Lohnt der Aufwand? Was könnte ein Angreifer stehlen und lohnt sich das dann für diesen? Was wäre, wenn ich an einem externen Standort ein sicheres Backup aufbewahren würde, würde mich dann ein Angriff noch sonderlich stören?

 

Ich möchte zB Nextcloud öffentlich verfügbar machen und kann hier gar keinen VPN Tunnel einsetzen, da sonst Gäste nicht auf die Cloud zugreifen könnten, wenn ich mit ihnen Dateien teile. Nextcloud muss außerdem schreibenden Zugriff besitzen. Ich kann mich also gar nicht wirklich gegen Angriffe schützen, außer vielleicht über eine IP-Whitelist. Die einzige Sicherheit ist hier mein Backup am externen Standort und besonders sensible Daten nicht über Nextcloud verfügbar zu machen und/oder sie dort nur verschlüsselt hochzuladen (zB ein AES verschlüsseltes 7z Archiv). Die einzige Sicherheit ist in so einem Fall also mein Backup.

 

Ich handhabe es daher aktuell wie in 7. und verlasse mich im Härtefall auf mein Backup. Außerdem arbeite ich mich immer weiter in die Thematik ein wie man zusätzliche Hürden umsetzen könnte wie zB das Beispiel mit der Internetsperre für Plex. Wenn aber außer den Familienmitgliedern sonst keiner darauf zugreifen können soll, würde ich in jedem Fall einen VPN Tunnel empfehlen. Wer dann noch Geld und Zeit dafür hat, sollte mit VLANs arbeiten. Dann könnte man zB zu Hause auch getrennte Netze für potentiell unsichere Clients bereitstellen wie zB den Staubsauger-Roboter oder den Mähroboter, da so ein Equipment ja in der Regel nach x Jahren keine Updates mehr erhält.

 

Wie du siehst ein durchaus komplexes Thema, dass man nicht mal eben mit Ja oder Nein beantworten kann.

 

  • Like 1
  • Thanks 2
Link to comment
Quote

Nun ist halt die Frage was wäre dem die idealste Lösung, oder soll ich es lieber gleich lassen 😅

Ich weiß nicht wie gut diese Lösung ist, aber ich bin in den letzten Wochen auf die variante "load balancer" gestoßen, womit man anscheinend nicht nur seine IP adresse verbirgt, sondern auch eine art reverse Proxy hat und man gibt nur einen einzigen Port frei.
Kennt sich da wer mit aus, oder hat erfahrungen damit?

Meine Quelle war: https://www.youtube.com/watch?v=LlbTSfc4biw

Link to comment

@mgutt

Vielen Dank für die ausführliche Antwort, es ist tatsächlich noch komplexer als ich erwartet habe, aber auch der Grund für meine Frage, da ich nicht einfach drauf los Ports öffnen wollte. Da in meinem Fall ein VPN tunnel nicht klappen würde, auch wenn die Fritzbox es ja theoretisch anbieten würde, könnte der Client (ein LG TV) den Tunnel nicht aufbauen.

Ich denke das in meinem Fall wohl dann auch schritt 7 am einfachsten wäre. Da halt noch ggf. cloudflare mit rein, aber werde da erstmal noch etwas mehr recherchieren müssen.

 

nebenbei würde etwas gegen Caddy statt Nginx sprechen ?

 

@ViRtualRealitY

Danke dir, schaue ich mir mal an

Edited by anima
Link to comment
11 minutes ago, anima said:

Da in meinem Fall ein VPN tunnel nicht klappen würde, auch wenn die Fritzbox es ja theoretisch anbieten würde, könnte der Client (ein LG TV) den Tunnel nicht aufbauen.

Doch das geht. Die Fritz!Box am entfernten Standort baut zur anderen einen Tunnel auf. So werden beide Netze verbunden. Natürlich müssen beide dann ändere IP Adressräume haben. Zb 192.168.178.x und 192.168.177.x

 

Ich weiß nur gerade nicht ob die Multicast Pakete von Plex an die zweite Fritz!Box gesendet werden, damit die dortigen Clients von dem Plex Server erfahren. Müsste mal jemand von den Tunnel-Nutzern was zu sagen. @Ford Prefect du vielleicht?

  • Like 1
  • Thanks 1
Link to comment
4 hours ago, mgutt said:

Ich weiß nur gerade nicht ob die Multicast Pakete von Plex an die zweite Fritz!Box gesendet werden, damit die dortigen Clients von dem Plex Server erfahren. Müsste mal jemand von den Tunnel-Nutzern was zu sagen. @Ford Prefect du vielleicht?

sorry, nutze weder VPN mit ner Fritz, noch Plex.

Es wäre ein Thema, was der multid in der Fritte daraus macht. Im Zweifel findet mal es schnell raus wenn man es probiert.

Link to comment
15 hours ago, mgutt said:

Doch das geht. Die Fritz!Box am entfernten Standort baut zur anderen einen Tunnel auf. So werden beide Netze verbunden. Natürlich müssen beide dann ändere IP Adressräume haben. Zb 192.168.178.x und 192.168.177.x

Oh auch interessant, ich hab mal eben kurz bei Fritz geschaut, aber so wie ich das verstehe würde dann der gesamte Verkehr über mein Netzwerk laufen. Zwar gibt es wohl die möglichkeit es auf einen Lan-Anschluß zu beschränken, aber dann ist dieser im Heimnetz wohl nicht mehr erreichbar. 

 

Ich bin auch über ein Tutorial von Ibracorp gestolpert was wohl schritt 7 bis auf DynDNS aufgreift

 

und werde Nginx installieren und mir die Funktionen mal anschauen, so lange kein Port geöffnet wird sollte das ja passen.

  • Thanks 1
Link to comment
2 hours ago, anima said:

und werde Nginx installieren und mir die Funktionen mal anschauen, so lange kein Port geöffnet wird sollte das ja passen.

...wenn Du von Aussen auf Deine Ressourcen/Services im Heimnetz zugreifen willst musst Du immer, auf die eine oder andere Weise, einen (oder mehrere) Ports öffnen...da beisst die Maus keinen Faden ab.

Wenn Du auf eine aktive Portfreigabe verzichten willst, dann schaue Dir zerotier an.

 

  • Like 2
Link to comment
4 hours ago, anima said:

Zwar gibt es wohl die möglichkeit es auf einen Lan-Anschluß zu beschränken, aber dann ist dieser im Heimnetz wohl nicht mehr erreichbar.

Ich muss mich eindeutig @Ford Prefect anschließen, wenn du was aus der Ferne erreichbar machen willst dann musst du immer mindestens ein Port freigeben.

Wenn du zu viele bedenken deswegen hast dann lass es einfach wäre meine Antwort ohne dich irgendwie beleidigen zu willen oder so.

 

Heutzutage ist nichts mehr wirklich sicher, wenn jemand bei dir WIRKLICH rein will dann ist die wahrscheinlichkeit groß das er das auch schafft.

 

Von meiner Seite würde ich dir raten, wenn du irgendwas von außen erreichbar machst:

  • Halt die Sachen die du erreichbar machst immer am neuesten stand
  • Lass keine Ports offen im Router die du nicht brauchst
  • Verwende https anstatt von http
  • Verwende Reverse Proxy
  • Verwende 2FA (Stichwort Authelia)
  • Verwende Fail2Ban (Stichwort SWAG)
  • Like 2
Link to comment

@Ford Prefect

Ich glaube da hab ich mich etwas missverständlich ausgedrückt, es ging eher darum Nginx anzuschauen ohne jetzt schon einen Port dafür zu öffnen, Zerotier habe ich mir angeschaut, sieht klasse aus und werde ich wahrscheinlich für mich selber mal zum testen installieren, aber für Plex auf dem entfernten TV wüsste ich nicht wie ich das nutzen könnte.

 

@ich777

Danke für die Aufzählung, Authelia und Fail2Ban schaue ich mir mal an :)

 

nochmal in die Runde:

gibt es einen Anfänger freundlichen Reverse Proxy oder bin ich mit Nginx schon recht gut bedient ? Hatte jetzt noch Caddy und traefik.io auf dem Schirm

Link to comment
12 minutes ago, anima said:

gibt es einen Anfänger freundlichen Reverse Proxy oder bin ich mit Nginx schon recht gut bedient ?

 

Anwenderfreundlich wäre NPM, weil eine GUI verfügbar. (NgnixProxyManager)

 

Zusätzlich als Info zu den Aufzählungen von @ich777 -> bei SWAG hättest du auch die Möglichkeit mittels geolite2 IP Adressen nach Ländern zu blockieren. -> also zB DE und AT freigeben und alles andere blocken. 

  • Like 1
  • Thanks 2
Link to comment
2 minutes ago, anima said:

das ich dass per Cloudflare regeln lassen kann,

Was ich bei Cloudflare noch nicht weiß. Kann man überhaupt den gesamten Traffic eines Videostreams durch Cloudflare jagen? Auch die Frage wie man sich bei Cloudflare eigentlich als Nutzer entsperrt, wenn man alles auf Port 443 (https) umgestellt hat und über die App auf Plex zugreift. Cloudflare schaltet ja eine eigene Seite dazwischen um den Besucher bei Bedarf über Javascript und Captchas zu verifizieren.

Link to comment
Quote

Was ich bei Cloudflare noch nicht weiß. Kann man überhaupt den gesamten Traffic eines Videostreams durch Cloudflare jagen? Auch die Frage wie man sich bei Cloudflare eigentlich als Nutzer entsperrt, wenn man alles auf Port 443 (https) umgestellt hat und über die App auf Plex zugreift. Cloudflare schaltet ja eine eigene Seite dazwischen um den Besucher bei Bedarf über Javascript und Captchas zu verifizieren.

Was ich weiß ist, dass das anscheinend alles über eine API läuft. Und Subdomains.

Link to comment
2 hours ago, ViRtualRealitY said:

dass das anscheinend alles über eine API läuft.

Du meinst die API von Plex? Ja das meine ich ja damit. Die API ist aber nichts anderes als das Öffnen einer Website.

 

2 hours ago, ViRtualRealitY said:

Und Subdomains.

Das passiert nur, wenn man keine eigene Domain verwendet. Dann geht es über "pu-bl-ic-ip.plex.direct", aber das war nicht meine Frage. Ich meine, wenn man seine eigene Domain verwendet. Dann geht alles über die (getestet mit einem Laptop, der über einen WLAN Hotspot meines Smartphones online war, lokal nutzt Plex das "lo-cal-ip.plex.direct", so dass nicht transcodiert wird):

 

814391708_screenshotplexnetzwerkmonitorbeizugriffvonauen.thumb.png.a27a8d8b366c18db280f0d56a1dde699.png

 

Und die könnte dann zB über Cloudflare geroutet werden.

 

Bei mir läuft sogar alles über Port 443. Also der ganze normale https-Standardport und nicht 32400. Doch was macht dann Cloudflare daraus? Ich mein das ist eine ganze Menge Traffic. Die werden das doch nicht kostenlos durch ihren Proxy durchjagen oder doch?

 

Falls doch würde ich das auch in Betracht ziehen, denn damit hat der Angreifer keine Chance meine IP herauszufinden.

Link to comment
Quote

Doch was macht dann Cloudflare daraus? Ich mein das ist eine ganze Menge Traffic. Die werden das doch nicht kostenlos durch ihren Proxy durchjagen oder doch?

Auf der Website habe sie alles gut beschrieben. Es ist ein sehr guter Kostenloser ddos schutz und verdeckt die IP adresse. 
Ich bin auch noch am suchen wie ich das genau mache bei mir zuhause, da ich über die Videos von dem Youtuber NetworkChuck gestolpert bin und er hatte in ein, zwei Videos gezeigt wie man das macht.
 

Quote

Du meinst die API von Plex? Ja das meine ich ja damit. Die API ist aber nichts anderes als das Öffnen einer Website.

Das hatte ich auch aus einem Video von dem YouTuber. Lief hauptsächlich alles unter dem Load Balancer Kemp und Cloudflare über eine Domain (CNAME).

Screenshot 2021-07-19 121725.png

Link to comment

@mgutt

Ich habe das gefunden, scheinbar muss man dann für plex ne eigene subdomain anlegen diese in CF eintragen und für diese dann eine Ausnahmeregel für den Cache machen. Aber alles verstehe ich da auch noch nicht genau, denn es wird empfohlen dann über Letsencrypt das Zertifikat zu beziehen, wenn ich es doch auch gut über CF nutzen könnte (Gefährliches Halbwissen hier :D )

Link to comment
Quote

scheinbar muss man dann für plex ne eigene subdomain anlegen

Ja es gibt da einige Wege die man gehen kann 😅.
Soweit ich das kenne und bei mir habe, kann man da entweder direkt über die domain über cloudflare gehen mit und oder swag.
Aber bei Plex habe ich z.B. nur den einen Port frei und alles andere macht plex selber der Server verbindet sich ja mit deinem account, also kannst du auch von unterwegs einfach auf die plex website gehen dich einloggen und dann auf Launch drücken, dann solltest du direkt in Plex sein.

Link to comment
1 hour ago, ViRtualRealitY said:

und verdeckt die IP adresse. 

Genau das ist keine Selbstverständlichkeit.

 

Cloudflare unterstützt nur ganz bestimmte Ports, damit man eben nicht jeden Dienst durch den Cloudflare Proxy jagen kann (und 32400 ist nicht dabei):

https://support.cloudflare.com/hc/de/articles/200169156-Netzwerkports-identifizieren-die-mit-dem-Cloudflare-Proxy-kompatibel-sind

 

Und noch mal: Cloudflare ist ausschließlich für Websites gedacht und der Aufruf der API durch die App ist ein Website-Aufruf, ABER die App kann kein Javascript ausführen oder Captchas lösen, daher glaube ich, dass das gar nicht geht. Also manchmal schon, aber irgendwann macht Cloudflare eine Verifizierung und dann war es das mit der Erreichbarkeit des Plex Servers durch die App. So zumindest meine Vermutung.

 

Aber ich habe die Lösung bereits gefunden. Es ist schlicht verboten Cloudflare dafür zu nutzen und die ersetzen die Plex Video-Chunks einfach gegen Unsinn:

https://support.cloudflare.com/hc/de/articles/360057976851-Videos-mit-Cloudflare-bereitstellen#h_17ENJA5McX8FiFmwFhbacY

Quote

Wenn Sie einen Free-, Pro- oder Business-Tarif abonnieren und Videos oder eine unverhältnismäßige Menge an Nicht-HTML-Inhalten bereitstellen (wie Software-Binärdateien oder große Mengen an Bildern), was gegen Abschnitt 2.8 der Self-Service-Abonnementvereinbarung verstößt, kann Cloudflare von Ihren Inhalten zu Ersatzvideos und Ersatzbildern weiterleiten.

 

Hätte mich auch gewundert, wenn man Terrabytes an Videos durchjagen kann.

 

Link to comment
40 minutes ago, anima said:

Ich habe das gefunden

Auch da steht unter "Update February 1, 2020", dass das laut Cloudflare TOS mittlerweile verboten ist.

 

Cloudflare könnt ihr also vergessen. Die haben jetzt ein separates Produkt namens "Stream" dafür. Das ist aber inkompatibel zu Plex, da die Videos erstmal bei Cloudflare hochgeladen werden müssen und das ist auch sauteuer.

Link to comment
3 hours ago, mgutt said:

Auch da steht unter "Update February 1, 2020", dass das laut Cloudflare TOS mittlerweile verboten ist.

 

Das hatte ich gesehen, aber tatsächlich habe ich noch Post auf reddit gefunden die Plex weiterhin im Free Tier nutzen nur halt für diese subdomain dann den Cache deaktivieren (bei aktivem schreitet sonst Cloudflare ein), aber von wann der Post war kann ich dir leider grade nicht sagen :/

bei weiteren Suchen bin ich auch noch auf das gestoßen

Link to comment
On 7/18/2021 at 9:45 AM, anima said:

aber so wie ich das verstehe würde dann der gesamte Verkehr über mein Netzwerk laufen.

Das kommt denke ich darauf an. Bei zwei verschiedenen IP Adressbereichen und damit zwei DHCP Servern und Gateways, glaube ich nicht, dass der Internettraffic durch den Tunnel in den anderen Adressbereich geht.

 

Frag das doch mal hier:

https://www.ip-phone-forum.de/forums/avm.361/

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.