nftables ፓኬት ማጣሪያ 0.9.1 መለቀቅ

ከአንድ አመት እድገት በኋላ ቀርቧል የፓኬት ማጣሪያ መለቀቅ nftables 0.9.1ለ IPv6, IPv4, ARP እና የአውታረ መረብ ድልድዮች የፓኬት ማጣሪያ መገናኛዎችን በማዋሃድ ለ iptables, ip6table, arptables እና ebtables ምትክ ሆኖ በማደግ ላይ. የ nftables ጥቅል በተጠቃሚ ቦታ ውስጥ የሚሰሩ የፓኬት ማጣሪያ ክፍሎችን ያካትታል፣ የከርነል ደረጃ ስራው ደግሞ በ nf_tables ንዑስ ሲስተም የቀረበ ሲሆን 3.13 ከተለቀቀ በኋላ የሊኑክስ ከርነል አካል ነው።

የከርነል ደረጃ ከፓኬቶች መረጃን ለማውጣት፣ የውሂብ ስራዎችን ለማከናወን እና ፍሰትን ለመቆጣጠር መሰረታዊ ተግባራትን የሚሰጥ አጠቃላይ ፕሮቶኮል-ገለልተኛ በይነገጽ ብቻ ይሰጣል።
የማጣራት አመክንዮ እራሱ እና ፕሮቶኮል-ተኮር ተቆጣጣሪዎች በተጠቃሚ ቦታ ውስጥ ወደ ባይትኮድ ይሰበሰባሉ ፣ ከዚያ በኋላ ይህ ባይትኮድ የ Netlink በይነገጽን በመጠቀም ወደ ከርነል ተጭኖ በልዩ ቨርቹዋል ማሽን ውስጥ BPF (በርክሌይ ፓኬት ማጣሪያዎች) ያስታውሳል። ይህ አቀራረብ በከርነል ደረጃ የሚሰራውን የማጣሪያ ኮድ መጠን በከፍተኛ ሁኔታ እንዲቀንሱ እና ሁሉንም የመተንተን ደንቦችን እና ከፕሮቶኮሎች ጋር ለመስራት አመክንዮ ወደ ተጠቃሚ ቦታ እንዲወስዱ ያስችልዎታል።

