utgÄvan av paketfilter , som utvecklas som en ersÀttning för iptables, ip6tables, arptables och ebtables genom att enhetliggöra grÀnssnitten för paketfiltrering för IPv4, IPv6, ARP och nÀtverksbroar. Paketet nftables innehÄller komponenter av paketfilter som fungerar i anvÀndarrummet, medan kÀrnnivÄn hanteras av nf_tables-subsystemet, som ingÄr i Linux-kÀrnan sedan version 3.13. De förÀndringar som krÀvs för nftables 0.9.2 ingÄr i Linux-kÀrnan 5.3.
I kÀrnnivÄn tillhandahÄlls bara ett allmÀnt grÀnssnitt som inte Àr beroende av ett specifikt protokoll och som erbjuder grundlÀggande funktioner för att extrahera data frÄn paket, utföra operationer med data och hantera flöden. SjÀlva filtreringslogiken och protokollspecifika bearbetare kompileras till bytekod i anvÀndarrummet, vilken laddas i kÀrnan via Netlink-grÀnssnittet och körs i en speciell virtuell maskin som pÄminner om BPF (Berkeley Packet Filters). Denna metod möjliggör en betydande minskning av kodstorleken för filtrering som körs pÄ kÀrnnivÄ och flyttar alla funktioner för regelanalys och protokollhantering till anvÀndarrummet.
Huvudsakliga nyheter:
- Möjlighet att kontrollera portnumret frÄn transportlagsheadern oberoende av typ av protokoll för nivÄ 4:
add rule x y ip protocol { tcp, udp } th dport 53
- Stöd för att ÄterstÀlla livslÀngden pÄ en uppsÀttning element:
add element ip x y { 1.1.1.1 timeout 30s expires 15s }
- Möjlighet att kontrollera vissa alternativ (lsrr, rr, ssrr och ra) frÄn IPv4-paket:
add rule x y ip option rr exists drop
För routingalternativ Àr det möjligt att kontrollera fÀlten type, ptr, length och addr:
add rule x y ip option rr type 1 drop
- I uttryck Àr det nu tillÄtet att ange nÀtverksprefix och adressintervall:
iifname ens3 snat to 10.0.0.0/28
iifname ens3 snat to 10.0.0.1-10.0.0.15 - Stöd för att anvÀnda variabler i kedjedefinitioner:
define default_policy = accept
add chain ip foo bar { type filter hook input priority filter; policy $default_policy } - Specificering av kedjans prioritet kan nu göras bÄde i numeriskt och symboliskt format:
define prio = filter
define prionum = 10
define prioffset = «filter â 150»add table ip foo
add chain ip foo bar { type filter hook input priority $prio; }
add chain ip foo ber { type filter hook input priority $prionum; }
add chain ip foo bor { type filter hook input priority $prioffset; } - Stöd för synproxy-modulen har implementerats. Till exempel, för att skydda TCP-port 8888 under synproxy kan följande uppsÀttning regler anvÀndas:
table ip x {
chain y {
typ filter hook prerouting prioritet raw; policy accept;
tcp dport 8888 tcp flags syn notrack
}chain z {
typ filter hook forward prioritet filter; policy accept;
tcp dport 8888 ct state invalid,untracked synproxy mss 1460 \
wscale 7 timestamp sack-perm ct state invalid drop
}
} - För att definiera i conntrack-tabellen de förvÀntade ytterligare anslutningar relaterade till den aktuella anslutningen, som tillÀmpas i protokoll och scenarier som krÀver att flera anslutningar upprÀttas, kan policys nu definieras genom standard uppsÀttningar av regler. Till exempel, för att definiera de förvÀntade efterföljande anslutningarna till TCP-port 8888 och till port 5432 kan följande regler anges:
tabell x {
ct expectation myexpect {
protokoll tcp
dport 5432
timeout 1h
storlek 12
l3proto ip
}kedja input {
typ filter hook input prioritet 0;
ct state new tcp dport 8888 ct expectation set myexpect
ct state established,related counter accept
}
}
KĂ€lla: opennet.ru
