nftables Konfigurationsproblem - (früherer Versuch: firewalld auf Debian 12, public Zone blockt nicht

  • Hallo zusammen,


    ich versuche gerade auf einem VPS firewalld als Ersatz für ufw zu installieren/konfigurieren, scheitere aber daran dass Ports obwohl nicht freigegeben offen sind.

    Aufgrund der Workarounds die für docker in Verbindung mit der UFW notwendig sind, dacht ich ist es mal Wert eine anderes Frontend für iptables/nftables auszuprobieren.


    Ausgangsbasis: Debian 12 (auf einem S***to VPS), firewalld installiert, interface ens6 der Zone public zugewiesen.



    Code
    sudo firewall-cmd --get-active-zones
    public
      interfaces: ens6

    Meine Verständnis der Doku nach sollte alles außer der beiden Services (ssh, dhcpv6-client) auf ens6 (Zone Public) geblockt werden.

    Ich hab allerdings noch einen Wireguard Service laufen auf den ich mich über ens6 locker verbinden kann.


    Was übersehe ich, bzw, wo habe ich meinen Denkfehler.


    Danke und Grüße

  • Zur hilfreichsten Antwort springen
  • Patrick0815

    Hat den Titel des Themas von „firewalld auf Debian 12, public Zone blockt nicht“ zu „nftables Konfigurationsproblem - (früherer Versuch: firewalld auf Debian 12, public Zone blockt nicht“ geändert.
  • Ich hab nun firewalld rausgeschmissen und bin auf die Basics zurück, pures nftables unter Debian 12.


    Allerdings habe ich hier wohl auch noch einen Fehler in der Konfiguration (aus den nftables Examples entnommen).


    Die Konfiguration wird erfolgreich geladen

    Allerdings habe ich noch das Problem, dass eine Verbindung auf 51820/UDP nicht abgelehnt wird.

    Die Policy für inbound ist drop, daher verstehe ich nicht warum die Verbindung trotzdem erlaubt wird.

  • Ist das ein Port, den Docker verwaltet? Das erklärt dann auch, warum firewalld den nicht blockt. Docker schreibt ja seine eigenen iptables/nftables Regeln und "überschreibt" deine vorkonfigurierten Regeln. Am einfachsten kannst du das umgehen, wenn du die bind ip einfach auf 127.0.0.1 setzt. Statt "-p 51820:51820/udp" kannst du "-p 127.0.0.1:51820/51820/udp" verwenden. Dann ist der Port generell nicht von außen erreichbar (unabhängig der eingesetzten Firewall). Alternativ kann in Docker auch statt einer bridge das host network ausgewählt werden. In diesem Fall greifen dann auch wieder deine normalen Firewall Regeln.

  • Guter Punkt, zumindest ist das Verhalten des Wireguard Clients auch bei ausgeschaltetem Server identisch.

    Da bin ich wohl falsch abgebogen.


    Hat noch jemand einen heißen Tipp wie ich diesen UFW Konstrukt auf nftables umstellen kann?


    Code
    *nat
    :POSTROUTING ACCEPT [0:0]
    # Allow traffic from wireguard client to ens3
    -A POSTROUTING -s 192.168.200.0/24 -o ens3 -j MASQUERADE
    COMMIT