ዋና ፈጠራዎች፡-

  • የIPsec ድጋፍ፣ በፓኬት፣ IPsec ጥያቄ መታወቂያ እና SPI (የደህንነት መለኪያ ኢንዴክስ) መለያ ላይ በመመስረት የመሿለኪያ አድራሻዎችን ማዛመድ ያስችላል። ለምሳሌ,

    ... ipsec በ ip saddr 192.168.1.0/24
    ... ipsec በ spi 1-65536

    መንገዱ በIPsec ዋሻ ውስጥ የሚያልፍ መሆኑን ማረጋገጥም ይቻላል። ለምሳሌ፣ በአይፒሴክ በኩል ያልሆነውን ትራፊክ ለመዝጋት፡-

    … ማጣሪያ ውፅዓት rt ipsec የጎደለ ጠብታ

  • ለ IGMP (የበይነመረብ ቡድን አስተዳደር ፕሮቶኮል) ድጋፍ። ለምሳሌ፣ መጪ የ IGMP ቡድን አባልነት ጥያቄዎችን ለማስወገድ ህግን መጠቀም ትችላለህ

    nft አክል ደንብ netdev foo bar igmp አይነት የአባልነት-ጥያቄ ቆጣሪ ጠብታ

  • የሽግግር ሰንሰለቶችን ለመወሰን ተለዋዋጮችን የመጠቀም እድል (ዝለል / ጎቶ)። ለምሳሌ:

    dest = ber ይግለጹ
    ደንብ ያክሉ ip foo bar ዝላይ $dest

  • በቲቲኤል እሴቶች ላይ በመመስረት ስርዓተ ክወናዎችን (OS የጣት አሻራ) ለመለየት ጭምብል ድጋፍ። ለምሳሌ፣ በላኪው OS ላይ ተመስርተው እሽጎችን ምልክት ለማድረግ ትዕዛዙን መጠቀም ይችላሉ፡-

    የሜታ ማርክ ስብስብ osf ttl የስም ካርታ መዝለል {"Linux": 0x1,
    "ዊንዶውስ": 0x2,
    "ማክኦኤስ": 0x3,
    "ያልታወቀ": 0x0}
    ... osf ttl ስሪቱን መዝለል "Linux:4.20"

  • ከላኪው የ ARP አድራሻ እና ከዒላማው ስርዓት IPv4 አድራሻ ጋር የማዛመድ ችሎታ. ለምሳሌ፣ ከአድራሻ 192.168.2.1 የተላኩትን የኤአርፒ ፓኬቶች ቆጣሪ ለመጨመር የሚከተለውን ህግ መጠቀም ይችላሉ።

    ጠረጴዛ አርፕ x {
    ሰንሰለት y {
    አይነት ማጣሪያ መንጠቆ ግብዓት ቅድሚያ ማጣሪያ; ፖሊሲ መቀበል;
    አርፕ ሳድድር አይፒ 192.168.2.1 ቆጣሪ ፓኬቶች 1 ባይት 46
    }
    }

  • በፕሮክሲ (tproxy) በኩል ጥያቄዎችን በግልፅ ለማስተላለፍ ድጋፍ። ለምሳሌ ጥሪዎችን ወደፖርት 80 ወደ ፕሮክሲ ወደብ 8080 ለማዞር፡-

    ጠረጴዛ ip x {
    ሰንሰለት y {
    አይነት ማጣሪያ መንጠቆ prerouting ቅድሚያ -150; ፖሊሲ መቀበል;
    tcp dport 80 tproxy እስከ:8080
    }
    }

  • በ SO_MARK ሁነታ በ setsockopt () በኩል የተቀመጠውን ምልክት የበለጠ የማግኘት ችሎታ ያላቸው ሶኬቶችን ምልክት የማድረግ ድጋፍ። ለምሳሌ:

    ሰንጠረዥ inet x {
    ሰንሰለት y {
    አይነት ማጣሪያ መንጠቆ prerouting ቅድሚያ -150; ፖሊሲ መቀበል;
    tcp dport 8080 ማርክ ስብስብ ሶኬት ምልክት
    }
    }

  • ለሰንሰለቶች ቅድሚያ የጽሑፍ ስሞችን ለመጥቀስ ድጋፍ. ለምሳሌ:

    nft አክል ሰንሰለት ip x ጥሬ {አይነት ማጣሪያ መንጠቆ ቅድሚያ የሚሰጠው ጥሬ; }
    nft አክል ሰንሰለት ip x ማጣሪያ {አይነት ማጣሪያ መንጠቆ የቅድሚያ ማጣሪያ; }
    nft አክል ሰንሰለት ip x filter_later {የማጣሪያ መንጠቆን ይተይቡ ቅድሚያ ማጣሪያ + 10; }

  • ለ SELinux መለያዎች (ሴክማርክ) ድጋፍ። ለምሳሌ፣ የ"sshtag" መለያን በSELinux አውድ ውስጥ ለመግለጽ፣ ማሄድ ይችላሉ፡-

    nft add secmark inet filter sshtag "system_u:object_r:ssh_server_packet_t:s0"

    እና ከዚያ ይህን መለያ በህጎቹ ውስጥ ይጠቀሙ፡-

    nft add rule inet ማጣሪያ ግቤት tcp dport 22 meta ሴክማርክ አዘጋጅ "sshtag"

    nft add map inet filter secmapping {አይነት inet_service : secmark; }
    nft add element inet filter secmapping {22: "sshtag"}
    nft add rule inet ማጣሪያ ግቤት ሜታ ሴክማርክ አዘጋጅ tcp dport ካርታ @ ሰከንድ

  • በ /etc/services ፋይል ውስጥ እንደተገለጹት ለፕሮቶኮሎች የተሰጡ ወደቦችን በጽሑፍ መልክ የመግለጽ ችሎታ። ለምሳሌ:

    nft አክል ደንብ xy tcp dport "ssh"
    nft ዝርዝር ruleset -l
    ጠረጴዛ x {
    ሰንሰለት y {
    ...
    tcp dport "ssh"
    }
    }

  • የአውታረ መረብ በይነገጽ አይነት የመፈተሽ ችሎታ. ለምሳሌ:

    ደንብ inet ጥሬ prerouting meta iifkind "vrf" ተቀበል

  • “ተለዋዋጭ” ባንዲራውን በግልፅ በመግለጽ የቅንጅቶችን ይዘቶች በተለዋዋጭ ለማዘመን የተሻሻለ ድጋፍ። ለምሳሌ፣ “s”ን ለማዘመን የምንጭ አድራሻውን ለመጨመር እና ለ30 ሰከንድ ምንም እሽጎች ከሌሉ ግቤቱን እንደገና ለማስጀመር፡-

    ሰንጠረዥ ጨምር x
    ስብስብ xs ያክሉ {ipv4_addr ይተይቡ; መጠን 128; የጊዜ ማብቂያ 30 ዎች; ባንዲራዎች ተለዋዋጭ; }
    ሰንሰለት ይጨምሩ xy {አይነት ማጣሪያ መንጠቆ ግብዓት ቅድሚያ 0; }
    ደንብ xy update @s ያክሉ {ip saddr}

  • የተለየ የጊዜ ማብቂያ ሁኔታን የማዘጋጀት ችሎታ. ለምሳሌ፣ ወደብ 8888 ለሚደርሱ እሽጎች ነባሪውን የጊዜ ማብቂያ ለመሻር የሚከተሉትን መግለፅ ይችላሉ፡-

    የጠረጴዛ አይ ፒ ማጣሪያ
    ct ጊዜው አልፎበታል ጠበኛ-tcp {
    ፕሮቶኮል tcp;
    l3proto ip;
    ፖሊሲ = {የተመሰረተ፡ 100፣ መጠጊያ_ቅርብ፡ 4፣ ዝጋ፡ 4}
    }
    የሰንሰለት ውጤት {
    ...
    tcp dport 8888 ct ጊዜው አልፎበታል "አጥቂ-tcp" አዘጋጅቷል
    }
    }

  • ለኢኔት ቤተሰብ የ NAT ድጋፍ፡

    ሠንጠረዥ inet nat {
    ...
    ip6 daddr ሞተ:: 2:: 1 dnat ሞተ:2::99::
    }

  • የተሻሻለ የትየባ ስህተት ሪፖርት ማድረግ፡

    nft የአክል ሰንሰለት ማጣሪያ ሙከራ

    ስህተት: እንደዚህ ያለ ፋይል ወይም ማውጫ የለም; ጠረጴዛ በቤተሰብ ip ውስጥ “ማጣሪያ” ማለትዎ ነውን?
    ሰንሰለት ማጣሪያ ሙከራ ያክሉ
    ^^^^^

  • በስብስቦች ውስጥ የበይነገጽ ስሞችን የመግለጽ ችሎታ፡-

    sc አዘጋጅ {
    inet_service ይተይቡ። ስም ከሆነ
    ንጥረ ነገሮች = {"ssh" . "eth0" }
    }

  • የዘመነ ሊፈስ የሚችል ደንቦች አገባብ፡-

    nft ሠንጠረዥን ይጨምሩ x
    nft አክል flowtable x ft { መንጠቆ ማስገቢያ ቅድሚያ 0; መሳሪያዎች = {eth0, wlan0}; }
    ...
    nft add rule x forward ip protocol {tcp, udp } flow add @ft

  • የተሻሻለ የJSON ድጋፍ።

ምንጭ: opennet.ru

አስተያየት ያክሉ