nftables پيڪٽ فلٽر 0.9.1 رليز

ترقي جي هڪ سال کان پوء پيش ڪيو پيڪيٽ فلٽر ڇڏڻ nftables 0.9.1iptables، ip6table، arptables ۽ ebtables جي متبادل طور ترقي ڪندي IPv4، IPv6، ARP ۽ نيٽ ورڪ پل لاءِ پيڪٽ فلٽرنگ انٽرفيسز کي متحد ڪري. nftables پيڪيج ۾ پيڪيٽ فلٽر اجزاء شامل آهن جيڪي صارف جي اسپيس ۾ هلن ٿا، جڏهن ته ڪنيبل سطح جو ڪم nf_tables سب سسٽم پاران مهيا ڪيل آهي، جيڪو 3.13 جي ڇڏڻ کان وٺي لينڪس ڪنييل جو حصو آهي.

ڪرنل ليول صرف هڪ عام پروٽوڪول-آزاد انٽرفيس مهيا ڪري ٿو جيڪو پيڪٽ مان ڊيٽا ڪڍڻ، ڊيٽا آپريشن ڪرڻ، ۽ وهڪري ڪنٽرول ڪرڻ لاءِ بنيادي ڪم مهيا ڪري ٿو.
فلٽرنگ منطق پاڻ ۽ پروٽوڪول-مخصوص هينڊلر يوزر اسپيس ۾ بائيٽ ڪوڊ ۾ مرتب ڪيا ويندا آهن، جنهن کان پوءِ هي بائيٽ ڪوڊ نيٽ لنڪ انٽرفيس استعمال ڪندي ڪرنل ۾ لوڊ ڪيو ويندو آهي ۽ بي پي ايف (برڪلي پيڪٽ فلٽرز) جي ياد ڏياريندڙ هڪ خاص ورچوئل مشين ۾ عمل ڪيو ويندو آهي. اهو طريقو توهان کي ڪنييل سطح تي هلندڙ فلٽرنگ ڪوڊ جي سائيز کي خاص طور تي گهٽائڻ جي اجازت ڏئي ٿو ۽ پروٽوڪولن سان ڪم ڪرڻ لاءِ ضابطن ۽ منطق جي تجزيي جي سڀني ڪمن کي يوزر اسپيس ۾ منتقل ڪري ٿو.

