Netfilter & IPtables

Netfilter & IPtables



ساختار Netfilter جهت پردازش پویای بسته های شبکه در سیستم عامل لینوکس طراحی و پیاده‌سازی شده است. این مستند ضمن معرفی معماری Netfilter، معماری Iptables به عنوان ابزاری پیاده‌سازی شده بر مبنای Netfilter برای پالایش(Filtering) بسته های شبکه، را مورد بررسی قرار میدهد.

 

  • Netfilter یا ساختار پردازش بسته های شبکه

انجام پردازش دلخواه بر روي بسته‌هاي شبکه ( بسته‌هاي متعلق به پروتکلهاي لاية شبکه ) مستلزم شناخت مناسب Protocol Stack مربوط به پروتکل مربوطه مي‌باشد. Protocol Stack نمايشگر پردازشهاي انجام گرفته بر روي بستة شبکه و همچنين ترتيب آنها در امتداد مسيرهاي پردازشي مي‌باشد.مسيرهاي پردازشي بيان منطقي سير حرکت بستة شبکه در درون سيستم مي‌باشند. مسير عبوري شامل بسته‌هايي مي‌باشد که خواستار عبور از سيستم ما هستند. اين مسير در هنگامي که سيستم به عنوان يک مسيرياب يا دروازه مورد استفاده قرار مي‌گيرد ايجاد مي‌شود. مسير ورودي شامل بسته‌هايي مي‌باشد که از سيستم‌هاي ديگر به هدف سيستم ما گسيل داده ‌شده‌ا‌ند و مسير خروجي نيز بسته‌هايي را شامل مي‌شود که از سيستم ما به سمت سيستم‌هاي ديگر فرستاده شده‌اند.تصميم بر انجام تغيير دلخواه بر روي بستة شبکه مستلزم شناختِ مکان مناسب در مسيرهاي پردازشي، در درون لايه شبکه، و سپس انجام تغيير در پردازش صورت گرفته در آن مکان مي‌باشد. اين موضوع تا اندازه‌اي سلامت ساختار Protocol Stack را به خطر مي‌اندازد.ساختار پردازش، تلاشي براي ايجادِ امکانِ دستکاريِ دلخواهِ بسته‌هاي شبکه بدون ايجادِ تغيير در ساختار Protocol Stack سيستم، مي‌باشد.در اين شيوه براي هر پروتکل، مکانهايي خاص به منظور انجام پردازشهاي دلخواه، در مسيرهاي پردازشي پروتکل مربوطه، تعريف مي‌شوند. خاصيت اصلي اين مکانها توانايي ثبت فانکشنهايِ خواهانِ پردازشِ بسته‌هاي شبکه و نگهداري ترتيبي آنها، بر اساس اولويت، مي‌باشد. هنگامي که يک بستة شبکه در مسير پردازشي خود خواهان عبور از اين نقاط باشد، اين مکانها، بر اساس ترتيب ثبت فانکشنها، بسته را به ترتيب در اختيار تک‌تکِ آنها قرار مي‌دهند. هر فانکشن موظف مي‌باشد تا بعد از انجام پردازش دلخواه، اجازة عبور و يا فرمان حذف بسته را از گردونه صادر کند. اين ساختار در سيستم عامل لينوکس با نام netfilter شناخته مي‌شود.

 

  • NetFilter

netfilter چهارچوبي است براي مديريت و پردازش بسته­هاي شبكه، مستقل از پروتكل مربوطه. از ديدگاه پياده‌سازي، netfilter جايگاهي براي نگهداري ماژولهاي خواهانِ پردازشِ بسته‌هاي شبکه، در قالب مجموعه­هايي با نام hook که توسط پروتکل‌هاي مختلف در netfilter تعريف شده‌اند، مي‌باشد. hookها همان مکانهاي ثبت فانکشنها در تعريف ساختار پردازش مي‌باشند.در صورتي كه بسته­اي خواستار عبور از درون مجموعه­اي مشخص (hook) باشد، اين بسته توسطnetfilter در اختيار تك‌تك ماژولها قرار مي­گيرد، ماژولها مشخص‌كنندة وضعيت بستة عبوري خواهند بود، يعني مي‌توانند بنا به تصميمات خود به آن اجازه عبور بدهند (NF-ACCEPT) ، آن را از گردونه حذف كنند (NF-DROP) و يا آن را براي انجام پردازش در سطح کاربر در صف قرار دهند (NF-QUEUE) و ....پروتكل IP، به منظور مديريت آسان بسته‌هاي IP، پنج مجموعه را در اين چهار چوب تعريف مي‌کند. مي‌توانيد نحوة نامگذاري اين مکانها و نحوة عبور بسته‌هاي IP از درون آنها، را در شکل1 مشاهده کنيد. هر ماژولي كه خواستار بررسي و تعيين وضعيت بسته­هاي IP باشد مي‌تواند خود را در يكي از اين مجموعه­ها ثبت كند.اين گونه رفتار با بسته­هاي IP اين امكان را به ما مي­دهد تا بدون دستكاري در ساختار Protocol stack بتوانيم به اهداف خود، نظير پياده­سازي ديواره‌هاي آتش و انجام اعمال NAT 1 ، دست يابيم.اين ارتباط راهگشاي ما در يافتن مكان مناسب براي مديريت بسته­ها خواهد بود. به عنوان مثال براي انجام عملfiltering مجموعه‌هاي NF-IP-INPUT، NF-IP-OUTPUT، NF-IP-FORWARD انتخاب شده‌اند. بدين صورت، تمام بسته‌هاي عبوري از سيستم تنها در يک مکان بررسي خواهند شد. مثالي ديگر: براي انجام عمل NAT، مجموعه­هاي NF-IP-PREROUTING، NF-IP-OUTPUT براي انجامِ عملِ انتقال آدرس مبداء2 و NF-IP-POSTROUTING براي انتقال آدرس مقصد3 ، انتخاب شده­اند. ِبه هر صورت اين چهارچوب امكان بسيار خوب و ساده­اي را در اختيار پياده­سازان ديواره‌هاي ‌آتش قرار داده است.

 

  • IPtables : ساختار پالايش بسته‌هاي IP

پالايش بسته‌هاي شبکه به معني تقسيم جريان واحد بسته‌ها در قالب جريانهاي مختلف براي انجام پردازش‌هاي متنوع بر روي هر جريان مي‌باشد. هر جريان توسط يک قانون که شرايطي را بر فيلدهاي سرآيند بستة شبکه اعمال مي‌کند، مشخص مي‌شود.ساختار پالايش بسته‌هاي IP (iptables) به دنبال ايجاد چهارچوبي جهت ذخيره‌سازي و مديريتِ مناسب قانونها مي‌باشد. اين ساختار سعي خواهد کرد تا با توجه به استراتژي و سياست خود در مديريت قانونها، امکان تعيين تکليف بسته را با توجه به قانونهاي موجود فراهم آورد.ملزومات هر ساختار پالايش عبارتند از:ساختمان دادة انباره ساختمان دادة قانون رابط مديريت قانونها رابط ايجاد انباره رابط مديريت انباره الگوريتم جستجو رابط تعيين تکليف بسته بدين صورت در پياده‌سازي يک فرآيندِ دسته‌بندي نيازي به پياده‌سازي يک انباره و الگوريتم جستجوي مستقل نخواهد بود، بلکه مي‌توان از ويرايش موجود در ساختار پالايش استفاده کرد. در اين ساختار هر فرآيند مي‌بايست پردازشهاي و تطابقهاي مناسب براي قوانين متعلق به خود را تعريف و همچنين ملزومات لازم براي انجام مناسب آنها را فراهم آورد ( با توجه به اينکه هر قانون شامل چند تطابق و يک پردازش مي‌باشد ).ساختار پالايش بسته‌هاي IP، از تقسيم موضوعي فرآيند دسته‌بندي بسته‌هاي شبکه به منظور ايجاد چندين فرآيند دسته‌بندي، مربوط به موضوعات کاري مختلف (filter, NAT, mangle, …) ،استفاده مي‌کند. طرح اين عمل بدان دليل مي‌باشد که محقق شدن هر موضوع کاري در مکانهاي خاصي از ساختار پالايش بستة IP امکانپذير مي‌باشد، چنانکه عمل NAT هرگز نمي‌تواند در مکان FORWARD انجام شود، چرا که تنها مکانهاي مناسب براي آن قبل و بعد از انجام عمل مسيريابي مي‌باشند، و به همين صورت نمي‌توان عمل filtering را در مکان PREROUTING انجام داد چرا که اين موضوع ناقض قانون تست بسته تنها در يک مکان ( فقط يک مرتبه) در موضوع کاري filter مي‌باشد. در نتيجه به جاي ساخت يک موضوع کاري گنده و وزين با تقسيم آن به موضوعات کاري مختلف که نيازهاي متفاوتي را مي‌طلبند، پياده‌سازي‌هاي جداگانه‌اي را براي هر يک انجام داده است. هر موضوع کاري در ابتداي شروع به کار خود، انباره‌اي را در IPtables با نام خودش ايجاد مي‌کند، و سپس به منظور اعمال قوانين دسته‌بندي، خود را در مکان‌هاي مناسبِ ساختار پردازش بسته‌هاي IP ثبت مي‌کند. ثبت در مکانها با توجه به هدفِ موردِ نظرِ موضوع‌کاري انجام مي‌شود. IPtables به منظور مديريت بهتر بسته‌هاي شبکه فضاي انباره‌هاي خود را به واحدهايي با نام زنجيره4 تقسيم کرده است. هر موضوع کاري در هنگام ايجاد انبارة خود، زنجيره‌هايي5 را متناظر با مکانهاي ثبت در ساختار پردازش بسته‌هاي IP، ايجاد مي‌کند تا بدين طريق مديريت بسته‌هاي عبوري از هر مکان با استفاده از قانونهاي موجود در زنجيرة متعلق بدان مکان انجام شود. وجود زنجيره‌ها در هر انباره، با خصوصيات ذکر شده در بالا، امکان انجام پردازشهاي جداگانه در امتداد مسيرهاي پردازشي مختلف، بر روي بسته‌هاي شبکه، را فراهم مي‌کند. هر موضوع‌کاري با دريافت يک بسته، رابطِ تعيين تکليف بسته (اين رابط يک فانکشن با نام ipt_do_table مي‌باشد) را فراخواني مي‌کند و IPtables نيز با توجه به موضوع‌کاري فراخواننده، انبارة مناسب را، و با توجه به مکان دريافت بسته در ساختار پردازش IP، زنجيرة مربوطه را مشخص و به جستجو در بين قوانين موجود در آن زنجيره به منظور تعيين تکليف بسته مي‌پردازد. انباره‌هاي ايجاد شده در IPtables با نام جدول6 شناخته مي‌شوند، که دليل نامگذاري آن به صورت IPtables وجود جداول مختلف، مربوط به موضوعات کاري گوناگون، مي‌باشد. 1 Network Address Translation 2 Source NAT 3 Destination NAT 4 Chain 5 Builtin Chains 6 Table

برای مطالعه کامل این مقاله می توانید از فایل زیر به صورت انلاین مطالعه کرده و یا با دانلود مقاله مطالعه بفرمایید

 

این مقاله را به صورت کامل با دانلود مستند زیر مطالعه بفرمایید .

دانلود مستند