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.
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain inbound_ipv4 {
# accepting ping (icmp-echo-request) for diagnostic purposes.
# However, it also lets probes discover this host is alive.
# This sample accepts them within a certain rate limit:
#
icmp type echo-request limit rate 5/second accept
}
chain inbound_ipv6 {
# accept neighbour discovery otherwise connectivity breaks
#
icmpv6 type { nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert } accept
meta l4proto ipv6-icmp accept
ip6 ecn not-ect accept
# accepting ping (icmpv6-echo-request) for diagnostic purposes.
# However, it also lets probes discover this host is alive.
# This sample accepts them within a certain rate limit:
#
icmpv6 type echo-request limit rate 5/second accept
}
chain input {
# By default, drop all traffic unless it meets a filter
# criteria specified by the rules that follow below.
type filter hook input priority filter; policy drop;
# Allow traffic from established and related packets, drop invalid
ct state vmap { established : accept, related : accept, invalid : drop }
# Allow loopback traffic.
iifname { "lo", "cni0" } accept
# Jump to chain according to layer 3 protocol using a verdict map
meta protocol vmap { ip : jump inbound_ipv4, ip6 : jump inbound_ipv6 }
# Allow SSH on port TCP/22 and allow HTTP(S) TCP/80 and TCP/443
# for IPv4 and IPv6.
#tcp dport { ssh, http, https } accept
tcp dport { ssh } accept
# Uncomment to enable logging of denied inbound traffic
#log prefix "[nftables] Inbound Denied: " counter drop
}
chain forward {
type filter hook forward priority filter;
# Drop everything (assumes this device is not a router)
# type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority filter;
}
}
Display More
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.