آشنایی کامل با فایروال Iptables

ArMan

کاربر انجمن پارسه دو
کاربر انجمن پارسه
آشنایی کامل با فایروال Iptables

فایروال ها ابزار مهمی هستند که می توانند به منظور حفاظت از سرورها و زیرساخت ها پیکربندی شوند. در ا***یستم لینوکس، ابزار iptables به عنوان فایروال به طور گسترده ای استفاده می شود که با چارچوب *****ینگ بسته netfilter هسته (kernel) سیستم عامل در ارتباط است.در این مقاله ما در مورد چگونگی استفاده از iptables و تعامل آن با netfilter و چگونگی ارتباط اجزای مختلف *****ینگ و سیستم mangling در کنار یکدیگر صحبت خواهیم کرد.Netfilter Hooks۵ قلاب یاhook برای netfilter تعریف شده است که برنامه میتواند با آن ها کار کند. هر پکتی که وارد فرایند پردازش میشود با یکی از hook ها در kernel قلاب (hook) میشود. بسته به نوع هر پکت input, output و یا forward قلابی به آن اختصاص داده میشود.در ادامه قلاب هاییکه در پشته پروتکلی شبکه تعریف می شوند به اختصار بیان شده است:
NF_IP_PRE_ROUTING

این قلاب توسط هر ترافیک ورودی بلافاصله پس از وارد شدن به پشته شبکه ایجاد خواهد شد. این قلاب قبل از هر تصمیم گیری مسیریابی در مورد ارسال بسته ساخته شده و پردازش می شود.
NF_IP_LOCAL_IN

این قلاب بر روی بسته هایی اعمال می شود که مقصد نهایی آنها سیستم لوکال (local) است (Input).
NF_IP_FORWARD

این قلاب بر روی بسته هایی اعمال می شود که مقصد نهایی آنها هاست دیگری می باشد (forward).
NF_IP_LOCAL_OUT

این قلاب بر روی بسته هایی خروجی از سیستم اعمال می شود (Output).
NF_IP_POST_ROUTING

این قلاب بر روی بسته های خروجی یا forward شده درست قبل از خروج از سیستم اعمال می شود.به منظور اولویت بندی اجرای ماژول های هسته بر روی قلاب ها می بایست یک شماره اولویتی برای هر قلاب متصل به آن تعیین شود.IPTables Tables and Chainsفایروال iptables با استفاده از جداولی برای سازماندهی قوانین عمل میکند. این جداول قوانین را طبق نوع تصمیمات طبقه بندی میکند. به عنوان مثال، اگر یک قاعده مربوط به ترجمه آدرس شبکه باشد، آن را به nat table تبدیل می کند.در هر جدول iptables، قوانین در زنجیره های (chain) جداگانه سازماندهی می شوند. در حالی که جداول iptables یک سری قوانین کلی را شامل می شوند، زنجیره های مرتبط با قلاب های netfilter نیز آنها را کنترل می کنند. به طور اساسی chain ها تعیین می کنند که قوانین چه زمانی ارزیابی شوند.همانطور که در ادامه می توان دید، نام های هر chain در netfilterبا نام hook آنها مرتبط است:
PREROUTING

آغاز راه اندازی توسط قلاب NF_IP_PRE_ROUTING
INPUT

آغاز راه اندازی توسط قلاب NF_IP_LOCAL_IN
FORWARD

آغاز راه اندازی توسط قلاب NF_IP_FORWARD
OUTPUT

آغاز راه اندازی توسط قلاب NF_IP_LOCAL_OUT
POSTROUTING

آغاز راه اندازی توسط قلاب 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 Table

جدول filter یکی از جداول پرکاربرد در iptables است. Filter tables برای تصمیم گیری در مورد اینکه آیا به یک بسته اجازه داده شود همچنان به مقصد مورد نظر خود برود (ACCEPT) و یا برای انکار درخواست آن است (DROP). در فایروال، به عنوان “***** کردن” بسته شناخته می شود.
NAT Table

جدول nat برای استفاده از قوانین ترجمه آدرس شبکه مورد استفاده قرار می گیرد. همان طور که بسته ها به پشته شبکه وارد می شوند، قواعد در این جدول تعیین می کند که آیا و چگونه می توان آدرس های مبدا یا مقصد را تغییر داد. این جدول در تعیین مسیریابی بسته و هر نوع ترافیک شبکه استفاده می شود. این table معمولا برای هدایت بسته ها به شبکه ها زمانی که دسترسی مستقیم امکان پذیر نیست استفاده می شود.
Mangle 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مقادیر هدفدر نهایت مقادیر زیر می توانند به منظور قبول و یا رد بسته های موجود در زنجیره های مختلف هر جدول استفاده شوند🉑 برای قبول بسته توسط فایروالDROP: برای رد نمودن بسته توسط فایروالQUEUE: برای واگذار نمودن پردازش بسته توسط فضای کاربریRETURN: به منظور متوقف نمودن ادامه پردازش های قوانین موجود در زنجیره فعلی و از سرگیری ادامه پردازش از زنجیره فراخواننده​
 
عقب
بالا