آشنایی کامل با فایروال Iptables
آشنایی کامل با فایروال Iptables
فایروال ها ابزار مهمی هستند که می توانند به منظور حفاظت از سرورها و زیرساخت ها پیکربندی شوند. در ا***یستم لینوکس، ابزار iptables به عنوان فایروال به طور گسترده ای استفاده می شود که با چارچوب *****ینگ بسته netfilter هسته (kernel) سیستم عامل در ارتباط است.در این مقاله ما در مورد چگونگی استفاده از iptables و تعامل آن با netfilter و چگونگی ارتباط اجزای مختلف *****ینگ و سیستم mangling در کنار یکدیگر صحبت خواهیم کرد.Netfilter Hooks۵ قلاب یاhook برای netfilter تعریف شده است که برنامه میتواند با آن ها کار کند. هر پکتی که وارد فرایند پردازش میشود با یکی از hook ها در kernel قلاب (hook) میشود. بسته به نوع هر پکت input, output و یا forward قلابی به آن اختصاص داده میشود.در ادامه قلاب هاییکه در پشته پروتکلی شبکه تعریف می شوند به اختصار بیان شده است:
این قلاب توسط هر ترافیک ورودی بلافاصله پس از وارد شدن به پشته شبکه ایجاد خواهد شد. این قلاب قبل از هر تصمیم گیری مسیریابی در مورد ارسال بسته ساخته شده و پردازش می شود.
این قلاب بر روی بسته هایی اعمال می شود که مقصد نهایی آنها سیستم لوکال (local) است (Input).
این قلاب بر روی بسته هایی اعمال می شود که مقصد نهایی آنها هاست دیگری می باشد (forward).
این قلاب بر روی بسته هایی خروجی از سیستم اعمال می شود (Output).
این قلاب بر روی بسته های خروجی یا forward شده درست قبل از خروج از سیستم اعمال می شود.به منظور اولویت بندی اجرای ماژول های هسته بر روی قلاب ها می بایست یک شماره اولویتی برای هر قلاب متصل به آن تعیین شود.IPTables Tables and Chainsفایروال iptables با استفاده از جداولی برای سازماندهی قوانین عمل میکند. این جداول قوانین را طبق نوع تصمیمات طبقه بندی میکند. به عنوان مثال، اگر یک قاعده مربوط به ترجمه آدرس شبکه باشد، آن را به nat table تبدیل می کند.در هر جدول iptables، قوانین در زنجیره های (chain) جداگانه سازماندهی می شوند. در حالی که جداول iptables یک سری قوانین کلی را شامل می شوند، زنجیره های مرتبط با قلاب های netfilter نیز آنها را کنترل می کنند. به طور اساسی chain ها تعیین می کنند که قوانین چه زمانی ارزیابی شوند.همانطور که در ادامه می توان دید، نام های هر chain در netfilterبا نام hook آنها مرتبط است:
آغاز راه اندازی توسط قلاب NF_IP_PRE_ROUTING
آغاز راه اندازی توسط قلاب NF_IP_LOCAL_IN
آغاز راه اندازی توسط قلاب NF_IP_FORWARD
آغاز راه اندازی توسط قلاب NF_IP_LOCAL_OUT
آغاز راه اندازی توسط قلاب NF_IP_POST_ROUTINGتنها پنج hook در kernel مربوط به netfilter وجود دارد، بنابراین chain ای از Tableهای متعدد در هر یک از hook ها ثبت می شود.به عنوان مثال، سه Table دارای زنجیرهای PREROUTING هستند.
هنگامی که این زنجیرها در hook NF_IP_PRE_ROUTING مربوطه ثبت می شوند، آنها یک اولویت را تعیین می کنند که هر کدام یک table’s PREROUTING chain نامیده می شود.
هر یک از قوانین درون زنجیره PREROUTING با بالاترین اولویت قبل از حرکت به زنجیره PREROUTING بعدی ارزیابی می شود.
در ادامه قوانین و نظم هر chain بررسی خواهد شد. ابتدا نگاهی به Table های مختلف iptables می اندازیم.
جدول filter یکی از جداول پرکاربرد در iptables است. Filter tables برای تصمیم گیری در مورد اینکه آیا به یک بسته اجازه داده شود همچنان به مقصد مورد نظر خود برود (ACCEPT) و یا برای انکار درخواست آن است (DROP). در فایروال، به عنوان “***** کردن” بسته شناخته می شود.
جدول nat برای استفاده از قوانین ترجمه آدرس شبکه مورد استفاده قرار می گیرد. همان طور که بسته ها به پشته شبکه وارد می شوند، قواعد در این جدول تعیین می کند که آیا و چگونه می توان آدرس های مبدا یا مقصد را تغییر داد. این جدول در تعیین مسیریابی بسته و هر نوع ترافیک شبکه استفاده می شود. این table معمولا برای هدایت بسته ها به شبکه ها زمانی که دسترسی مستقیم امکان پذیر نیست استفاده می شود.
جدول mangle برای تغییر header های پکت IP استفاده می شود. به عنوان مثال، شما می توانید مقدار TTL (زمان زندگی) یک بسته را تنظیم کنید. این table میتواند بصورت internal kernel برای پردازش بیشتر در جداول دیگر و سایر ابزارهای شبکه بصورت mark شده قرار گیرد.جدول filter سه زنجیره از پیش تعریف شده دارد:
زنجیره forward: به منظور ***** نمودن بسته های مسیریابی شده توسط فایروال استفاده می شود
زنجیره input: به منظور ***** نمودن بسته های ورودی به فایروال استفاده می شود
زنجیره output: به منظور ***** نمودن بسته های خروجی از فایروال استفاده می شودجدول nat شامل زنجیره های از پیش تعریف شده زیر می باشد:زنجیره pre-routing: به منظور ترجمه آدرس بسته هایی که مقصد شان می بایست تغییر داده شوند استفاده می شودزنجیره post-routing: به منظور ترجمه آدرس بسته هایی که مبدا شان می بایست تغییر داده شوند استفاده می شود
زنجیره output: به منظور ترجمه آدرس بسته های خروجی از فایروال استفاده می شودشکل زیر نحوه پردازش بسته ها توسط فایروال را به اختصار نشان می دهد
توجه: اگر بسته ای توسط فایروال (سیستم محلی) ایجاد شود، از زنجیره prerouting عبور نمی کند.
جدول mangle:جدول mangle برای تغییر اختصاصی بسته ها می باشد.این عمل از طریق تغییر بیتهای QoS (تظمین کیفیت) در هدر بسته TCP انجام می شود. جدول mangle شامل زنجیره های زیر می باشد:زنجیره PREROUTINGزنجیره OUTPUTزنجیره FORWARDزنجیره INPUTزنجیره POSTROUTING
جدول raw:جدول raw برای پیکربندی استثناعات استفاده می شود.
جدول raw شامل زنجیره های زیر می باشد:زنجیره PREROUTINGزنجیره OUTPUTمقادیر هدفدر نهایت مقادیر زیر می توانند به منظور قبول و یا رد بسته های موجود در زنجیره های مختلف هر جدول استفاده شوند:ACCEPT: برای قبول بسته توسط فایروالDROP: برای رد نمودن بسته توسط فایروالQUEUE: برای واگذار نمودن پردازش بسته توسط فضای کاربریRETURN: به منظور متوقف نمودن ادامه پردازش های قوانین موجود در زنجیره فعلی و از سرگیری ادامه پردازش از زنجیره فراخواننده