netzer2021
Goto Top

UFW mit Ubuntu blockt Docker access

Hallo Community

ich bin mal wieder irritiert. Bisher habe ich überall gelesen und auch in meiner eigenen Umgebung bestätigt, dass die ufw in Ubuntu den Zugriff auf Docker Container nicht einschränkt, sondern alle Regeln der ufw umgeht. So hatte ich bisher immer nur SSH auf meinem Server erlaubt, aber auf die WebGuis einiger Docker COntainer hatte ich dennoch Zugriff.

Aktuell habe ich Ubuntu Server 22.04 LTS installiert. Während der Installation habe ich direkt die Docker Installation mit ausgewählt. EIn Docker version zeigt mir: CLient Version 20.10.14 und Server ebenfalls. FÜr meine Container habe ich ein eigenens bridge Network in Docker eingerichtet.

Sobald ich die ufw enable (nur mit ssh Freigabe) ist kein Zugriff auf die WebGuis der Docker Container möglich. Selbst wenn ichalle Ports aus meinem Trusted VLan in der ufw freigebe, kann ich dennoch nicht auf die Container WebGuis zugriefen. Dies geht eindeutig erst, wenn wenn ich die ufw disable.
Ich schließe daher aus, dass es z.B.: an Firewall Rules der OPNsense liegt. Zumal hier auch aktuell eindeutig alles vom trusted net in dem sich meine clients befinden auf mein data net in dem sich der ubuntu server befindet freigeeben ist.
Im Vergleich: auf meiner "alten" Ubuntu / Docker Installtion funmtionierte alles wie oben beschrieben.

Wo könnte hier der Fehler bzw. ein Ansatzpunkt zur Behebung liegen? Auch wenn ich den Ubuntu Server und Docker Container nur im privaten LAN verwende möchte ich die ufw schon gern einschalten.

Besten Dank!

Content-Key: 3351058385

Url: https://administrator.de/contentid/3351058385

Printed on: April 19, 2024 at 23:04 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Jul 15, 2022 at 21:15:52 (UTC)
Goto Top
Moin,

Vielleicht sind auch einfach nur die defaults bei 22.04 anders als bei 20.04. schau Dir doch das ganze in den logs und in den Firewalltabellen an.

lks
Member: netzer2021
netzer2021 Jul 15, 2022 at 21:22:12 (UTC)
Goto Top
Welche logs meinst du genau und Tabellen meinst du? Auf dem Ubuntu host nehme ich an?
Member: netzer2021
netzer2021 Jul 18, 2022 at 10:37:06 (UTC)
Goto Top
Ich habe mal in den ufw logs geschaut. Folgende Regel habe ich finden können die ziemlich sicher mein access verhindert.

[304340.899556] [UFW BLOCK] IN=enp2s0 OUT=br-7d8ecc285965 MAC=7c:83:34:b2:0e:1e:00:e0:67:2e:e3:f2:08:00 SRC=192.168.30.10 DST=172.168.10.10 LEN=64 TOS=0x00 PREC=0x00 TTL=62 ID=0 DF PROTO=TCP SPT=49423 DPT=9443 WINDOW=65535 RES=0x00 SYN URGP=0

Mir fehlt aktuell leider etwas die Idee, wie ich dafür eine allow regel in der ufw erstellen kann, Was mir noch aufgefallen ist, dass meine uwf im status sagt: Default: deny (incoming), allow (outgoing), deny (routed).

Bis auf deny (routed) alles gut. Kann das das Problem verursachen? Ich weiß auch nciht wirklich wo das herkommt. Kommt das auch vom allgemeinen deny default?
Member: netzer2021
Solution netzer2021 Jul 18, 2022 updated at 20:14:15 (UTC)
Goto Top
Problem ist gelöst: Firewall rule like: sudo ufw route allow proto tcp from "Client" to "ContainerInternalIP" port 8443

Warum das nun aufeinmal nötig war, bleibt mir nur ein Rätsel. Ansich ist es ja gut, nur access wenn Freiagbe ist ja eine vernünftiger Ansatz ;).
Member: netzer2021
netzer2021 Aug 19, 2022 at 20:14:55 (UTC)
Goto Top
Ich habe in diesem Thema noch etwas weitere gearbeitet. Folgende Situation:

Die ufw ist auf meinem Server aktiviert.

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    192.168.10.0/24           
22/tcp                     ALLOW IN    192.168.30.0/24           
443 on br-5a1776f821a8     ALLOW IN    Anywhere 

br-5a1776f821a8 ist das von mir erstellte Interface von Docker.

In den Logs sehe ich folgendes:
[UFW BLOCK] IN=br-5a1776f821a8 "xyz" SRC=172.168.10.16 DST=192.168.20.10 "xyz" DPT=443 "xyz"  
Was is meinem Fall ausgelöst wurde durch die Kommunikation vom Nextcloud Container auf Onlyoffice container die eigentlich beide im selben Docker Netz sind (dazu spöter)

172 = Docker / 192 Host

Mittels
sudo ufw allow in on br-5a1776f821a8 to any port 443

habe ich die oben genannte Zeile 3 der Regeln erzeugt. Damit funktioniert der Zugriff so wie gewollt, allerdings eben mit from Anywhere. Hier hätte ich gerne lediglich mein Docker Netz freigebgen, finde aber nicht die richtige Syntax. Ist das überhaupt möglich? Wenn ich es mir recht überlege beinhaltet ja das Interface ausschließlich das Subnet, damit habe ich doch im Grunde Filterung? Was ist wenn ich lediglich eine IP aus dem Netzwerk freigeben möchte?

Zu dem Thema mit den Container im selben Docker Netz. Hier ist es doch eigentlich so, dass COntainer im selben Netzt untereinander kommunizieren können oder muss ich hier noch expliziet ein "expose" im docker compose verwenden? So müsste Nextcloud per Docker IP direkt mit OnlyOffice sprechen können, Ports oder Expose habe ich allerdings nicht verwendet und Nextcloud zeigt bei dem Versuch auch eine Fehlermeldung, dass mixed Contetn http und https nicht erlaubt ist.

Kann der gewählte Kommuniaktionsweg evtl. durch folgendes ausgelöst werden:
Ebenfalls im selben Docker Netz steht ein Nginx Proxy Manager. Um von Nextcloud auf OnlyOffice zugreifen zu können gebe ich die entsprechende onlyoffice interne lan url an. Führt dies über den Weg des Hosts?

Alle anderen Container scheinen kommunizieren zu können.
Member: netzer2021
netzer2021 Aug 19, 2022 updated at 20:32:18 (UTC)
Goto Top
haa....vorerst gelöst mittels:

sudo ufw allow in on br-5a1776f821a8 from 172.168.10.0/24 to any port 443

Jetzt bliebe noch die Frage:

Wie "packe" ich Docker hinter die ufw? Eigentlich möchte ich von meinen Clients (nur im lan nicht extern) ur Zugriff auf 443 und damit auf den Nginx Container erlauben, dafür ist er ja da face-smile .