Mailcow, Docker, Routing, external Access to Container

  • Einen schönen guten Tag in Runde,


    ich betriebe eine Mailcow Instanz und habe ein kleines Routing-Problem.


    Gewünscht ist eine Verbindung zum Container "mysql-mailcow" (MariaDB) von einer externen Quelle (Server).
    Dazu habe ich dem entsprechenden Container eine statische IP Adresse zugewiesen (172.22.1.99).
    Der Zielport ist Standard - 3306.


    Standardmäßig werden jene Verbindungen zum Mailcow-Server verweigert.


    Zum Port-Forwarding habe ich folgende iptables Regel hinzugefügt:


    -I PREROUTING -s 1.2.3.4/32 -p tcp -m tcp --dport 3306 -j DNAT --to-destination 172.22.1.99:3306


    Die Source IP (1.2.3.4) habe ich zensiert.


    Entsprechend habe ich eine weitere Regel in die FORWARD Tabelle (DOCKER-USER) hinzugefügt:


    -I DOCKER-USER -p tcp -m tcp --dport 3306 -j ACCEPT


    Leider bekomme ich nun eine Timeout bei Verbindungsversuch, anstatt dass die Verbindung wie zuvor verweigert wird.


    Was habe ich denn übersehen?


    Besten Dank vorab! :S


    Anbei eine Übersicht der aller Regeln:

  • Zum Port-Forwarding habe ich folgende iptables Regel hinzugefügt:


    -I PREROUTING -s 1.2.3.4/32 -p tcp -m tcp --dport 3306 -j DNAT --to-destination 172.22.1.99:3306


    Die Source IP (1.2.3.4) habe ich zensiert.

    1.2.3.4 ist dabei deine öffentliche IP? Dann muss dort "-d" hin, nicht "-s". Außerdem muss "-t nat" in die Regel. Das kann aber ggf. auch durchs Framework erledigt werden.

    Entsprechend habe ich eine weitere Regel in die FORWARD Tabelle (DOCKER-USER) hinzugefügt:


    -I DOCKER-USER -p tcp -m tcp --dport 3306 -j ACCEPT

    In der Regel würde ich auch noch die Zieladresse (-d 172.22.1.99) mit angeben.

  • In der MAILCOW Chain existiert seit Anfang Februar eine Regel, die genau diesen Zugriff verhindern soll: https://mailcow.email/posts/20…release-2nd-february-2024


    Um das zu umgehen, müsstest Du DISABLE_NETFILTER_ISOLATION_RULE anpassen und selbst die entsprechenden Firewallregeln für die verbliebenen Ports

    6379/8983/12345 rebootsicher zur DOCKER-USER Chain hinzufügen. Andernfalls wäre Dein mailcow-System nicht mehr gegen CVE-2024-24760 geschützt!

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

    Einmal editiert, zuletzt von KB19 ()

    Gefällt mir 1 Danke 1
  • Besten Dank an euch beide.


    Die Regeln habe ich entsprechend ergänzt bzw. korrigiert.


    In der MAILCOW Chain existiert seit Anfang Februar eine Regel, die genau diesen Zugriff verhindern soll: https://mailcow.email/posts/20…release-2nd-february-2024

    Danke für den Hinweis, das ist mir wohl entgangen.


    Ich habe DISABLE_NETFILTER_ISOLATION_RULE in der Config angepasst und die entsprechende Regel in der Kette DOCKER-USER eingefügt.


    Nach dem Stoppen aller Container wurden alle Standardregeln (inkl. der neuen/notwendigen) via. Paket iptables-persistent (rebootsicher) gespeichert.

    Damit gibt's auch keine Probleme und Unstimmigkeiten durch die von Docker kontrollierte Firewall und weiterer meiner Regeln.

    Problem gelöst! :thumbup: