paketifiltri vĂ€ljaanne , mis areneb iptablesi, ip6table'i, arptables'i ja ebtables'i asendamiseks, unifitseerides pakettide filtreerimise liideseid IPv4, IPv6, ARP ja vĂ”rgu sillutamiseks. Nftablesi paketis on kasutusruumi pakettide filtreerimise komponente, samas kui tuuma tasemel tagab toimimise nf_tables'i alamsĂŒsteem, mis on osa Linuxi tuumast alates versioonist 3.13. Nftables 0.9.2 vĂ€ljaande tööks vajalikud muudatused on lisatud Linuxi tuuma versioonis 5.3.
Tuumatasandil pakutakse ainult ĂŒldist liidest, mis ei sĂ”ltu konkreetsest protokollist ja pakub pĂ”hifunktsioone andmete ekstraktsiooniks pakettidest, andmete töötlemiseks ja voogude haldamiseks. Otsene filtreerimise loogika ja protokollipĂ”hised töötlejad kompileeritakse kasutajaruumi 'bytecode', mis seejĂ€rel laaditakse tuuma mitteliidese kaudu ja kĂ€itatakse spetsiaalses virtuaalmasinas, mis meenutab BPF-i (Berkeley Packet Filters). Selline lĂ€henemine vĂ”imaldab oluliselt vĂ€hendada tuumatasandil töötava filtreerimiskoodi suurust, viies kĂ”ik reeglite kĂ€sitlemise ja protokollide töötlemise funktsioonid kasutajaruumi.
Peamised uuendused:
- VÔimalus kontrollida sadama numbrit transportkihi paketipea kaudu sÔltumata 4. tasandi protokollist:
add rule x y ip protocol { tcp, udp } th dport 53
- Eluea taastamise toetamine elementide kogumites:
add element ip x y { 1.1.1.1 timeout 30s expires 15s }
- VĂ”imalus kontrollida ĂŒksikuid valikuid (lsrr, rr, ssrr ja ra) IPv4 paketist:
add rule x y ip option rr exists drop
Marsruutimisvalikute jaoks on vÔimalik kontrollida vÀlja type, ptr, length ja addr:
add rule x y ip option rr type 1 drop
- VĂ€ljendites on nĂŒĂŒd lubatud mÀÀrata vĂ”rgu eeliseid ja aadresside vahemikke:
iifname ens3 snat to 10.0.0.0/28
iifname ens3 snat to 10.0.0.1-10.0.0.15 - Toetab muutujate kasutamist ketaste mÀÀratlemisel:
define default_policy = accept
add chain ip foo bar { type filter hook input priority filter; policy $default_policy } - Kettide prioriteedi mÀÀramine on nĂŒĂŒd vĂ”imalik numbrilises ja sĂŒmboolses vormis:
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; } - Toetab synproxy mooduli rakendamist. NÀiteks TCP pordi 8888 kaitsmiseks saab kasutada jÀrgmisi reegleid:
table ip x {
chain y {
type filter hook prerouting priority raw; policy accept;
tcp dport 8888 tcp flags syn notrack
}chain z {
type filter hook forward priority filter; policy accept;
tcp dport 8888 ct state invalid,untracked synproxy mss 1460 \
wscale 7 timestamp sack-perm ct state invalid drop
}
} - NĂŒĂŒd saab mÀÀrata ĂŒhendustootmise poliitikaid tavaliste reeglite kogumite kaudu, et mÀÀrata tabelis conntrack oodatud lisast ĂŒhendusi, mis vajavad mitme ĂŒhenduse loomist protokollide ja stsenaariumite korral. NĂ€iteks, et mÀÀrata port 8888 TCP-ĂŒhenduse oodatud jĂ€rgmised ĂŒhendused porti 5432, saab kirjutada jĂ€rgmised reeglid:
table x {
ct expectation myexpect {
protocol tcp
dport 5432
timeout 1h
size 12
l3proto ip
}chain input {
type filter hook input priority 0;
ct state new tcp dport 8888 ct expectation set myexpect
ct state established,related counter accept
}
}
Allikas: opennet.ru
