Lëshimi i filtrit të paketave nftables 1.0.3

ËshtĂ« publikuar versioni 1.0.3 i filtrit tĂ« paketave nftables, i cili unifikon ndĂ«rfaqet e filtrimit tĂ« paketave pĂ«r IPv4, IPv6, ARP dhe urat rrjetĂ«rore (ka si qĂ«llim zĂ«vendĂ«simin e iptables, ip6tables, arptables dhe ebtables). Ndryshimet e nevojshme pĂ«r funksionimin e versionit 1.0.3 tĂ« nftables janĂ« pĂ«rfshirĂ« nĂ« kernelin Linux 5.18.

Paketat nftables përfshijnë komponentët e filtrit të paketave që punojnë në hapësirën e përdoruesit, ndërsa në nivelin e bërthamor, funksionin e realizon nën-sistemi nf_tables, i pranishëm në bërthamën Linux që nga lëshimi 3.13. Në nivelin e bërthamor ofrohet vetëm një ndërfaqe e përgjithshme, e pavarur nga protokolli konkret dhe që ofron funksione bazike për nxjerrjen e të dhënave nga paketat, realizimin e operacioneve me të dhëna dhe menaxhimin e fluksit.

Rregullat e filtrimit dhe trajtuesit specifik për protokollet kompilohet në kodin e bytes në hapësirën e përdoruesit, pas së cilës ky kod bytes ngarkohet në bërthamë përmes ndërfaqes Netlink dhe ekzekutohet në bërthamë në një mjedis të veçantë. makinën virtuale, i ngjan Berkley Packet Filters (BPF). Qashtu, kjo qasje lejon të reduktohet ndjeshëm madhësia e kodit të filtrimit që funksionon në nivelin e bërthamës dhe të nxirren të gjitha funksionet e analizës së rregullave dhe logjikës së punës me protokollet në hapësirën e përdoruesit.

TĂ« rejat kryesore:

  • NĂ« listat set janĂ« shtuar mbĂ«shtetje pĂ«r pĂ«rputhjen e emrave tĂ« ndĂ«rfaqeve rrjetĂ«rore sipas maskĂ«s, pĂ«r shembull, tĂ« caktuar me simbolin "*": table inet testifsets { set simple_wild { type ifname flags interval elements = { "abcdef*", "othername", "ppp0" } } chain v4icmp { type filter hook input priority 0; policy accept; iifname @simple_wild counter packets 0 bytes 0 iifname { "abcdef*", "eth0" } counter packets 0 bytes 0 } }
  • ËshtĂ« realizuar bashkimi automatik i elementeve tĂ« listĂ«s set qĂ« pĂ«rputhen gjatĂ« punĂ«s. MĂ« parĂ«, kur ishte vendosur opsioni "auto-merge", bashkimi bĂ«hej nĂ« fazĂ«n e shpalljes sĂ« rregullave, ndĂ«rsa tani aktivizohet edhe gjatĂ« shtimit inkremental tĂ« elementeve tĂ« rinj nĂ« procesin e punĂ«s. PĂ«r shembull, nĂ« fazĂ«n e shpalljes, lista set y { flags interval auto-merge elements = { 1.2.3.0, 1.2.3.255, 1.2.3.0/24, 3.3.3.3, 4.4.4.4, 4.4.4.4-4.4.4.8, 3.3.3.4, 3.3.3.5 } } do tĂ« shndĂ«rrohet nĂ« elements = { 1.2.3.0/24, 3.3.3.3-3.3.3.5, 4.4.4.4-4.4.4.8 } dhe mĂ« pas, nĂ«se shtohen elemente tĂ« rinj # nft add element ip x y { 1.2.3.0-1.2.4.255, 3.3.3.6 } do tĂ« duket si elements = { 1.2.3.0-1.2.4.255, 3.3.3.3-3.3.3.6, 4.4.4.4-4.4.4.8 }

    Kur eleminohen elemente të veçanta nga lista, që bien në elemente ekzistuese me intervale, intervali zvogëlohet ose ndahet.

  • NĂ« optimizuesin e rregullave, i cili aktivizohet duke caktuar opsionin "-o/—optimize", Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r bashkimin e disa rregullave tĂ« pĂ«rkthimit tĂ« adresave (NAT) nĂ« listĂ«n map. PĂ«r shembull, pĂ«r grupin # cat ruleset.nft table ip x { chain y { type nat hook postrouting priority srcnat; policy drop; ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 } }

    Ekzekutimi i "nft -o -c -f ruleset.nft" do të çojë në transformimin e rregullave të veçanta "ip saddr" në listën map: snat to ip saddr . tcp dport map { 1.1.1.1 . 8000 : 4.4.4.4 . 80, 2.2.2.2 . 8001 : 5.5.5.5 . 90 }

    Njëlloj, në listat map mund të transformohen edhe shprehjet raw: # cat ruleset.nft table ip x { [
] chain nat_dns_acme { udp length 47-63 @th,160,128 0x0e373135363130333131303735353203 goto nat_dns_dnstc udp length 62-78 @th,160,128 0x0e31393032383939353831343037320e goto nat_dns_this_5301 udp length 62-78 @th,160,128 0x0e31363436323733373931323934300e goto nat_dns_saturn_5301 udp length 62-78 @th,160,128 0x0e32393535373539353636383732310e goto nat_dns_saturn_5302 udp length 62-78 @th,160,128 0x0e38353439353637323038363633390e goto nat_dns_saturn_5303 drop } }

    Pas optimizimit, do të marrim listën map: udp length . @th,160,128 vmap { 47-63 . 0x0e373135363130333131303735353203 : goto nat_dns_dnstc, 62-78 . 0x0e31393032383939353831343037320e : goto nat_dns_this_5301, 62-78 . 0x0e31363436323733373931323934300e : goto nat_dns_saturn_5301, 62-78 . 0x0e32393535373539353636383732310e : goto nat_dns_saturn_5302, 62-78 . 0x0e38353439353637323038363633390e : goto nat_dns_saturn_5303 }

  • ËshtĂ« lejuar pĂ«rdorimi i shprehjeve raw nĂ« operacionet e bashkimit. PĂ«r shembull: # nft add rule x y ip saddr . @ih,32,32 { 1.1.1.1 . 0x14, 2.2.2.2 . 0x1e } ose table x { set y { typeof ip saddr . @ih,32,32 elements = { 1.1.1.1 . 0x14 } } }
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r caktimin e fushave numra tĂ« kokave nĂ« operacionet e bashkimit: table inet t { map m1 { typeof udp length . @ih,32,32 : verdict flags interval elements = { 20-80 . 0x14 : accept, 1-10 . 0xa : drop } } chain c { type filter hook input priority 0; policy drop; udp length . @ih,32,32 vmap @m1 } }
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r rivendosjen e opsioneve TCP (funksionon vetĂ«m me kernelin Linux 5.18+): tcp flags syn reset tcp option sack-perm
  • Ekzekutimi i komandave pĂ«r listimin e zinxhirĂ«ve Ă«shtĂ« shpejtuar ("nft list chain x y").

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster