Einstellung Firewall K3S - iptables-nft

  • Hallo zusammen,


    ich brauche mal ein wenig Inspiration oder Best-Practices.


    Ich experimentiere z.Z. mit K3S als Single-Node Cluster auf einem Raspi herum.

    Das ganze Setup soll aber irgendwann auf einen vServer wandern.


    K3S fummelt, wie auch Docker an den Firewallsettings herum, soweit auch erstmal gut.

    Ich würde aber mein Cluster auf dem Public-Interface Inbound gerne auf Ping, SSH, HTTP und HTTPS beschränken und alles andere blocken.


    Meine bisherige Konfiguration drop all, lo allow, hat auch die Kommunikation zu den Pods zum erliegen gebracht,

    so dass ich die cni0-Bridge auch in die allow Liste mit aufgenommen habe, ich bin mir aber nicht sicher ob ich irgendwo ein Loch aufgerissen habe.

    http, https musste ich nicht einmal explizit freigeben, k3s erledigt das mit seiner Konfigurationsmagie.


    Nutzt von euch jemand k3s, wie sieht eure Firewall-Konfiguration aus? Irgendwelche Tipps zur Verbesserung der Konfiguration?

    Schade das bei Netcup keine vorgeschaltete Firewall existiert, das würde das Setup doch erheblich vereinfachen und kein Gefühl einer vergessenen Regel erzeugen.


    Danke.

    • Best Answer

    Ich habe einige K3s Single Node Server hier bei Netcup laufen. Funktioniert im Grunde einwandfrei. Ich würde aber empfehlen, einen Firewall Helper wie UFW oder Firewalld zu nutzen. Da macht die ganze Konfiguration sehr viel einfacher. Ich selbst nutze immer Firewalld.


    Für K3s (oder andere Kubernetes Lösungen) sind hier noch folgende Schritte notwendig:


    1. Masquerade auf dem Public NIC aktivieren.

    2. Traffic von und zu 10.42.0.0/16, 10.43.0.0/16 erlauben (falls nicht anders konfiguriert).


    Als Beispiel für Firewalld hier mal meine Zonen.


    1. Public NIC

    XML
    <?xml version="1.0" encoding="utf-8"?>
    <zone>
      <short>PUBLIC</short>
      <description>Public Internet</description>
      <interface name="eth0"/>
      <masquerade/>
      <service name="http"/>
      <service name="https"/>
    </zone>

    2. K3s

    XML
    <?xml version="1.0" encoding="utf-8"?>
    <zone target="ACCEPT">
      <short>K3S</short>
      <description>k3s zone</description>
      <source address="10.42.0.0/16"/>
      <source address="10.43.0.0/16"/>
    </zone>