nftables پیکٹ فلٹر 0.9.1 ریلیز

ترقی کے ایک سال بعد پیش کیا پیکٹ فلٹر کی رہائی nftables 0.9.1، IPv6، IPv4، ARP اور نیٹ ورک پلوں کے لیے پیکٹ فلٹرنگ انٹرفیس کو یکجا کر کے iptables، ip6table، arptables اور ebtables کے متبادل کے طور پر تیار کرنا۔ nftables پیکج میں پیکٹ فلٹر کے اجزاء شامل ہیں جو صارف کی جگہ پر چلتے ہیں، جبکہ کرنل لیول کا کام nf_tables سب سسٹم کے ذریعے فراہم کیا جاتا ہے، جو کہ ریلیز 3.13 کے بعد سے لینکس کرنل کا حصہ ہے۔

کرنل لیول صرف ایک عام پروٹوکول سے آزاد انٹرفیس فراہم کرتا ہے جو پیکٹوں سے ڈیٹا نکالنے، ڈیٹا آپریشنز کرنے، اور فلو کنٹرول کے لیے بنیادی کام فراہم کرتا ہے۔
فلٹرنگ لاجک خود اور پروٹوکول کے مخصوص ہینڈلرز کو یوزر اسپیس میں بائٹ کوڈ میں مرتب کیا جاتا ہے، جس کے بعد یہ بائیک کوڈ نیٹ لنک انٹرفیس کا استعمال کرتے ہوئے کرنل میں لوڈ کیا جاتا ہے اور BPF (برکلے پیکٹ فلٹرز) کی یاد دلانے والی ایک خاص ورچوئل مشین میں عمل میں لایا جاتا ہے۔ یہ نقطہ نظر آپ کو کرنل کی سطح پر چلنے والے فلٹرنگ کوڈ کے سائز کو نمایاں طور پر کم کرنے اور پروٹوکول کے ساتھ کام کرنے کے لیے اصولوں اور منطق کو پارس کرنے کے تمام افعال کو صارف کی جگہ میں منتقل کرنے کی اجازت دیتا ہے۔

اہم اختراعات:

  • IPsec سپورٹ، پیکٹ، IPsec درخواست ID، اور SPI (سیکیورٹی پیرامیٹر انڈیکس) ٹیگ کی بنیاد پر سرنگ کے پتوں کو ملانے کی اجازت دیتا ہے۔ مثال کے طور پر،

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

    یہ جانچنا بھی ممکن ہے کہ آیا کوئی راستہ IPsec سرنگ سے گزرتا ہے۔ مثال کے طور پر، IPSec کے ذریعے ٹریفک کو روکنے کے لیے:

    … فلٹر آؤٹ پٹ rt ipsec غائب ڈراپ

  • IGMP (انٹرنیٹ گروپ مینجمنٹ پروٹوکول) کے لیے سپورٹ۔ مثال کے طور پر، آپ آنے والی IGMP گروپ کی رکنیت کی درخواستوں کو مسترد کرنے کے لیے ایک اصول استعمال کر سکتے ہیں۔

    nft شامل کریں قاعدہ netdev foo bar igmp قسم ممبرشپ-استفسار کاؤنٹر ڈراپ

  • ٹرانزیشن چینز (جمپ/گوٹو) کی وضاحت کے لیے متغیرات کے استعمال کا امکان۔ مثال کے طور پر:

    dest = ber کی وضاحت کریں۔
    رول ip foo bar jump $dest شامل کریں۔

  • ہیڈر میں TTL اقدار کی بنیاد پر آپریٹنگ سسٹمز (OS فنگر پرنٹ) کی شناخت کے لیے ماسک کے لیے سپورٹ۔ مثال کے طور پر، بھیجنے والے OS کی بنیاد پر پیکٹ کو نشان زد کرنے کے لیے، آپ کمانڈ استعمال کر سکتے ہیں:

    ... میٹا مارک سیٹ او ایس ایف ٹی ٹی ایل اسکپ نام کا نقشہ { "لینکس" : 0x1،
    "ونڈوز": 0x2،
    "MacOS": 0x3،
    "نامعلوم" : 0x0 }
    ... osf ttl skip ورژن "Linux:4.20"

  • بھیجنے والے کے ARP ایڈریس اور ٹارگٹ سسٹم کے IPv4 ایڈریس سے ملنے کی صلاحیت۔ مثال کے طور پر، 192.168.2.1 ایڈریس سے بھیجے گئے ARP پیکٹس کے کاؤنٹر کو بڑھانے کے لیے، آپ درج ذیل اصول استعمال کر سکتے ہیں:

    ٹیبل arp x {
    سلسلہ y {
    فلٹر ہک ان پٹ ترجیحی فلٹر ٹائپ کریں۔ پالیسی قبول کریں؛
    اے آر پی صدر آئی پی 192.168.2.1 کاؤنٹر پیکٹ 1 بائٹس 46
    }
    }

  • پراکسی (tproxy) کے ذریعے درخواستوں کے شفاف آگے بھیجنے کے لیے معاونت۔ مثال کے طور پر، کالز کو پورٹ 80 پر پراکسی پورٹ 8080 پر ری ڈائریکٹ کرنے کے لیے:

    ٹیبل ip x {
    سلسلہ y {
    قسم فلٹر ہک prerouting ترجیح -150; پالیسی قبول کریں؛
    tcp dport 80 tproxy to :8080
    }
    }

  • SO_MARK موڈ میں setsockopt() کے ذریعے سیٹ مارک کو مزید حاصل کرنے کی صلاحیت کے ساتھ ساکٹ کو نشان زد کرنے کے لیے معاونت۔ مثال کے طور پر:

    ٹیبل انیٹ ایکس {
    سلسلہ y {
    قسم فلٹر ہک prerouting ترجیح -150; پالیسی قبول کریں؛
    ٹی سی پی ڈیپورٹ 8080 مارک سیٹ ساکٹ مارک
    }
    }

  • زنجیروں کے لیے ترجیحی متن کے ناموں کی وضاحت کے لیے معاونت۔ مثال کے طور پر:

    این ایف ٹی شامل کریں چین آئی پی ایکس را { ٹائپ فلٹر ہک پری روٹنگ ترجیح خام؛ }
    این ایف ٹی شامل کریں چین آئی پی ایکس فلٹر { ٹائپ فلٹر ہک پری روٹنگ ترجیحی فلٹر؛ }
    nft چین شامل کریں ip x filter_later { ٹائپ فلٹر ہک پری روٹنگ ترجیحی فلٹر + 10؛ }

  • SELinux ٹیگز (Secmark) کے لیے سپورٹ۔ مثال کے طور پر، SELinux سیاق و سباق میں "sshtag" ٹیگ کی وضاحت کرنے کے لیے، آپ چلا سکتے ہیں:

    nft secmark inet فلٹر sshtag شامل کریں "system_u:object_r:ssh_server_packet_t:s0"

    اور پھر اس لیبل کو قواعد میں استعمال کریں:

    این ایف ٹی شامل کریں رول انیٹ فلٹر ان پٹ tcp dport 22 میٹا سی مارک سیٹ "sshtag"

    این ایف ٹی میں نقشہ انیٹ فلٹر سیک میپنگ شامل کریں { قسم inet_service : secmark؛ }
    این ایف ٹی ایلیمنٹ انیٹ فلٹر سیکی میپنگ شامل کریں { 22 : "sshtag" }
    این ایف ٹی شامل کریں رول انیٹ فلٹر ان پٹ میٹا سی مارک سیٹ tcp dport نقشہ @secmapping

  • متن کی شکل میں پروٹوکول کو تفویض کردہ بندرگاہوں کی وضاحت کرنے کی صلاحیت، جیسا کہ ان کی وضاحت /etc/services فائل میں کی گئی ہے۔ مثال کے طور پر:

    nft ضابطہ شامل کریں xy tcp dport "ssh"
    nft فہرست کے قواعد سیٹ -l
    میز x {
    سلسلہ y {
    ...
    tcp dport "ssh"
    }
    }

  • نیٹ ورک انٹرفیس کی قسم چیک کرنے کی صلاحیت۔ مثال کے طور پر:

    رول inet raw prerouting meta iifkind "vrf" کو قبول کریں۔

  • واضح طور پر "متحرک" پرچم کی وضاحت کرکے سیٹوں کے مواد کو متحرک طور پر اپ ڈیٹ کرنے کے لیے بہتر تعاون۔ مثال کے طور پر، ماخذ کا پتہ شامل کرنے کے لیے سیٹ "s" کو اپ ڈیٹ کرنا اور اگر 30 سیکنڈ کے لیے کوئی پیکٹ نہیں ہے تو اندراج کو دوبارہ ترتیب دینا:

    ٹیبل ایکس شامل کریں۔
    سیٹ xs شامل کریں { type ipv4_addr; سائز 128؛ ٹائم آؤٹ 30s؛ جھنڈے متحرک؛ }
    چین xy شامل کریں { ٹائپ فلٹر ہک ان پٹ ترجیح 0؛ }
    قاعدہ xy اپ ڈیٹ @s { ip saddr } شامل کریں

  • ٹائم آؤٹ کی ایک الگ شرط مقرر کرنے کی اہلیت۔ مثال کے طور پر، پورٹ 8888 پر آنے والے پیکٹوں کے لیے طے شدہ ٹائم آؤٹ کو اوور رائیڈ کرنے کے لیے، آپ وضاحت کر سکتے ہیں:

    ٹیبل آئی پی فلٹر {
    سی ٹی ٹائم آؤٹ 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 چین فلٹر ٹیسٹ شامل کریں۔

    خرابی: ایسی کوئی فائل یا ڈائریکٹری نہیں؛ کیا آپ کا مطلب فیملی آئی پی میں ٹیبل "فلٹر" ہے؟
    چین فلٹر ٹیسٹ شامل کریں
    ^^^^^^^

  • سیٹ میں انٹرفیس کے ناموں کی وضاحت کرنے کی اہلیت:

    سیٹ sc {
    inet_service ٹائپ کریں۔ ifname
    عناصر = { "ssh"۔ "eth0" }
    }

  • فلو ٹیبل رولز نحو کو اپ ڈیٹ کیا گیا:

    nft ٹیبل ایکس شامل کریں۔
    nft فلو ٹیبل x ft شامل کریں { ہک انگریس ترجیح 0؛ آلات = {eth0, wlan0}; }
    ...
    nft رول ایکس فارورڈ آئی پی پروٹوکول { tcp، udp } فلو ایڈ @ft شامل کریں۔

  • بہتر JSON سپورٹ۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں