آموزش دایرکت ادمین، سی پنل، وب سایت پنل

خانه / امنیت / آشنایی کامل با فایروال Iptables

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

آشنایی کامل با فایروال Iptables
امتیاز بدهید

Iptables and Netfilter Architecture

فایروال ها ابزار مهمی هستند که می توانند به منظور حفاظت از سرورها و زیرساخت ها پیکربندی شوند. در اکوسیستم لینوکس، ابزار 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: به منظور ترجمه آدرس بسته های خروجی از فایروال استفاده می شود

شکل زیر نحوه پردازش بسته ها توسط فایروال را به اختصار نشان می دهد

PACKET IN

|

PREROUTING–[routing]–>–FORWARD–>–POSTROUTING–>–OUT

– nat (dst)   |           – filter      – nat (src)

|                            |

|                            |

INPUT                       OUTPUT

– filter                    – nat (dst)

|                          – filter

|                            |

`—–>—–[app]—–>——‘

توجه: اگر بسته ای توسط فایروال (سیستم محلی) ایجاد شود، از زنجیره prerouting عبور نمی کند.

جدول mangle:

جدول mangle برای تغییر اختصاصی بسته ها می باشد.این عمل از طریق تغییر بیتهای QoS (تظمین کیفیت) در هدر بسته TCP انجام می شود. جدول mangle شامل زنجیره های زیر می باشد:

زنجیره PREROUTING

زنجیره OUTPUT

زنجیره FORWARD

زنجیره INPUT

زنجیره POSTROUTING

جدول raw:

جدول raw برای پیکربندی استثناعات استفاده می شود. جدول raw شامل زنجیره های زیر می باشد:

زنجیره PREROUTING

زنجیره OUTPUT

مقادیر هدف

در نهایت مقادیر زیر می توانند به منظور قبول و یا رد بسته های موجود در زنجیره های مختلف هر جدول استفاده شوند:

ACCEPT: برای قبول بسته توسط فایروال

DROP: برای رد نمودن بسته توسط فایروال

QUEUE:  برای واگذار نمودن پردازش بسته توسط فضای کاربری

RETURN: به منظور متوقف نمودن ادامه پردازش های قوانین موجود در زنجیره فعلی و از سرگیری ادامه پردازش از زنجیره فراخواننده