lëshimi i filtrit të paketave , duke u zhvilluar si një zëvendësim për iptables, ip6tables, arptables dhe ebtables përmes unifikimit të interfeseve të filtrimit të paketave për IPv4, IPv6, ARP dhe urat e rrjetit. Paketa nftables përmban komponentë të filtrit të paketave që punojnë në hapësirën e përdoruesit, ndërsa në nivelin e kernelit është e punësuar nën-sistemi nf_tables, i cili është pjesë e kernelit të Linux që nga lëshimi 3.13. Ndryshimet e nevojshme për funksionimin e lëshimit nftables 0.9.2 përfshijnë integrimin në kernelin e Linux 5.3.
Në nivelin e kernelit ofrohet vetëm një ndërfaqe e përgjithshme, e pavarur nga protokolli specifik dhe që siguron funksionet bazë për nxjerrjen e të dhënave nga paketat, kryerjen e operacioneve mbi të dhënat dhe menaxhimin e rrjedhës. Vetë logjika e filtrimit dhe përpunuesit specifikë për protokollet kompilohen në bytecode në hapësirën e përdoruesit, më pas ky bytecode ngarkohet në kernel me anë të ndërfaqes Netlink dhe ekzekutohet në një makinë virtuale të posaçme, të ngjashme me BPF (Berkeley Packet Filters). Kjo qasje mundëson ulje të ndjeshme të madhësisë së kodit të filtrimit që ekzekutohet në nivelin e kernelit dhe zhvendos të gjitha funksionet e analizimit të rregullave dhe logjikën e punës me protokollet në hapësirën e përdoruesit.
Novitetet kryesore:
- Mundësia për të verifikuar numrin e portit nga header-i i paketës në nivelin e transportit pavarësisht nga lloji i protokollit të nivelit 4:
shto rregull x y ip protokolli { tcp, udp } th dport 53
- Mbështetje për rikthimin e kohës së jetës së një grupi elementësh:
shto element ip x y { 1.1.1.1 timeout 30s skadon 15s }
- Mundësia për të verifikuar opsione të veçanta (lsrr, rr, ssrr dhe ra) nga paketat IPv4:
shto rregull x y ip opsioni rr ekziston heq
Për opsionet e rrugës, është e mundur të kontrolloni fushat type, ptr, length dhe addr:
shto rregull x y ip opsioni rr type 1 heq
- Në shprehje tani është e lejueshme të especificohen prefikse rrjeti dhe intervale adresash:
iifname ens3 snat to 10.0.0.0/28
iifname ens3 snat to 10.0.0.1-10.0.0.15 - Mbështetje për përdorimin e variablave në përcaktimet e zinxhirëve:
përcakto default_policy = prano
shto zinxhir ip foo bar { tipi filtrues kllapa hyrëse prioriteti filtrues; politika $default_policy } - Tani mund të tregohet prioriteti i zinxhirit si në formë numerike ashtu edhe në formë simbolike:
përcakto prio = filtrues
përcakto prionum = 10
përcakto prioffset = "filtrues - 150"shto tavolinë ip foo
shto zinxhir ip foo bar { tipi filtrues kllapa hyrëse prioriteti $prio; }
shto zinxhir ip foo ber { tipi filtrues kllapa hyrëse prioriteti $prionum; }
shto zinxhir ip foo bor { tipi filtrues kllapa hyrĂ«se prioriteti $prioffset; } - ĂshtĂ« e implementuar mbĂ«shtetje pĂ«r modulun synproxy. PĂ«r shembull, pĂ«r tĂ« mbrojtur portin TCP 8888 nĂ«n mbrojtjen e synproxy, mund tĂ« pĂ«rdoren rregulla tĂ« kĂ«tij tipi:
tabela ip x {
zinxhir y {
type filter hook prerouting priority raw; policy accept;
tcp dport 8888 tcp flags syn notrack
}zinxhiri z {
type filter hook forward priority filter; policy accept;
tcp dport 8888 ct gjendja e pavlefshme, e pakontrolluar synproxy mss 1460 \
wscale 7 timestamp sack-perm ct gjendja e pavlefshme heq
}
} - Për të përcaktuar në tabelën conntrack lidhur me lidhjen aktuale, pritjet e lidhjeve të tjera të pritshme që zbatohen në protokollet dhe skenarët që kërkojnë vendosjen e disa lidhjeve, tani mund të përcaktohen politika përmes grupeve të zakonshme të rregullave. Për shembull, për të caktuar lidhjet e pritshme pas lidhjes në portin TCP 8888 për lidhjet e mëpasshme në portin 5432, mund të jepen rregulla të mëposhtme:
tabela x {
ct pritja myexpect {
protokolli tcp
dport 5432
timeout 1h
size 12
l3proto ip
}zinxhir hyrës {
tipi filtrues kllapa hyrëse prioriteti 0;
ct gjendja e re tcp dport 8888 ct pritja set myexpect
ct gjendja e ngritur, e lidhur numëro pranoni
}
}
Burimi: opennet.ru
