paketų filtro išleidimas , kuris kuriamas kaip „iptables“, „ip6table“, „arptables“ ir „ebtables“ pakaitalas, suvienodinant paketų filtravimo sąsajas IPv4, IPv6, ARP ir tinklo tiltams. „nftables“ pakete yra paketų filtravimo komponentai, kurie veikia vartotojo erdvėje, o branduolio lygio funkcionalumą teikia „nf_tables“ posistemė, kuri yra branduolio dalis. Linux Nuo 3.13 versijos reikalingi pakeitimai, kad „nftables“ 0.9.2 versija būtų įtraukta į branduolį Linux 5.3.
Branduolio lygis suteikia tik bendrąją nuo protokolo nepriklausomą sąsają, kuri suteikia pagrindines funkcijas duomenims iš paketų išgauti, duomenų operacijoms atlikti ir srauto valdymui. Pati filtravimo logika ir specifiniams protokolams skirtos tvarkyklės sukompiliuojamos į baitinį kodą vartotojo erdvėje, po to šis baitinis kodas naudojant Netlink sąsają įkeliamas į branduolį ir vykdomas specialioje virtualioje mašinoje, primenančioje BPF (Berkeley Packet Filters). Šis metodas leidžia žymiai sumažinti branduolio lygiu veikiančio filtravimo kodo dydį ir perkelti visas analizavimo taisyklių ir logikos funkcijas, skirtas darbui su protokolais į vartotojo erdvę.
Pagrindinės naujovės:
- Galimybė patikrinti prievado numerį iš transporto sluoksnio paketo antraštės, neatsižvelgiant į 4 sluoksnio protokolo tipą:
pridėkite taisyklę xy ip protokolas { tcp, udp } th dport 53
- Elementų rinkinio eksploatavimo trukmės atkūrimo palaikymas:
pridėti elementą ip xy { 1.1.1.1 skirtasis laikas 30s baigiasi 15s }
- Galimybė patikrinti atskiras parinktis (lsrr, rr, ssrr ir ra) iš IPv4 paketų:
pridėti taisyklę xy ip parinktis rr egzistuoja drop
Dėl maršruto parinkčių galima patikrinti tipo, ptr, ilgio ir addr laukus:
pridėti taisyklę xy ip parinktis rr tipo 1 lašas
- Dabar galima nurodyti tinklo prefiksus ir adresų diapazonus išraiškose:
iifname ens3 snat į 10.0.0.0/28
iifname ens3 snat į 10.0.0.1-10.0.0.15 - Kintamųjų naudojimo grandinės apibrėžimuose palaikymas:
define default_policy = priimti
pridėti grandinę ip foo bar { type filter hook input priority filter; politika $default_policy } - Dabar grandinės prioritetas gali būti nurodytas tiek skaičiais, tiek simboliškai:
apibrėžti prio = filtras
apibrėžkite prionį = 10
define prioffset = "filtras - 150"pridėti lentelę ip foo
add chain ip foo bar { tipo filtras kabliukas input priority $prio; }
add chain ip foo ber { tipo filtras kabliukas input priority $prionum; }
add chain ip foo bor { tipo filtras kabliukas input priority $prioffset; } - Įdiegtas sinproxy modulio palaikymas. Pavyzdžiui, norėdami TCP prievadui 8888 priskirti sinproxy apsaugą, galite naudoti šias taisykles:
lentelės ip x {
grandinė y {
tipo filtras kabliukas prerouting priority raw; priimti politiką;
tcp dport 8888 tcp vėliavėlės syn notrack
}grandinė z {
tipo filtras kablio pirmenybės filtras; priimti politiką;
tcp dport 8888 ct būsena neteisinga, nesekama sinproxy mss 1460 \\
wscale 7 timestamp sac-perm ct būsena netinkamas kritimas
}
} - Norėdami apibrėžti numatomus papildomus ryšius, susietus su dabartiniu ryšiu conntrack lentelėje, kurie naudojami protokoluose ir scenarijuose, kuriems reikalingi keli ryšiai, dabar galite apibrėžti strategijas naudodami standartinius taisyklių rinkinius. Pavyzdžiui, norėdami nustatyti, kurie vėlesni prisijungimai prie 8888 prievado tikėtini po prisijungimo prie 5432 TCP prievado, galite nurodyti šias taisykles:
lentelė x {
ct lūkestis myexpect {
protokolas tcp
dport 5432
timeout 1h
dydis 12
l3proto ip
}grandinės įvestis {
tipo filtras kabliukas įvesties prioritetas 0;
ct būsena naujas tcp dport 8888 ct lūkesčių rinkinys myexpect
ct būsena nustatyta, susiję skaitiklis priimti
}
}
Šaltinis: opennet.ru
