از آنجاییکه که دیواره آتش میکروتیک از کرنل بهینه سازی شده لینوکسی بهمراه مجموعه NetFilter بهره می گیرد ، پس برای درک بهتر اصول و قوائد نحوه کار دیواره آتش میکروتیک باید اصول Netfilter در لینوکس مورد بررسی قرار گیرد.

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

مطلب زیر اقتباسی از سایت   http://www.webhostingtalk.ir   می باشد که با توجه به تجربیات شخصی ویرایش شده است


زنجیره های کلی عبارتند از :

  1. زنجیره PreRouting
  2. زنجیره Forward
  3. زنجیره Input
  4. زنجیره Outout
  5. زنجیره PostRouting

جدول های کلی شامل :

  1. جدول Filter
  2. جدول Nat
  3. جدول Mangle


نکته :
تعداد زنجیره ها در لینوکس قابل افزایش هستند ولی در میکروتیک این امر امکان پذیر نیست.
هر زمان بسته ای وارد میکروتیک شود ، از این زنجیره ها عبور کرده و در جدول ها مورد پردازش قرار می گیرد.
لازمه ی دانستن چگونگی تنظیمات دیواره آتش میکروتیک داشتن درک خوب نسبت به مراحل گذر بسته ها از زنجیره ها و جدول های مختلف می باشد.
مراحل گذر بسته در شکل زیرآورده شده است.

شکل یک

سوال مهم که در اینجا مطرح می شود اینست که بسته ها چگونه و از چه زنجیره هایی عبور می کنند؟
در هنگام بررسی زنجیره ها می بایست به این نکته توجه داشته باشید که یک بسته از همه ی زنجیره ها عبور نمی کند و با توجه به این که بسته متعلق به خود سیستم می باشد یا سیستم دیگری ، مراحل عبور از زنجیره ها متفاوت می باشد.
همانطور که در شکل مشخص شده است ، بلافاصله بعد از اینکه بسته ای به میکروتیک برسد ، فارغ از اینکه متعلق به کجاست و به کجا می رود، ابتدا وارد زنجیره Prerouting می شود.بعد از این وارد مرحله مسیریابی شده و مقصد بعدی بسته و جهت حرکت بسته مشخص خواهد شد.
  • اگر بسته متعلق به سیستم دیگری باشد وارد زنجیره Forward شده وسپس زنجیره Postrouting را طی می کند. (Forward یعنی در حال عبور از میکروتیک مثلا از بیرون به داخل شبکه و یا بالعکس که در Chain میکروتیک برخورد می شود مثلا telnet یا vnc از بیرون شبکه به کلاینتی داخل شبکه که روتر میکروتیک سر راه باشه)

  • اگر بسته متعلق به خود میکروتیک باشد ابتدا وارد زنجیره Input شده و پردازش های داخلی بر روی آن صورت می گیرد. (Input یعنی بسته از داخل شبکه داخلی مرتبط با پورتی به داخل میکروتیک هدایت بشه مثلا پینگ IP خود میکروتیک )

  • اگر آغازگر بسته ای خود میکروتیک باشد ابتدا وارد زنجیره Output شده و سپس زنجیره Postrouting را طی می کند.(Output یعنی بسته از میکروتیک به داخل شبکه داخلی مرتبط با پورتی از میکروتیک هدایت بشه مثلا پینگ IP کلاینتی از طرف میکروتیک)

شکل 2
اشتباه رایج اکثر افراد در این است که تصور می کنند زنجیره Input و Output بر روی بسته هایی که متعلق به میکروتیک نیست نیز اثرگذار است در حالیکه اگر به شکل 1 به دقت نگاه شود ،متوجه خواهید شد که برای بسته های عبوری، این دو زنجیره پردازشی صورت نخواهند داد.
در شکل 2 مسیرهای مختلف توضیح داده شده در بالا با رنگ های متفاوت آورده شده است. (دیاگرام سه مورد گفته شده در فوق)
  • کاربرد جدول ها در زنجیره ها

