Synology Docker nutzen oder besser Docker in einer VM verwenden?

Hallo Zusammen,
mich würde Euere Meinung interessieren zu Docker direkt in Synology DSM oder Docker in einer Ubuntu virtuelle Maschine die widerum auf einer Synology gehostet ist :slight_smile:

Also mein aktuelles Setup ist wie folgt. …Auf einer relativ potenten Synology NAS mit aktivierter Firewall betreibe ich ein paar Docker Container z.B. einen Nginx Reverse Proxy oder Bitwarden Selfhost. In einer virtuellen Maschine u.a. Homeassistent oder auch ein Ubuntu 22.04.

Vielleicht sind meine Gedanken auch völlig wirr aber daher hätte mich ja mal andere Meinungen interessiert.

Ich überlege ob es im Prinzip ein wenig sicher wäre wenn ich die Docker Sachen nicht direkt auf der Synology verwende sondern in meiner Ubuntu VM, die allerdings am Ende ja auch auf der Synology läuft.
Wäre es dann nicht nochmal eine Schicht bzw. Hürde mehr wenn z.B. ein Angreifer es schafft aus dem Docker Container „auszubrechen“?
Aktuell wäre er sofort auf der NAS unterwegs… Wenn Docker in der VM läuft wäre er erstmal „nur“ auf der VM…
Wäre das jetzt ein kleines Plus mehr an Sicherheit oder spielt es keine Rolle?

Die Frage wäre ja auch evtl. Synology Docker vs. Ubuntu Docker? Gibts da evtl. auch Unterschiede wie die es jeweils implementiert haben? Aus dem Bauch raus würde mir glaub ein Docker unter einem Ubuntu Linux mehr gefallen wie unter dem Synology DSM Linux wo evtl. auch nicht soviel bekannt ist wie es der Hersteller umsetzt?

Was denkt ihr so darüber und oder ist es am Ende einfach egal :slight_smile:

Viele Grüße
mabox

Die Ubuntu-VM auf deinem NAS bietet durchaus eine zusätzliche Hürde. Wenn allerdings jemand aus gut/sicher konfigurierten Containern ausbrechen kann, dann ist die Ubuntu-VM nicht unüberwindbar.

Es gibt aber auch einen anderen Vorteil, Docker in einer Ubuntu-VM und nicht direkt auf dem NAS auszuführen: Meiner Erfahrung nach bekommen NAS-Systeme Updates etwas verzögert, d.h. während andere Distributionen schon längst eine neue Paketversion bereitstellen, hinkt der NAS-Hersteller teils um Wochen oder Monate hinterher.

Ob Synology mit dem „Container Manager“ eine Art Docker-Neuinterpretation macht weiß ich nicht, aber das letzte Release ist laut dieser Seite vom 19.09.2023 :thinking:

Ich persönlich würde allerdings kein Ubuntu als Basis verwenden, sondern ein möglichst sehr schlankes z.B. Alpine Linux (Weniger Code = weniger potenzielle Fehlerquellen). Hängt aber auch von deinen Linux-Kenntnissen ab.

Hallo nobody,
danke für Deine Antwort. Also ich habe mich mittlerweile entschieden zumindest erstmal meinen Nginxproxymanager in einer VM laufen zu lassen. U.a. genau aus dem Grund den Du auch genannt hatttest, Updates. Wenn ich schau dann hingt die NAS doch etwas hinterher was Updates angeht.
Ich habe mich jetzt allerdings für Arch Linux entschieden. Damit kenne ich mich ziemlich gut aus da dies auch mein Haupt OS ist.
Ich habe es minimal installiert, nur das allernötigste so das am Ende die Paketanzahl um die 180 ist. Zum Vergleich hat ein Ubuntu ja über 2000 standardmäßig. Mit Arch Linux bin ich jetzt auch top aktuell was Docker angeht und auch generell hab ich da immer die neuesten Updates, das sollte also passen.
Aktuell bin ich dabei Arch Linux noch zu härten so gut es geht.

Es ist also so das vom Router (OpenWRT) aus und somit vom Internet jetzt direkt nur mein Nginxproxymanager auf der VM erreichbar ist. Von dort aus leitet aktuell der Proxy weiter zur NAS und zum NAS-Docker wo aktuell noch eine Handvoll andere Container laufen. Z.B. Bitwarden selfhost, Firefox sync und zum rumspielen eine Nextcloud…

Im Prinzip hab ich jetzt aber doch was die Dockers auf der NAS angeht nichts gewonnen richtig? Weil ich mich am Ende ja dennoch im Container auf der NAS befinde oder?
Müsste ich die Container auch noch in die VM verschieben oder hab ich schon durch den Nginxproxymanager auf der VM der weiterleitet einen Mehrgewinn an Sicherheit?

Was mich auch irritiert ist Deine Aussage das es anscheinend nicht so schwierig ist aus einer VM auszubrechen? Würde ja bedeuten da ich die VM wiederum auch auf der NAS betreibe das Ganze hier gar nichts bringt?

Arch klingt auch gut. Hab ich zwar nie verwendet, aber im Grunde ist es ja immer besser, wenn man etwas nutzt was man bereits kennt.

Kommt drauf an. Man muss sowohl alles getrennt als auch im Kontext sehen. Bei den Containern muss man beispielsweise drauf achten, unter welchem User die Anwendung selbst läuft. In manchen Dockerfiles wird kein separater User erstellt, sodass dann z.B. Nginx als Root gestartet wird. Das hat dann potenzial auch auf dem Host Root zu werden. Läuft Docker auf dem NAS eigentlich rootless? Root im Container ist in der Regel auch Root auf dem Host-System. Wenn Docker auf dem Host unter einem separaten User läuft, wäre das schon ein großer Vorteil für das Host-System.

Mit dem Reverse Proxy hat man eine zusätzliche Schicht, indem der direkte Zugriff auf die Container nicht möglich ist. Der Reverse Proxy ist dann der einzige Zugangspunkt und könnte mit TLS-Terminierung auch potenziell schädliche Anfragen filtern, bevor die Container erreicht werden oder beispielsweise auf DDoS Angriffe durch Rate-Limiting und IP-basierten Blocklisten reagieren.

Könnte man machen. Ich würde ein NAS immer so simpel wie möglich halten. Das hätte auch den Charme, dass man bei Defekt oder Austausch relativ einfach nur die VM umziehen müsste.

Naja, einfach ist es nicht. Aus einem gut konfigurierten Container auszubrechen kann schon eine Herausforderung werden. Genauso schwierig ist es aber auch anschließend aus der VM auszubrechen. Einfach ist beides nicht, aber unmöglich ist es auch nicht. Es ist immer nur eine Frage von Zeit und Ressourcen, die jemand aufbringen kann.

Insgesamt könnte man das noch weiter aufbohren und beispielsweise das NAS in eine DMZ packen. Dort als Einstiegspunkt dann beispielsweise eine Hardware-Firewall mit IPS. Möglichkeiten gibt es viele, aber irgendwann wird man einen Punkt erreichen, bei dem die Landschaft vielleicht zu komplex geworden ist und man Fehler dann nur noch schwer findet.

Top, vielen Dank für Deine Zeit und die ausführlichen Antworten…

Kommt drauf an. Man muss sowohl alles getrennt als auch im Kontext sehen. Bei den Containern muss man beispielsweise drauf achten, unter welchem User die Anwendung selbst läuft. In manchen Dockerfiles wird kein separater User erstellt, sodass dann z.B. Nginx als Root gestartet wird. Das hat dann potenzial auch auf dem Host Root zu werden. Läuft Docker auf dem NAS eigentlich rootless? Root im Container ist in der Regel auch Root auf dem Host-System. Wenn Docker auf dem Host unter einem separaten User läuft, wäre das schon ein großer Vorteil für das Host-System.

Gute Frage, da hab ich mich seither auf den NAS Herseller verlassen wie es dort läuft. Bei meiner Arch VM hab ich jetzt auch erstmal einfach den Standard verwendet. Jedoch hab ich einen Artikel der das Thema rootless behandelt, den schau ich mir mal an.

Mit dem Reverse Proxy hat man eine zusätzliche Schicht, indem der direkte Zugriff auf die Container nicht möglich ist. Der Reverse Proxy ist dann der einzige Zugangspunkt und könnte mit TLS-Terminierung auch potenziell schädliche Anfragen filtern, bevor die Container erreicht werden oder beispielsweise auf DDoS Angriffe durch Rate-Limiting und IP-basierten Blocklisten reagieren.

Tatsächlich hab ich auf dem Nginx Proxy die Zertifikate konfiguriert und auf die Weiterleitungen konfiguriert.

Könnte man machen. Ich würde ein NAS immer so simpel wie möglich halten. Das hätte auch den Charme, dass man bei Defekt oder Austausch relativ einfach nur die VM umziehen müsste.

Sehe ich eigentlich auch so und bin aber immer wieder mal unsicher. Der NAS Hersteller nimmt einem eigentlich hier und da viel Konfiguration ab und die Zeit die man in etwas „eigenes“ reinstecken muss und pflegen muss… Aktuell finde ich es einfach besser die NAS soweit wie möglich nur als Fileserver zu verwenden.

Insgesamt könnte man das noch weiter aufbohren und beispielsweise das NAS in eine DMZ packen. Dort als Einstiegspunkt dann beispielsweise eine Hardware-Firewall mit IPS. Möglichkeiten gibt es viele, aber irgendwann wird man einen Punkt erreichen, bei dem die Landschaft vielleicht zu komplex geworden ist und man Fehler dann nur noch schwer findet.

Die NAS in eine DMZ packen find ich immer hab ich nicht viel gewonnen… letztendlich sind ja auf der NAS alle meine Daten und wenn sie in einer DMZ steht wären die Daten ja mit in der DMZ.

Meine weitere Vorgehensweiße wird jetzt mal wie folgt sein.

  • Im Moment härte ich mit Lynis meine Arch VM. Bin fast geschockt weil ich im Moment nur 74 Punkte erreiche. Mike schreibt aber in seinem Linux härten Beitrag wenn man an die 80 kratzt wäre das System gehärtet. Ich werde dann auch noch AppArmor installieren aber ich hoffte ich komme auch schon ohne App Armor an die 80 ran…
  • Rootless von Docker in meiner Arch VM schau ich mir mal an wie das funktioniert und ob die Container dann auch noch funktionieren… irgendwas hatte ich mal aufgeschnappt da es nicht ganz ohne ist Container rootless laufen zu lassen.
  • Ich recherchiere mal wie Synology sei Docker umgesetzt hat bgzl. rootless oder nicht. Je nachdem entscheide ich ob ich einfach alle Container in der VM laufen lasse… vermutlich mach ich das aber wegen dem Punkt die NAS so einfach wie möglich zu gestalten.
1 „Gefällt mir“