
Ich migriere Regeln von iptable zu nftable, indem ichWechsel von iptable zu nftable
Ich habe jetzt einige IP- und Port-Blockierungsregeln sowie stringbasierte iptable-Regeln eingerichtet, aber mithilfe der integrierten iptable-Übersetzungsregel kann ich die Regeln von iptable in nftable umwandeln, aber die stringbasierten Regeln, die in iptable vorhanden waren, werden nach der Übersetzung in nftables kommentiert. Unten sehen Sie die nftable-Regel nach der Übersetzung
add rule ip filter INPUT tcp dport 1024-65535 counter accept
add rule ip filter INPUT udp dport 1024-65535 counter accept
65535 -j DROP
# -t filter -A INPUT -p udp -m udp --dport 234 -m string --string abc.exe --algo bm --to 65535 -j DROP
# -t filter -A INPUT -p udp -m udp --dport 234 -m string --string def.exe --algo bm --to 65535 -j DROP
# -t filter -A INPUT -p udp -m udp --dport 234 -m string --string hij.exe --algo bm --to 65535 -j DROP
add rule ip filter INPUT icmp type echo-reply ct state new,related,established counter accept
add rule ip filter INPUT icmp type echo-request ct state new,related,established counter accept
add rule ip filter INPUT icmp type destination-unreachable ct state new,related,established counter accept
add rule ip filter INPUT icmp type time-exceeded ct state new,related,established counter accept
Brauche Hilfe beim Konvertieren von stringbasierten iptable-Regeln in nftable-Regeln. Und wenn dies wie oben fehlschlägt, auf welches Protokoll muss ich mich beziehen?
Antwort1
Es gibtzurzeit nicht Äquivalent in nftables, DieSchnurmatch befindet sich derzeit in der Liste der nicht unterstützten Erweiterungen. Alle diese nicht unterstützten Erweiterungen (und wahrscheinlich auch einige unterstützte) werden nicht übersetzt inNftablesda sie eine spezielle Eigenschaft verwenden, die nicht nur mitNftablesBytecode (versuchen Sie, nft -a --debug=netlink list ruleset
Bytecode zu sehen) noch ist im Kernel als native implementiertNftablesModul, sodass das Übersetzungstool es nicht einmal versucht.
Wenn Sie mehr über das Protokoll wissen und erwarten können, die Zeichenfolge an einerFestStandort im Paket gibt es Workarounds, um dasselbe zu tun mitRohnutzlastausdrückemit einemBeispiel dort.
Ansonsten kannst du einfach mischenNftablesUndiptables(einschließlichiptables-nft) Regeln, solange Sie unterschiedliche Tabellennamen verwenden inNftablesnicht kollidieren mitiptables-nft(das wahrscheinlich im Einsatz ist). Es gibt noch keinen Plan zur schrittweisen Abschaffungiptables(zumindest dieiptables-nftImplementierung, perfekt in der Lage, die verschiedenen xtables-Module zu verwenden, wieSchnur).
Hier t
wird die Tabelle so ausgewählt, dass es nicht zu Konflikten mit der Tabelle kommt filter
.Nftableserhält seine Eingabekette (willkürlich genannt c_in
) mit Priorität 10, alsoiptablesDie INPUT-Kette von , die an derselben Stelle einhakt, hat Vorrang bei ihrer festen Priorität 0. Wenn die Priorität bei 0 bleibt, erhält man eine undefinierte Reihenfolge, zwischen der die Kette (iptables' oderNftables') wird zuerst ausgeführt. Es spielt keine Rolle, wenn Regeln zwischen Tabellen gelöscht/akzeptiert werden. Die Fälle, in denen es wichtig ist, sind das Aufteilen der Regeln, wie es hier gemacht wird (aber für diesen speziellen Fall gibt es nichts Besonderes an der Reihenfolge, also ist es in Ordnung), und das Ändern von Regeln oder Regeln mit Nebeneffekten: Hinzufügen eines Elements in einerNftables Satzoder einiptablesBegleiteripsetund dann das Paket zu verwerfen ist nicht dasselbe wie zuerst das Paket zu verwerfen (und dann nichts mehr).
nft add table ip t
nft add chain ip t c_in '{ type filter hook input priority 10; policy accept; }'
nft add rule ip t c_in tcp dport 1024-65535 counter accept
nft add rule ip t c_in udp dport 1024-65535 counter accept
nft add rule ip t c_in icmp type echo-reply ct state new,related,established counter accept
nft add rule ip t c_in icmp type echo-request ct state new,related,established counter accept
nft add rule ip t c_in icmp type destination-unreachable ct state new,related,established counter accept
nft add rule ip t c_in icmp type time-exceeded ct state new,related,established counter accept
iptables -t filter -A INPUT -p udp -m udp --dport 234 -m string --string abc.exe --algo bm --to 65535 -j DROP
iptables -t filter -A INPUT -p udp -m udp --dport 234 -m string --string def.exe --algo bm --to 65535 -j DROP
iptables -t filter -A INPUT -p udp -m udp --dport 234 -m string --string hij.exe --algo bm --to 65535 -j DROP
Tut mir leid, ich weiß nicht, was ich tun soll:
65535 -j DROP
was wie ein Tippfehler oder ein Übersetzungsfehler des Tools aussieht.
Wenn eine Interaktion zwischen beiden Welten erforderlich ist, können „Nachrichten“ übermittelt werden durchMarkierungen. Das ist ein Fall, in dem die Priorität zählt. Wenn die Drop-Aktion beispielsweise nur inNftablesAus Gründen der Regelverwaltung könnte dies stattdessen verwendet werden, wobei zu beachten ist, dassiptables' Filter/INPUT hat Vorrang vorNftables' t c_in hier:
iptables -t filter -A INPUT -p udp -m udp --dport 234 -m string --string abc.exe --algo bm --to 65535 -j MARK --set-mark 0xdead
iptables -t filter -A INPUT -p udp -m udp --dport 234 -m string --string def.exe --algo bm --to 65535 -j MARK --set-mark 0xdead
iptables -t filter -A INPUT -p udp -m udp --dport 234 -m string --string hij.exe --algo bm --to 65535 -j MARK --set-mark 0xdead
Und fügen Sie dies einNftablesRegel vor den Kurzschlussregeln ...established...
an der Stelle, an der dieSchnurRegeln waren zunächst:
nft add ip t c_in meta mark 0xdead drop