قبل از بررسی عملکرد جدول در زنجیره ها نیاز است که ساختار بسته ها را بخوبی بشناسید.مهمترین بخش بسته هدر می باشد که ساختار آن در شکل 3 آورده شده است.
هدر در ابتدای بسته قرار می گیرد و شامل فیلدهایی می باشد که اطلاعات مربوط به بسته مانند آدرس مبدا و مقصد ، درگاه مبدا و مقصد و ... در آن قرار می گیرد.در واقع مسیریابها ،سوییچ ها و دیگر دستگاه ها با بررسی هدر بسته ها به اطلاعاتی راجع به آنها دست پیدا می کنند و عملیات مورد نیاز را بر روی آنها انجام می دهند.
شکل 3
 
در زنجیره ها با بررسی آدرس مقصد در فیلد Destination Address زنجیره بعدی مشخص می شود و از فیلد Source Address مشخص کننده اینست که آغاز گر بسته میکروتیک یا سیستم دیگری در شبکه بوده است.

  • جدول Filter


هدف اصلی در جدول Filter ، فیلترینینگ بسته ها بر اساس سیاست های امنیتی تعریف شده در مجموعه می باشد.در جدول Filter  بسته هایی که اجازه عبور دارند و بسته های غیر مجاز که باید Filter  شوند تعیین می شود.
امکان فیلتر بسته ها بر اساس آدرس مبدا و مقصد ، درگاه مبدا و مقصد ، زمان عبور بسته ها ، وضعیت ارتباط ، محتوا ، TOS ، TTL، بسته های نشانه گذاری شده در منگل و بسیاری گزینه های دیگر وجود دارد.

حال که اطلاعاتی در ارتباط با زنجیره ها و جدول های تشکیل دهنده آن کسب کردید ، مهترین نکته در استفاده از دیواره آتش میکروتیک ، انتخاب درست زنجیره و جدول مورد استفاده می باشد.این انتخاب با توجه به کارکرد مورد نظر و شناختی که بعد از معرفی زنجیره ، جدول و مسیر عبوری بسته ها بدست آوردید ، حاصل می شود.


توجه داشته باشید که ترتیب قرار گیری جدول ها در زنجیره ها مهم می باشد ، همیشه در یک زنجیره اولیت با جدولی منگل سپس نت و در آخر Filter می باشد  و در هر زنجیر نیت اولویت با رول rule های بالاتر  می باشد

  • جدول Mangle   

جدول منگل در تعریف ساده برای دستکاری بسته ها مورد استفاده قرار می گیرد و در اصل برای شرط گذاری روی بسته ها و به اصطلاح PBR  - Policy Base Routing می باشدمثلا اگر کاربر از گروه و محدوه IP بخش حسابداری بود به مودم اینترنت شماره یک ارجاع داده بشه ودر کل منگل سه هدف عمده را دنبال می کند :
  1. (TOS  - (Type of Service
  2. (TTL - (Time To Live
  3. Mark

TOS
از طریق منگل می توان فیلد (TOS (Type of Service  هدر بسته را تغییر داد. این تنظیم در اکثر روتر ها ، فایروال ها و ... بی تاثیر است مگر اینکه در سیاست های تنظیماتی در مسیریابی ، فیلترینگ ، Quality of Service) QOS) و ... مورد استفاده قرار گیرد.

TTL
از طریق منگل می توان فیلد (TTL (Time To Live  در هدر بسته را تغییر داد.فیلد TTL برای این منظور است که بسته های سرگردان بعد از مدتی از بین برند ،بدین ترتیب که بسته از هر روتر ( به اصطلاح HOP ) که عبور می کند ،یکی از مقدار TTL کم می شود تا نهایتا مقدار آن به صفر برسید و بسته از بین برود.
Reply from 192.168.88.1: bytes=32 time<1ms TTL=64

در صورتیکه از TTL استفاده نمی شد ، حلقه هایی با تکرار بی نهایت اتفاق می افتاد که با گسترش سریع این حلقه ها ، به مرور کل شبکه از فعالیت باز می ایستاد.
شکل 4
یکی از کاربردهای تغییر TTL اینست که با تعییر TTL می توان عملیات هایی که در شبکه ما رخ می دهد را تا حدودی مخفی کرد.بعضی خرابکاران از طریق مقدار TTL به نوع سیستم عامل یا دستگاه های موجود در شبکه پی می برند یا سرویس دهندگان اینترنت از طریق TTL می توانند متوجه شوند که آیا سرویس گرفته شده بین چندین سیستم به اشتراک گذاشته شده است یا خیر.

Mark
جدول منگل این قابلیت را دارد که از طریق آن بسته ها را نشانه گذاری کرد و از این نشانه ها می توان در فیلترینگ  ، مسیریابی و کنترل پهنای باند استفاده کرد.

مثال: مارک دار کردن بسته های خروجی از شبکه 192.168.88.0/24 با مارک Blue

ip firewall mangle add chain=prerouting action=mark-routing new -routing-mark=Blue src-address=192.168.88.0/24

  • جدول NAT


جدول (NAT (Network Address Translation فقط برای ترجمه آدرس در بسته های مختلف مورد استفاده قرار می گیرد.ترجمه آدرس هم می تواند بر روی آدرس مبدا صورت پذیرد و هم بر روی آدرس مقصد.

سه عملیات اصلی جدول NAT عبارت اند از :

  1. DNAT-DstNat
  2. SNAT-SrcNat
  3. MASQUERADE



DNAT
عملیات (DNAT ( Destination Netowrk Address Translation برای ترجمه آدرس مقصد بسته استفاده می شود. (تبدیل یک IP به یک IP - در مقابل عمل PAT در برخی روترها که چند IP به یک IP بر اساس پورت تبدیل می شود. Pat  در میکروتیک جداگانه وجود ندارد) بیشترین کاربرد DNAT در محیط های DMZ می باشد. مثلا اپر بخواهیم از بیرون شبکه مثلا از اینترنت به داخل شبکه ریموت بزنیم از این روش استفاده می کنیم و آدرس اینترنتی را به یک آدرس درون شبکه ای تبدیل و ترانسفر می کنبم


فرض کنید شبکه ای مطابق شکل 5 داشته باشید :

شکل 5
کاربری از طریق اینترنت می خواهد وبسایت داخلی شرکت (مثلا لوکال هاست ساخته شده بر یک سیستم) واقع در شبکه داخلی با آدرس 10.1.10.100 را مشاهده کند ، ولی این آدرس خصوصی است و از طریق اینترنت قابل دسترسی نیست.
راه حل این است که به کاربر، آدرس عمومی شبکه یعنی 200.150.10.3 که از اینترنت در دسترس است را داده و بر روی میکروتیک بوسیله DNAT آدرس مقصد یعنی 200.150.10.3 را به 10.1.10.100 ترجمه کرده تا وبسایت قابل مشاهده گردد.

SNAT
عملیات (SNAT ( Source Network Address Translation بر خلاف DNAT برای ترجمه آدرس صورت مورد استفاده قرار می گیرد.زمانیکه سیستمی در شبکه داخلی بخواهد به منابع مختلف موجود در اینترنت از قبیل صفحات وب ، پست الکترونیکی ، سرورهای انتقال فایل و ... دسترسی داشته باشد ، باید از یک آدرس عمومی برای این منظور استفاده شود ، این در حالیست که سیستم در شبکه داخلی از آدرس خصوصی استفاده می کند ، پس باید آدرس خصوصی به یک آدرس عمومی اینترنتی ترجمه شود که به این عملیات SNAT گویند.
علت استفاده از آدرس خصوصی مثل 192.168.1.0/24 در شبکه ها معمولا به دلایل امنیتی یا کمبود آدرس عمومی می باشد.
(برای توضیحاتی در مورد انواع نشانی های IP به این لینک مراجعه نمایید: 

آموزش کامل subnetting (مفاهیم IP adresses - Subnet Mask-Gateway )

درجدول زیر، در جدول یک ، کاربر با IP داخلی و خصوصی 10.1.10.100  (IP InValid or Private)  درخواست صفحه گوگل با IP عمومی IP Valid or Public) 4.2.2.4) دارد لذا روتر برچسبی در هنگام دریافت درخواست و پکت به آن اضافه می کند که شامل پورت درخواست کننده 5050 و پورت ارسال شونده و دریافت کننده پاسخ نهایی به سمت روتر 80 می باشد و پس از دریافت از سرور گوگل 4.2.2.4 ، گوگل پاسخ را به IP عمومی 200.150.10.2 می فرستد نه به 10.1.10.100 ، چون IP دوم خصوصی داخل شبکه بوده و برای سرور گوگل قابل شناسایی در اینترنت نیست . پس از رسیدن بسته جواب به روتر، روتر بر اساس پورت  برچسب خورده، کلاینت مبدا را شناسایی و به آن تحویل می دهد. که در اصل یک نوع PAT می باشد.
............... 10.1.10.100
............... 4.2.2.4
جدول یک
................ 5050 200.150.10.2
................ 80 4.2.2.4
جدول دو


شکل 6
MASQUERADE

عملیات MASQUERADE دقیقا همانند SNAT می باشد با این تفاوت که برای هر بار فرخوانی عملیات MASQUERADE برای یک بسته ، سیستم بصورت خودکار بدنبال آدرس عمومی که برای ترجمه مورد نیاز است ، می گردد. در SNAT نیاز به یک IP عمومی ثبت شده برای روتر می باشد ولی در اینجا که معمولا در مودم ها و روتر های معمولی استفاده می شود به یک نشانی اینترنتی عمومی دلخواه ترجمه می شود.
پس MASQUERADE بار و عملیات اضافی به سیستم تحمیل می کند ، هر چند امتیاز بزرگی نسبت به SNAT دارد و آن اینست که با هر بار تغییر آدرس عمومی ، تغییری در عملکرد سیستم به وجود نمی آید.


بعضی از سرویس دهندگان از طریق DHCP ، PPPoE ، VPN و ... اینترنت در اختیار مشترکان قرار می دهند که با هر قطع و وصل شدن ارتباط و سیستم ، آدرس عمومی تغییر خواهد کرد ، پس ناگریز به استفاده از MASQUERADE خواهید بود.




  • انتخاب زنجیره بر اساس جدول ها


Filter
همانطور که قبلا گفته شد: برای فیلتر کردن زنجیره های Input , Output و Forward مورد استفاده قرار می گیرد.

  • اگر مبدا و مقصد بسته سیستم دیگری جز میکروتیک می باشد و میکروتیک فقط سر راه انتقال و عبور بسته باشد از زنجیره Forward استفاده کنید. (عبوری از میکروتیک)
  • اگر مبدا بسته میکروتیک و مقصد سیستم دیگری باشد از زنجیره Output استفاده کنید. (خروجی از میکروتیک)
  • اگر مبدا بسته سیستم دیگر و مقصد میکروتیک باشد از زنجیره Input استفاده کنید. (ورودی میکروتیک)


Nat

  • اگر می خواهید عملیات SNAT یا MASQUERADE را بکار بگیرید ، از زنجیره POSTROUTING استفاده کنید.
  • اگر می خواهید عملیات DNAT را بکار بگیرید ، از زنجیره PREROUTING استفاده کنید.


نکته:

  • در میکروتیک زنجیره Postrouting به SNAT و زنجیره Prerouting به DNAT تغییر نام یافته است.


Mangle
انتخاب زنجیره بر اساس جدول منگل مشکل تر از بقیه جدول ها می باشد و کاملا وابسته به کارکرد بسته ، دیگر قوانین تنظیم شده و ... دارد.این عدم قطعیت از آنجا ناشی می شود که جدول منگل در واقع یاری رسان دیگر جدول ها یعنی NAT و بخصوص Filter می باشد و بدون توجه به تنظیمات آنها نمی توان از منگل استفاده کرد.
در صورتیکه می خواهید بسته را قبل از مسیریابی دستکاری کنید باید از زنجیره Prerouting استفاده کنید.

همانطور که ترتیب جدول ها در زنجیره مهم می باشد ، در هنگام نوشتن قوانین باید به اولویت زنجیره ها که در شکل2 بر اساس محل عبور بسته مشخص شده است ، نیز توجه کافی داشت.
اگر اولویت قرارگیری و بررسی جدول ها و زنجیره ها مورد توجه قرار نگیرد ، احتمال آنکه قوانین نوشته شده بدرستی کار نکنند و تداخل ایجاد شود ، وجود خواهد داشت.
فرض کنید بسته ای را در زنجیره Forward فیلتر کرده اید ، پس نشانه گذاری یا ترجمه آدرس آن در زنجیره Postrouting سودی نخواهد داشت.