Çlirimi i filtrit tĂ« paketave nftables 0.9.4

Publikuar lëshimi i filtrit të paketave nftables 0.9.4, duke po zhvilluar si një zëvendësim për iptables, ip6tables, arptables dhe ebtables falë unifikimit të interfeseve të filtrimit të paketave për IPv4, IPv6, ARP dhe ura rrjetesh. Pakoja nftables përfshin komponentë të filtrimit të paketave që punojnë në hapësirën e përdoruesit, ndërsa në nivelin e bërthamës, sistemi nf_tables, i përfshirë në bërthamën Linux që nga lëshimi 3.13, garanton funksionimin. Ndryshimet e nevojshme për lëshimin e nftables 0.9.4 janë përfshirë në degën e ardhshme të bërthamës. Linux 5.6.

Në nivelin e bërthames ofrohet vetëm një ndërfaqe e përgjithshme, që nuk varet nga protokolli specifik dhe ofron funksione të bazës për nxjerrjen e të dhënave nga paketat, kryerjen e operacioneve me të dhëna dhe menaxhimin e rrjedhës. Rregullat e filtrimit dhe trajtuesit specifikë për protokollet kompilohet në kod bajtësh në hapësirën e përdoruesit, pas së cilës ky kod bajtësh ngarkohet në bërthamë përmes ndërfaqes Netlink dhe ekzekutohet në bërthamë në një makinë virtuale speciale, e cila i ngjan BPF (Berkeley Packet Filters). Ky qasje lejon të zvogëlohet në mënyrë të konsiderueshme madhësia e kodit të filtrimit që punon në nivelin bërthamor dhe të transferohen të gjitha funksionet e analizës së rregullave dhe logjikës së punës me protokollet në hapësirën e përdoruesit.

Novitetet kryesore:

  • MbĂ«shtetje pĂ«r intervale nĂ« bashkime (concatenation, lidhje tĂ« caktuara tĂ« adresave dhe portĂ«ve qĂ« lehtĂ«sojnĂ« pĂ«rputhjen). PĂ«r shembull, pĂ«r njĂ« grup "whitelist", elementĂ«t e tĂ« cilit janĂ« bashkime, caktimi i flamurit "interval" do tĂ« tregojĂ« se grupi mund tĂ« pĂ«rfshijĂ« intervale nĂ« bashkim (pĂ«r bashkimin "ipv4_addr . ipv4_addr . inet_service" mĂ« parĂ« ishte e mundur tĂ« renditesh pĂ«rputhje tĂ« sakta tĂ« tipit "192.168.10.35 . 192.68.11.123 . 80", ndĂ«rsa tani Ă«shtĂ« e mundur tĂ« caktohen grupe adresash "192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80"):

    tabela 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Ă« grupet dhe listat e hartave Ă«shtĂ« e mundur tĂ« pĂ«rdoret direktiva "typeof", e cila pĂ«rcakton formatin e elementit gjatĂ« pĂ«rputhjes.
    Për shembull:

    tabela ip foo {
    set whitelist {
    lloji i ip saddr
    elementët = { 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
    }
    }

    tabela 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Ă«rdorimit tĂ« bashkimeve nĂ« lidhjet NAT, qĂ« lejon caktimin e adresĂ«s dhe portit gjatĂ« pĂ«rcaktimit tĂ« transformimeve NAT bazuar nĂ« listat e hartave ose grupet me emra:

    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

  • MbĂ«shtetje pĂ«r pĂ«rshpejtimin harduerik duke pĂ«rjashtuar disa operacione filtrimi nĂ« barrĂ«n e kartĂ«s rrjetĂ«sore. PĂ«rshpejtimi aktivizohet pĂ«rmes utilitarit ethtool ("ethtool -K eth0 hw-tc-offload on"), dhe pas kĂ«saj aktivizohet nĂ« nftables pĂ«r zinxhirin bazĂ« me flamurin "offload". Kur pĂ«rdoret bĂ«rthama Linux 5.6, mbĂ«shtetet pĂ«rshpejtimi harduerik pĂ«r pĂ«rputhjen e fushave tĂ« kokĂ«s dhe verifikimin e ndĂ«rfaqes hyrĂ«se nĂ« kombinim me pranim, heqje, dublim (dup) dhe ridrejtim (fwd) paketash. NĂ« shembullin mĂ« poshtĂ«, operacionet e heqjes sĂ« paketave qĂ« vijnĂ« nga adresa 192.168.30.20 kryhen nĂ« nivelin e kartĂ«s rrjetĂ«sore, pa kaluar paketat nĂ« bĂ«rthamĂ«:

    # cat file.nft
    table netdev x {
    zinxhir y {
    filtri i tipit të aparatëve hyrës ethe0 prioritet 10; flamuj offload;
    ip saddr 192.168.30.20 heq
    }
    }
    # nft -f file.nft

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

    # nft delete rule ip y z handle 7
    Gabim: Nuk mund të përpunohet rregulli: Nuk ka një skedar ose direktor.
    fshi rregull ip y z menaxho 7
    ^

    # nft delete rule ip x x handle 7
    Gabim: Nuk mund të përpunohet rregulli: Nuk ka një skedar ose direktor.
    fshi rregull ip x x menaxho 7
    ^

    # nft delete table twst
    Gabim: Nuk ka një skedar ose direktor; a keni dashur tabelën 'test' në familjen ip?
    fshi tabelën twst
    ^^^^

    Në shembullin e parë tregohet se tabela «y» nuk është e pranishme në sistem, në të dytin se menaxheri «7» mungon, dhe në të tretin se tregohet një sugjerim për gabim gjatë shpërndarjes së emrit të tabelës.

  • Shtuar mbĂ«shtetje pĂ«r verifikimin e interface slave pĂ«rmes caktimit tĂ« «meta sdif» ose «meta sdifname»:

    
 meta sdifname vrf1 


  • Shtuar mbĂ«shtetje pĂ«r operacionin e zhvendosjes djathtas ose majtas. PĂ«r shembull, pĂ«r tĂ« zhvendosur etiketĂ«n ekzistuese tĂ« paketĂ«s majtas pĂ«r 1 bit dhe tĂ« vendosni bitin mĂ« tĂ« vogĂ«l nĂ« 1:

    
 meta mark set meta mark lshift 1 ose 0x1 


  • Realizuar opsioni «-V» pĂ«r tĂ« shfaqur informacion tĂ« zgjeruar mbi_versionin.

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

  • Opcione tĂ« komandĂ«s tani duhet tĂ« specifikohen patjetĂ«r para komandave. PĂ«r shembull, duhet tĂ« shkruani «nft -a list ruleset», ndĂ«rsa ekzekutimi «nft list ruleset -a» do tĂ« sjellĂ« njĂ« gabim.

    Burimi: opennet.ru

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