nftables paket filtri 1.0.0 buraxılışı

IPv1.0.0, IPv4, ARP və şəbəkə körpüləri (iptables, ip6table, arptables və ebtables əvəz etmək məqsədi daşıyır) üçün paket filtrləmə interfeyslərini birləşdirən nftables 6 paket filtrinin buraxılışı nəşr edilmişdir. Nftables 1.0.0 buraxılışının işləməsi üçün tələb olunan dəyişikliklər Linux 5.13 nüvəsinə daxil edilmişdir. Versiya nömrəsindəki əhəmiyyətli dəyişiklik heç bir əsas dəyişikliklə əlaqəli deyil, yalnız onluq qeydlərdə nömrələmənin ardıcıl davamının nəticəsidir (əvvəlki buraxılış 0.9.9 idi).

Nftables paketinə istifadəçi məkanında işləyən paket filtri komponentləri daxildir, nüvə səviyyəsi isə 3.13 buraxılışından bəri Linux nüvəsinin bir hissəsi olan nf_tables alt sistemi tərəfindən təmin edilir. Kernel səviyyəsində paketlərdən məlumatların çıxarılması, verilənlər üzərində əməliyyatların yerinə yetirilməsi və axını idarə etmək üçün əsas funksiyaları təmin edən yalnız ümumi protokoldan asılı olmayan interfeys təmin edilir.

Filtrləmə qaydalarının özləri və protokola xas işləyicilər istifadəçi məkanı bayt koduna tərtib edilir, bundan sonra bu bayt kodu Netlink interfeysindən istifadə edərək nüvəyə yüklənir və BPF-ə (Berkeley Paket Filtrləri) bənzəyən xüsusi virtual maşında nüvədə icra olunur. Bu yanaşma nüvə səviyyəsində işləyən filtrləmə kodunun ölçüsünü əhəmiyyətli dərəcədə azaltmağa və təhlil qaydaları və protokollarla işləmək məntiqinin bütün funksiyalarını istifadəçi sahəsinə köçürməyə imkan verir.

Əsas yeniliklər:

  • Dəst siyahılarına “*” maska ​​elementi üçün dəstək əlavə edilib və bu, dəstdə müəyyən edilmiş digər elementlərə aid olmayan hər hansı paketlər üçün işə salınır. cədvəl x { xəritə blok siyahısı { type ipv4_addr : hökm bayraqları interval elementləri = { 192.168.0.0/16 : qəbul, 10.0.0.0/8 : qəbul, * : burax } } zəncir y { növü filter çəngəl ön marşrut prioriteti 0; siyasəti qəbul etmək; ip saddr vmap @blocklist } }
  • “--define” seçimindən istifadə edərək, komanda xəttindən dəyişənləri təyin etmək mümkündür. # cat test.nft cədvəli netdev x { zəncir y { tipli filtr çəngəl giriş cihazları = $dev prioriteti 0; siyasətin azalması; } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • Xəritə siyahılarında sabit (statuslu) ifadələrin istifadəsinə icazə verilir: cədvəl inet filter { map portmap { type inet_service : hökm sayğac elementləri = { 22 counter paket 0 bayt 0 : jump ssh_input, * counter paketləri 0 bayt 0 : drop } } chain ssh_input { } chain wan_input { tcp dport vmap @portmap } chain prerouting { type filter hook prerouting priority raw; siyasəti qəbul etmək; iif vmap { "lo" : wan_input atla } } }
  • Verilmiş paket ailəsi üçün işləyicilərin siyahısını göstərmək üçün "list hooks" əmri əlavə edildi: # nft list hooks ip device eth0 family ip { hook ingress { +0000000010 chain netdev xy [nf_tables] +0000000300 chain inet mw [nf_tables] } hook input { -0000000100 zəncir ip ab [nf_tables] +0000000300 zəncir inet mz [nf_tables] } çəngəl irəli { -0000000225 selinux_ipv4_forward 0000000000 zəncir ip ac [nf_tables0000000225] {4 zəncir ip ac [nf_tables0000000225] 4_çıxış } çəngəl göndərmə { +XNUMX XNUMX selinux_ipvXNUMX_postroute } }
  • Queue blokları jhash, symhash və numgen ifadələrinin paketləri istifadəçi məkanında növbələrə paylanması üçün birləşdirməyə imkan verir. … symhash mod 65536 üçün növbə … növbə bayraqları numgen inc mod 65536-a keçin… jhash oif üçün növbə. meta mark mod 32 "növbə" də ixtiyari düymələr əsasında istifadəçi məkanında növbə seçmək üçün xəritə siyahıları ilə birləşdirilə bilər. ... növbə bayraqları oifname xəritəsini aşır { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • Dəst siyahısını ehtiva edən dəyişənləri bir neçə xəritəyə genişləndirmək mümkündür. interfeysləri müəyyənləşdirin = { eth0, eth1 } masa ip x { zəncir y { növü filter çəngəl giriş prioriteti 0; siyasəti qəbul etmək; iifname vmap { lo : qəbul edin, $interfaces : drop } } } # nft -f x.nft # nft list ruleset table ip x { chain y { type filter hook input priority 0; siyasəti qəbul etmək; iifname vmap { "lo" : qəbul et, "eth0" : burax, "eth1" : burax } } }
  • Vmapları (hökm xəritəsi) fasilələrlə birləşdirməyə icazə verilir: # nft əlavə edin qayda xy tcp dport . ip saddr vmap {1025-65535. 192.168.10.2: qəbul et }
  • NAT xəritələri üçün sadələşdirilmiş sintaksis. Ünvan diapazonlarını təyin etməyə icazə verilir: ... snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } və ya açıq IP ünvanları və portları: ... dnat to ip saddr map { 10.141.11.4 : 192.168.2.3 : . 80 } və ya IP diapazonlarının və portlarının birləşmələri: ... dnat to ip saddr . tcp dport xəritəsi {192.168.1.2. 80: 10.141.10.2-10.141.10.5. 8888-8999 }

Mənbə: opennet.ru

Добавить комментарий