فایروال در توزیع های لینوکسی – بخش دوم

فایروال در توزیع های لینوکسی – بخش دوم

در اولین بخش با اساس و کاربرد های فایروال و محیط گرافیکی آن در لینوکس اشنا شدید. در این پست با ساختار iptables و چگونگی استفاده از دستور iptables آشنا می شود. فایل پیش فرضی که iptables از آن برای ذخیره سازی قوانین استفاده می کند etc/sysconfig/iptables/ است. فایروال ها مجموعه ای قوانین هستند که بر بسته های ارسالی مابین دو سیستم نظارت دارند.

یک مثال استفاده از دستور iptables بصورت زیر است.

iptables  -A  chain  -j  target

در iptables سه جدول از قبل تعریف شده زیر است :

  • filter : برای کنترل و محدود کردن بر بسته های ارسالی. جدول پیش فرض است. با استفاده از سوئیچ t- از دستور iptables جدول را تعیین می کنیم. اگر سوئیچ t- برای تعیین جدول استفاده نشود، بصورت پیش فرض جدول filter تعیین می شود.
  • nat : برای پیاده سازی nat
  • mangle : برای نشانه گذاری یا mangling کردن یک بسته در شبکه.

iptables مجموعه ای از قوانین که در قالب chain ها پیاده سازی می شوند. هر زنجیر شامل یک یا چند Rule یا قانون است. زنجیره ها در قالب جدول یا Table ها دسته بندی می شوند. هر جدول از تعدادی زنجیره تشکیل شده است. سه جدول پیش فرض گفته شده دارای زنجیر های زیر هستند. توجه کنید که نمی توان جدول و زنجیره های پیش فرض را پاک کرد. ساختار iptables بصورت زیر است.

iptables -> Tables -> Chains -> Rules

زنجیره های جدول filter

  • INPUT : برای بسته های ورودی به سیستم از یک مقصد استفاده می شود.
  • OUTPUT : برای بسته های خروجی از سیستم به یک مقصد استفاده می شود.
  • FORWARD : برای ارسال بسته ها به واسطه NAT استفاده می شود.

زنجیره های جدول nat

  • PREROUTING : پیش از Routing (مسیریابی) بسته ها آنها را تغییر می دهد. زمانی که یک بسته از یک ماشین محلی می رسد می توان آدرس مقصد را تغییر داد که معمولن در DNAT استفاده می شوند.
  • OUTPUT : بسته های تولید شده در ماشین محلی (ماشین که قانون در زنجیره OUTPUT در آن تعریف شده) پیش از ارسال تغییر می دهد.
  • POSTROUTING : پس از Routing بسته، آنرا تغییر می دهد. مانند زمانی که بسته سیستم را ترک می کند. (منظو سیستمی که NAT روی آن قرار دارد).

زنجیره های جدول mangle

  • PREROUTING
  • OUTPUT
  • FORWARD
  • INPUT
  • POSTROUTIN

سوئیج A- برای Append کردن قانون به انتهای جدول استفاده می شود. پس از Append کردن قانون به انتهای لیست قوانین در جدول اضافه شده و به هنگام ورود یک بسته این لیست از بالا به پایین خوانده می شود. سوئیچ j- برای تعیین target برای Rule استفاده می شود. سه target زیر در iptables وجود دارد :

  • ACCEPT : بسته را دریافت می کند. اگر بسته با قانونی تطلبیق پیدا کند، فایروال آنرا قبول می کند.
  • DROP : اگر بسته ای با قانون تطبیق پیدا کند، فایروال بدون هیچ پیغامی به مبدا آن بسته را بیرون می اندازد.
  • REJECT : مانند DROP بسته را بیرون می اندازد ولی یک پیغام خطا به فرستنده بسته ارسال می کند.

سوئیچ های پراستفاده

A- : برای Append کردن یک قانون به انتهای زنجیره در جدول تعیین شده با سوئیچ t-

D- : برای حذف یک قانون از زنجیره ای که قانون در آن وجود دارد. باید عینن همان خط قانونی که به زنجیره اضافه کردید را برای پاک شدن بنویسید.

I- : برای Insert کردن قانون به زنجیره استفاده می شود.

R- : برای Replace کردن قانون به زنجیره استفاده می شود.

L- : برای لیست کردن قانون های یک زنجیره خاص یا تمامی زنجیره استفاده می شود.

iptables   -L  CHAIN_NAME

iptables   -L   CHAIN_NAME   -t   TABLE_NAME

مثال زیر تمامی قوانین تعریف شده در زنجیره INPUT از جدول filter را نشان می دهد.

iptables   -L  INPUT  -t  filter

خروجی :

بطور مثال در خط icmp اجازه ارسال بسته ها از هر منبعی به هر مقصدی داده شده است. منظور از anywhere در مقصد اینکه شاید چندین کارت شبکه روی ماشینی که فایروالش تنظیم شده وجود داشته باشد. با استفاده از دستور های زیر فهرست قوانین تعریف شده در تمامی زنجیره های جداول filter,nat و mangle نشان داده می شود:

iptables   -t filter    -L

iptables   -t  nat  -L

iptables   -t  mangle   -L

N- : برای تعیین یک زنجیره یا Chain جدید استفاده می شود.

برای اطلاع بیشتر از سوئیچ های دستور iptables دستور زیر را در خط فرمان اجرا کنید.

iptables  -h

همچنین با سوئیچ V- نسخه iptables نسان داده می شود.

iptables  -V

iptables v1.4.7

دقت کنید که نام سه جدول پیش فرض با حروف کوچک و نام زنجیره های پیش فرض با حروف بزرگ است.iptables به کوچکی و بزرگی نام ها حساس است. همچنین تمامی سوئیچ ها به جز j- و t- با حروف بزرگ هستند.

فایروال در توزیع های لینوکسی – بخش اول

فایروال در توزیع های لینوکسی – بخش سوم