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/2024/rel…d-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 (11. März 2024 um 18:19)

  • 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/2024/rel…d-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: