Lëshimi i filtrit të paketave nftables 0.9.4

Publikuar lëshimi i filtrit të paketave nftables 0.9.4, i cili po zhvillohet si zëvendësim për iptables, ip6tables, arptables dhe ebtables duke unifikuar ndërfaqet e filtrimit të paketave për IPv4, IPv6, ARP dhe urat rrjetë. Në paketën nftables përfshihen komponentë të filtrit të paketave që punojnë në hapësirën e përdoruesit, ndërsa në nivelin e bërthamës punën e siguron nën-sistemi nf_tables, i cili është pjesë e bërthamës Linux që nga lëshimi 3.13. Ndryshimet e nevojshme për funksionimin e lëshimit nftables 0.9.4 janë përfshirë në degën e ardhshme të bërthamës Linux 5.6.

Në nivelin themelor, ofrohet vetëm një interfacë të përgjithshme, e cila nuk varet nga protokolli i caktuar dhe ofron funksione bazë për nxjerrjen e të dhënave nga paketat, kryerjen e operacioneve me të dhënat dhe menaxhimin e rrjedhës. Rregullat e filtrimit dhe përpunuesit e caktuar për protokollet kompilohen direkt në kodin e bytes në hapësirën e përdoruesit, pas së cilës ky kod narkohet në kernel përmes interfecës Netlink dhe ekzekutohet në kernel në një makinë virtuale të veçantë, e ngjashme me BPF (Filtrat e Paketave Berkeley). Ky qasje lejon reduktimin e ndjeshëm të madhësisë së kodit të filtrimit që funksionon në nivelin e kernelit dhe të zhvendosë të gjitha funksionet për analizimin e rregullave dhe logjikës së punës me protokollet në hapësirën e përdoruesit.

TĂ« rejat kryesore:

  • MbĂ«shtetje pĂ«r intervalet nĂ« bashkime (konkatinim, lidhjet e caktuara tĂ« adresave dhe porteve qĂ« lehtĂ«sojnĂ« pĂ«rputhjen). PĂ«r shembull, pĂ«r grupin "whitelist", elementet e tĂ« cilit janĂ« bashkime, specifikimi i flamurit "interval" do tĂ« tregojĂ« se grupe tĂ« caktuara mund tĂ« pĂ«rfshihen nĂ« bashkimin (pĂ«r bashkimin "ipv4_addr . ipv4_addr . inet_service" mĂ« parĂ« ishte e mundshme tĂ« renditni pĂ«rputhje tĂ« sakta si "192.168.10.35 . 192.68.11.123 . 80", dhe tani mund tĂ« specifikoni grupe adresash "192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80"):

    table ip foo {
    set whitelist {
    type ipv4_addr . ipv4_addr . inet_service
    flags interval
    elements = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80 }
    }

    chain bar {
    type filter hook prerouting priority filter; policy drop;
    ip saddr . ip daddr . tcp dport @whitelist accept
    }
    }

  • NĂ« grupe dhe lista map Ă«shtĂ« siguruar pĂ«rdorimi i direktyvĂ«s "typeof", e cila pĂ«rcakton formatin e elementit gjatĂ« pĂ«rputhjes.
    Për shembull:

    table ip foo {
    set whitelist {
    typeof ip saddr
    elements = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    chain bar {
    type filter hook prerouting priority filter; policy drop;
    ip daddr @whitelist accept
    }
    }

    table ip foo {
    map addr2mark {
    typeof ip saddr : meta mark
    elements = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Shtuar mundĂ«sia e pĂ«rdorimin e bashkimeve nĂ« NAT, e cila lejon specifikimin e adresĂ«s dhe portĂ«s gjatĂ« pĂ«rcaktimit tĂ« transformimeve NAT nĂ« bazĂ« tĂ« listave map ose grupeve tĂ« emĂ«ruara:

    nft add rule ip nat pre dnat ip addr . port to ip saddr map { 1.1.1.1 : 2.2.2.2 . 30 }

    nft add map ip nat destinations { type ipv4_addr . inet_service : ipv4_addr . inet_service \; }
    nft add rule ip nat pre dnat ip addr . port to ip saddr . tcp dport map @destinations

  • PĂ«rkrahja e pĂ«rshpejtimit tĂ« harduerit me transferimin e disa operacioneve tĂ« filtrimit te karta rrjetit. PĂ«rshpejtimi aktivizohet pĂ«rmes utilitarit ethtool ("ethtool -K eth0 hw-tc-offload on"), pas sĂ« cilĂ«s aktivizohet nĂ« nftables pĂ«r zinxhirin kryesor me flagun "offload". Duke pĂ«rdorur bĂ«rthamĂ«n Linux 5.6, pĂ«rkrahja e pĂ«rshpejtimit tĂ« harduerit Ă«shtĂ« pĂ«r aplikimin e fushave tĂ« titullit dhe verifikimin e ndĂ«rfaqes hyrĂ«se nĂ« kombinim me marrjen, hedhjen, kopjimin (dup) dhe ridrejtimin (fwd) e paketimeve. NĂ« shembullin mĂ« poshtĂ«, operacionet e hedhjes sĂ« paketimeve qĂ« vijnĂ« nga adresa 192.168.30.20 kryhen nĂ« nivelin e kartĂ«s rrjetit, pa e kaluar paketĂ«n nĂ« bĂ«rthama:

    # cat file.nft
    table netdev x {
    chain y {
    type filter hook ingress device eth0 priority 10; flags offload;
    ip saddr 192.168.30.20 drop
    }
    }
    # nft -f file.nft

  • Informimi mbi vendin e gabimit nĂ« rregulla Ă«shtĂ« pĂ«rmirĂ«suar.

    # nft delete rule ip y z handle 7
    Gabim: Nuk mund të përpunohej rregulla: Nuk ka një skedar ose drejtor.
    delete rule ip y z handle 7
    ^

    # nft delete rule ip x x handle 7
    Gabim: Nuk mund të përpunohej rregulla: Nuk ka një skedar ose drejtor.
    delete rule ip x x handle 7
    ^

    # nft delete table twst
    Gabim: Nuk ka një skedar ose drejtor; a do të thotë ti tabelën 'test' në familjen ip?
    delete table twst
    ^^^^

    Në shembullin e parë, tregohet se tabela «y» mungon në sistem, në të dytin, se mungon përpunuesi «7», dhe në të tretin, se jepet një sugjerim për një gabim në shkrim gjatë shkrimit të emrit të tabelës.

  • Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r kontrollin e ndĂ«rlidhĂ«sit slave pĂ«rmes caktimit «meta sdif» ose «meta sdifname»:

    
 meta sdifname vrf1 


  • Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r operacionin e lĂ«vizjes sĂ« djathtĂ« ose tĂ« majtĂ«. PĂ«r shembull, pĂ«r tĂ« zhvendosur njĂ« etiketĂ« ekzistuese paketi nĂ« tĂ« majtĂ« pĂ«r 1 bit dhe pĂ«r tĂ« vendosur bitin mĂ« tĂ« vogĂ«l nĂ« 1:

    
 meta mark set meta mark lshift 1 ose 0x1 


  • Ă«shtĂ« realizuar opsioni «-V» pĂ«r tĂ« treguar informacion tĂ« zgjeruar mbi versionin.

    # nft -V
    nftables v0.9.4 (Jive at Five)
    cli: readline
    json: po
    minigmp: jo
    libxtables: po

  • Opsionet e komandĂ«s tani duhet tĂ« specifikohen domosdoshmĂ«risht para komandave. PĂ«r shembull, duhet tĂ« specifikohet «nft -a list ruleset», ndĂ«rsa ekzekutimi «nft list ruleset -a» do tĂ« shkaktojĂ« njĂ« gabim.

    Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster