د یو کال پرمختګ وروسته
د کرنل کچه یوازې یو عمومي پروتوکول - خپلواک انٹرفیس چمتو کوي چې د پاکټونو څخه د ډیټا ایستلو ، د معلوماتو عملیاتو ترسره کولو ، او جریان کنټرول لپاره لومړني دندې چمتو کوي.
د فلټر کولو منطق پخپله او د پروتوکول ځانګړي هینډلرونه د کارونکي ځای کې بایټ کوډ کې تنظیم شوي ، وروسته له دې چې دا بایټ کوډ د Netlink انٹرفیس په کارولو سره کرنل کې بار شوی او په ځانګړي مجازی ماشین کې اجرا کیږي چې د BPF (برکلي پاکټ فلټرونو) یادونه کوي. دا طریقه تاسو ته اجازه درکوي د فلټر کولو کوډ اندازه د پام وړ کمه کړئ چې د کرنل په کچه روان دي او د پروتوکولونو سره کار کولو لپاره د پارس کولو قواعد او منطق ټولې دندې د کارونکي ځای کې حرکت کوي.
اصلي نوښتونه:
- د IPsec ملاتړ، د پاکټ، IPsec غوښتنې ID، او SPI (د امنیت پیرامیټر انډیکس) ټاګ پراساس د تونل پتې سره سمون ته اجازه ورکوي. د مثال په ډول،
... ipsec in ipsadr 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 پراساس پاکټونه په نښه کولو لپاره ، تاسو کولی شئ کمانډ وکاروئ:
... میټا مارک سیټ 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 {
د فلټر هک ډول پریروټینګ لومړیتوب -150؛ پالیسي منل؛
tcp dport 80 tproxy to :8080
}
} - په SO_MARK حالت کې د setsockopt() له لارې د سیټ نښه نور ترلاسه کولو وړتیا سره د نښه کولو ساکټونو لپاره ملاتړ. د مثال په ډول:
جدول inet x {
زنځیر y {
د فلټر هک ډول پریروټینګ لومړیتوب -150؛ پالیسي منل؛
tcp dport 8080 نښه سیټ ساکټ نښه
}
} - د زنځیرونو لپاره د لومړیتوب متن نومونو مشخص کولو لپاره ملاتړ. د مثال په ډول:
nft زنځیر اضافه کړئ ip x raw {ډول فلټر هوک پریروټینګ لومړیتوب خام؛ }
nft زنځیر اضافه کړئ ip x فلټر {ډول فلټر هوک پریروټینګ لومړیتوب فلټر؛ }
nft زنځیر اضافه کړئ ip x filter_later {ډول فلټر هک پریروټینګ لومړیتوب فلټر + 10; } - د SELinux ټګونو لپاره ملاتړ (Secmark). د مثال په توګه، د SELinux په شرایطو کې د "sshtag" ټګ تعریف کولو لپاره، تاسو کولی شئ چل کړئ:
nft د secmark inet فلټر sshtag "system_u:object_r:ssh_server_packet_t:s0" اضافه کړئ
او بیا دا لیبل په قواعدو کې وکاروئ:
nft د قاعدې انیټ فلټر ان پټ tcp dport 22 میټا سیکم مارک سیټ "sshtag" اضافه کړئ
nft د نقشې انیټ فلټر سیکمپینګ اضافه کړئ { ډول inet_service: secmark; }
nft عنصر اضافه کړئ inet فلټر secmapping {22 : "sshtag" }
nft ضابطه اضافه کړئ انیټ فلټر ان پټ میټا سی مارک سیټ 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 ثانیو لپاره کڅوړې شتون نلري:
جدول x اضافه کړئ
سیټ xs اضافه کړئ { type 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 ملاتړ:
جدول inet nat {
...
ip6 daddr مړ::2::1 dnat to dead:2::99
} - د ټایپ غلطی راپور ورکول ښه شوی:
nft د زنځیر فلټر ازموینه اضافه کړئ
تېروتنه: داسې کومه فایل یا لارښود نشته؛ ایا تاسو په کورنۍ ip کې د میز "فلټر" معنی لرئ؟
د زنځیر فلټر ازموینه اضافه کړئ
^^^^^^ - په سیټونو کې د انٹرفیس نومونو مشخص کولو وړتیا:
ټاکل sc {
inet_service ټایپ کړئ. ifname
عناصر = { "ssh" . "eth0" }
} - د فلو میز قواعدو ترکیب تازه شوی:
nft جدول x اضافه کړئ
nft د فلو میز x ft اضافه کړئ { هک داخلیدل لومړیتوب 0؛ وسایل = {eth0, wlan0}; }
...
nft ضمیمه x فارورډ ip پروتوکول {tcp، udp} جریان اضافه کړئ @ft - د JSON ملاتړ ښه شوی.
سرچینه: opennet.ru