Docker, Mailcow und iptables

  • Ausgangssituation: Auf einem Rootserver (ubuntu 20.04) läuft u.a. die dockerized-mailcow, ein Apache mit unterschiedl. Diensten wie Jitsi, Nextcloud und einigen Webseiten.

    Ich möchte nun einige IP-Netze systemweit Sperren, von denen nur Angriffe gefahren werden.


    Versändnisfrage: Wie muss ich die DROP-Rules definieren, dass sie sowohl innerhalb des mailcow-Containers als auch ausserhalb greifen?

    Normale Drop-Rules greifen wohl nicht innerhalb vom Mallcow-Container. Dies ist nachvollziehbar über die netfilter-Logs von mailcow.


    Vermute ich richtig, dass ich die Drop-Rules sowohl in die Chains INPUT und MALCOW legen muss?

    Falls ja, wie lässt sich das am besten in den Boot-Prozess integrieren?

    Aktuell nutze ich hierfür den Mechanismus von netfilter-persistent.


    Hat jemand Tipps?

  • Also grundsätzlich - wenn du Docker hast, gehört Docker die Firewall. Das ist mal grundsätzlich relativ einfach.


    Du kannst und darfst in die DOCKER-USER Chain eingreifen, von allem anderen solltest du tunlichst die Finger lassen. Dokumentation

  • Ich hab meine Drop-Rules wie folgt eingeflegt:
    iptables -A DOCKER-USER -s 212.70.x.x/32 -j DROP


    Trotzdem erscheint im Log:

    netfilter-mailcow_1 | 212.70.x.x matched rule id 1 (warning: unknown[212.70.x.x ]: SASL LOGIN authentication failed: UGFzc3dvcmQ6)

    netfilter-mailcow_1 | 1 more attempts in the next 600 seconds until 212.70.x.x/32 is banned


    Wo hakt es? Versteh ich was falsch?

  • die leere Chain sieht so aus:

    Code
    1. Chain DOCKER-USER (1 references)
    2. target prot opt source destination
    3. RETURN all -- anywhere anywhere


    iptables -A DOCKER-USER -s 212.70.x.x/32 -j DROP

    hängt die regeln am Schluss an:

    Code
    1. target prot opt source destination
    2. RETURN all -- anywhere anywhere
    3. DROP all -- 212.70.x.x/32 anywhere


    also wird immer noch alles zugelassen.


    Du musst die DROP Regel vor dem RETURN einfügen.


    Gruß Illunis