مکيه جدت:

  • IPsec سپورٽ، پيڪٽ جي بنياد تي سرنگ پتي جي ميلاپ جي اجازت ڏئي ٿي، IPsec درخواست جي ID، ۽ SPI (سيڪيورٽي پيرا ميٽر انڊيڪس) ٽيگ. مثال طور،

    ... ipsec ip sadr ۾ 192.168.1.0/24
    ... ipsec in spi 1-65536

    اهو پڻ چيڪ ڪرڻ ممڪن آهي ته ڇا رستو هڪ IPsec سرنگ مان گذري ٿو. مثال طور، ٽرئفڪ کي بلاڪ ڪرڻ لاءِ نه IPSec ذريعي:

    … فلٽر آئوٽ پٽ rt ipsec غائب ڊراپ

  • IGMP (انٽرنيٽ گروپ مينيجمينٽ پروٽوڪول) لاءِ سپورٽ. مثال طور، توهان ايندڙ IGMP گروپ رڪنيت جي درخواستن کي رد ڪرڻ لاء هڪ قاعدو استعمال ڪري سگهو ٿا

    nft ضابطو شامل ڪريو netdev foo bar igmp type membership-query counter drop

  • منتقلي زنجيرن کي بيان ڪرڻ لاء متغير استعمال ڪرڻ جو امڪان (جمپ / گوٽو). مثال طور:

    dest = ber جي وضاحت ڪريو
    ضابطو شامل ڪريو ip foo bar jump $dest

  • هيڊر ۾ TTL قدرن جي بنياد تي آپريٽنگ سسٽم (OS فنگر پرنٽ) کي سڃاڻڻ لاءِ ماسڪ لاءِ سپورٽ. مثال طور، موڪليندڙ OS جي بنياد تي پيڪن کي نشانو بڻائڻ لاء، توھان استعمال ڪري سگھو ٿا حڪم:

    ... ميٽا نشان سيٽ osf ttl اسڪپ نالو نقشو { "لينڪس" : 0x1،
    "ونڊوز": 0x2,
    "MacOS": 0x3،
    "اڻڄاتل" : 0x0 }
    ... osf ttl اسڪيپ ورزن "لينڪس: 4.20"

  • موڪليندڙ جي ARP پتي ۽ ٽارگيٽ سسٽم جي IPv4 پتي سان ملائڻ جي صلاحيت. مثال طور، ايڊريس 192.168.2.1 کان موڪليل ARP پيڪٽس جي انسداد کي وڌائڻ لاءِ، توھان ھيٺ ڏنل قاعدو استعمال ڪري سگھو ٿا:

    ٽيبل arp x {
    زنجير y {
    قسم فلٽر ٿلهو ان پٽ ترجيحي فلٽر؛ پاليسي قبول؛
    arp saddr ip 192.168.2.1 انسداد پيڪٽس 1 بائيٽ 46
    }
    }

  • پراکسي (tproxy) ذريعي درخواستن جي شفاف اڳتي وڌڻ لاءِ سپورٽ. مثال طور، ڪالز کي پورٽ 80 ڏانهن پراکسي پورٽ 8080 ڏانهن موٽڻ لاءِ:

    ٽيبل ip x {
    زنجير y {
    قسم فلٽر ٿلهو prerouting priority -150; پاليسي قبول؛
    tcp dport 80 tproxy to :8080
    }
    }

  • SO_MARK موڊ ۾ setsockopt() ذريعي سيٽ مارڪ کي وڌيڪ حاصل ڪرڻ جي صلاحيت سان ساکٽ کي نشانو بڻائڻ لاءِ سپورٽ. مثال طور:

    ٽيبل inet x {
    زنجير y {
    قسم فلٽر ٿلهو prerouting priority -150; پاليسي قبول؛
    tcp dport 8080 نشان سيٽ ساکٽ نشان
    }
    }

  • زنجيرن لاءِ ترجيحي متن جا نالا بيان ڪرڻ لاءِ سپورٽ. مثال طور:

    nft زنجير شامل ڪريو ip x raw { ٽائپ فلٽر ٿلهو اڳوڻو ترجيح خام؛ }
    nft زنجير شامل ڪريو ip x فلٽر { ٽائپ فلٽر ٿلهو پريروٽنگ ترجيحي فلٽر؛ }
    nft زنجير شامل ڪريو ip x filter_later { ٽائپ فلٽر ٿلهو پريروٽنگ ترجيحي فلٽر + 10؛ }

  • SELinux tags (Secmark) لاءِ سپورٽ. مثال طور، SELinux جي حوالي سان "sshtag" ٽيگ جي وضاحت ڪرڻ لاء، توھان ھلائي سگھو ٿا:

    nft شامل ڪريو سيڪ مارڪ انٽ فلٽر sshtag "system_u:object_r:ssh_server_packet_t:s0"

    ۽ پوءِ ھي ليبل استعمال ڪريو ضابطن ۾:

    nft ضابطو شامل ڪريو انٽ فلٽر ان پٽ tcp dport 22 ميٽا سيڪ مارڪ سيٽ “sshtag”

    nft شامل ڪريو نقشو انٽ فلٽر سيڪمپنگ { قسم inet_service : secmark؛ }
    nft عنصر شامل ڪريو انٽ فلٽر سيڪمپنگ {22: "sshtag" }
    nft ضابطو شامل ڪريو انٽ فلٽر ان پٽ ميٽا سيڪ مارڪ سيٽ ڪريو tcp dport map @secmapping

  • ٽيڪسٽ فارم ۾ پروٽوڪول کي مقرر ڪيل بندرگاهن جي وضاحت ڪرڻ جي صلاحيت، جيئن اهي /etc/services فائل ۾ بيان ڪيا ويا آهن. مثال طور:

    nft ضابطو شامل ڪريو xy tcp dport "ssh"
    nft فهرست جو ضابطو -l
    ٽيبل x {
    زنجير y {
    ...
    tcp dport "ssh"
    }
    }

  • نيٽ ورڪ انٽرفيس جو قسم چيڪ ڪرڻ جي صلاحيت. مثال طور:

    ضابطو شامل ڪريو inet raw prerouting meta iifkind "vrf" قبول ڪريو

  • "متحرڪ" پرچم کي واضح طور تي بيان ڪندي سيٽ جي مواد کي متحرڪ طور تي اپڊيٽ ڪرڻ لاء بهتر سپورٽ. مثال طور، ماخذ ايڊريس شامل ڪرڻ لاءِ سيٽ "s" کي اپڊيٽ ڪرڻ ۽ داخلا کي ري سيٽ ڪرڻ لاءِ جيڪڏهن 30 سيڪنڊن لاءِ ڪو به پيڪيٽ نه آهن:

    ٽيبل x شامل ڪريو
    شامل ڪريو سيٽ xs {قسم ipv4_addr؛ سائيز 128؛ وقت ختم 30s؛ متحرڪ پرچم؛ }
    زنجير شامل ڪريو xy { ٽائپ فلٽر ٿلهو ان پٽ ترجيح 0؛ }
    ضابطو شامل ڪريو xy اپڊيٽ @s { ip saddr }

  • هڪ الڳ وقت ختم ڪرڻ جي حالت قائم ڪرڻ جي صلاحيت. مثال طور، پورٽ 8888 تي اچڻ واري پيڪٽس لاءِ ڊفالٽ ٽائيم آئوٽ کي ختم ڪرڻ لاءِ، توھان وضاحت ڪري سگھو ٿا:

    ٽيبل ip فلٽر {
    ct وقت ختم aggressive-tcp {
    پروٽوڪول tcp؛
    l3proto ip؛
    پاليسي = {قائم: 100، بند_انتظار: 4، بند: 4}
    }
    زنجير جي پيداوار {
    ...
    tcp dport 8888 ct ٽائم آئوٽ سيٽ "جارحاڻي-tcp"
    }
    }

  • انٽ خاندان لاءِ NAT سپورٽ:

    ٽيبل انٽ نيٽ {
    ...
    ip6 daddr dead::2::1 dnat to dead:2::99
    }

  • بهتر ٿيل ٽائپو غلطي رپورٽنگ:

    nft زنجير فلٽر ٽيسٽ شامل ڪريو

    غلطي: ڪا به اهڙي فائل يا ڊاريڪٽري؛ ڇا توھان جو مطلب آھي ٽيبل ”فلٽر“ خانداني ip ۾؟
    زنجير فلٽر ٽيسٽ شامل ڪريو
    ^^^^^^

  • سيٽ ۾ انٽرفيس جا نالا بيان ڪرڻ جي صلاحيت:

    مقرر sc {
    inet_service ٽائپ ڪريو. ifname
    عناصر = { "ssh" . "eth0" }
    }

  • اپڊيٽ ٿيل flowtable ضابطا نحو:

    nft ٽيبل x شامل ڪريو
    nft شامل ڪريو flowtable x ft { ٿلهو داخل ڪرڻ جي ترجيح 0؛ ڊوائيسز = {eth0، wlan0}؛ }
    ...
    nft ضابطو شامل ڪريو x فارورڊ ip پروٽوڪول { tcp، udp } وهڪري شامل ڪريو @ft

  • بهتر JSON سپورٽ.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو