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

 میکروتیک را می توان به عنوان یک فایروال نسبتا قوی در صورت انجام صحیح تنظیمات استفاده کرد. از قابلیت های فایروال میکروتیک ایجاد Filtering و NAT است.

برای دسترسی به دیواره آتش میکروتیک، با استفاده از وینباکس (نرم افزار مدیریتی میکروتیک) به دستگاه وصل شده ، سپس مطابق شکل 1 از منوی اصلی ابتدا IP سپس Firewall را انتخاب کنید.

شکل 1

پنجره Firewall مطابق با شکل 2 باز خواهد شد.

شکل 2

بخش های اصلی دیواره آتش میکروتیک به قرار زیر است :

  • Layer 7 Protocol
  • Address Lists
  • Connections
  • Service Ports
  • Mangle
  • NAT
  • Filter Rules



Layer7-Protocols 
Layer7Protocols یک روش جستجوی الگو در جریان داده UDP ,ICMP و TCP می باشد.
تطبیق دهنده لایه هفتم، 10 بسته اولیه یا 2KB اولیه جریان ارتباطی را جمع آوری کرده و بدنبال الگوی مشخص شده در داده جمع آوری شده می گردد.تطبیق دهنده اگر الگو در داده جمع آوری شده پیدا نشد بررسی بیشتری انجام نخواهد داد.حافظه اختصاص داده شده به این امر خالی شده و پروتکل بعنوان ناشناخته در نظر گرفته می شود.باید به این نکته توجه داشته باشید که مصرف حافظه با افزایش تعداد ارتباطات بطور قابل توجهی بیشتر خواهد شد.
تطبیق دهنده لایه هفتم به دو طرف ارتباط ( ورودی و خروجی ) برای بررسی بسته ها نیاز دارد، بدین منظور باید قانون های لایه هفتم را در زنجیره Forward قرار دهید. اگر قانون در زنجیره Prerouting جدول INPUT قرار گرفت، باید مشابه همین قانون را در زنجیره Postrouting جدول Output ایجاد کنید،در غیر اینصورت داده جمع آوری شده ممکن است در تبطیق دادن الگو نیتجه نتیجه اشتباهی در بر داشته باشد.

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

برای همین باید از یک فایروالی استفاده کنیم که Application فیلترینگ در لایه 7 را داشته باشد .
میکروتیک از فایروال قدرتمند لینوکس یا همان IPTABLE استفاده می کندو این IPTABLE این امکان را برای ما محیا می سازد که انواع Application ها را به وسیله REGEX یا همان Regular expression ببندیم.
برای اطلاع بیشتر در رابطه با Regularexpression یا عبارات با قاعده  که در زبان های برنامه نویسی کاربرد دارند  می توانید به متون آموزشی زیر مراجعه کنید.

     متن آموزشی بزبان انگلیسی اول  متن آموزشی انگلیسی دوم      و یا    این متن فارسی اول  متن فارسی آموزشی دوم

  • مثال یک :بستن yahoo messenger

برای اینکار دستورات زیر را در TERMINAL میکروتیک وارد می کنیم.

/ip firewall layer7-protocol add name=yahoo-messenger regexp="^(ymsg|ypns|yhoo).\?.\?.\?.\?.\?.\?.\?[lwt].*\C0\80"
/ip firewall filter add chain=forward layer7-protocol=yahoo-messenger action=drop

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

  • مثال دو :بستن Firefox

/ip firewall layer7-protocol add name=firefox regexp="(U|u)ser-(A|a)gent:(| )(M|m)ozilla\\/.*(F|f)irefox\\/"
/ip firewall filter add action=drop chain=forward disabled=no layer7-protocol=firefox

نکته:اگر کاربری زرنگی کند و در یاهو مسنجر خود PROXY ست کنید به یاهو مسنجر دسترس پیدا میکنید.
خیلی راحت یک رول جدیدی در فایروال اضافه میکنیم که کلیه ای Proxy Port های کاربران اول بیاید به Proxy میکروتیک بعد با رول اولی ما مچ بشه بعد دسترسی ها براش باز بشه (باید Proxy روی میکروتیک فعال بشود.)

/ip proxy set enabled=yes port=8080
/ip firewall nat chain=dstnat protocol=tcp dst-port=80 action=redirect to-ports=8080
/ip firewall nat chain=dstnat protocol=tcp dst-port=8080 action=redirect to-ports=8080
/ip firewall nat chain=dstnat protocol=tcp dst-port=3128 action=redirect to-ports=8080
/ip firewall nat chain=dstnat protocol=tcp dst-port=8081 action=redirect to-ports=8080



Address Lists
Address Lists یکی از ویژگی های خوب و کاربردی میکروتیک می باشد ،با استفاده از لیست آدرس می توان بصورت دستی و خودکار لیستی از آدرس ها تهیه کرد تا هنگام استفاده نوشتن قوانین از آنها بهره جست.

شکل 3

مزیت لیست آدرس در کمتر شدن و ساده تر شدن قوانین می باشد.بدین صورت که اگر بخواهید برای چندین کاربر دسترسی مشترکی را محدود یا باز کنید، در حالت عادی باید به ازای هر کاربر یک قانون ایجاد کنید ولی در این حالت کافیست ، یک لیست آدرس ایجاد ، آدرس کاربران را به آن اضافه کرده و در قانون ها بجای آدرس مبدا یا مقصد از لیست آدرس مبدا یا مقصد که متعلق به گزینه های پیشرفته می باشد ، استفاده کنید.
با استفاده از لیست آدرس خودکار می توان، آدرس ها را بصورت خودکار به لیست اضافه کرد ، برای این منظور کافیست در تب Action قانون، گزینه Add dst to address list برای ارسال مقصد بسته ها و Add src to address list برای ارسال مبدا بسته ها به لیست آدرسی که در زیر آن مشخص می شود ، استفاده کرد. 
می توانید ابتدا یک قانون برای ایجاد لیست آدرس خودکار ایجاد کرده و سپس عملیات مورد نظر را بر روی لیست آدرس انجام دهید..
لیست آدرس در آنالیز شبکه هم قابل استفاده است ، برای مثال تهیه لیستی شامل تمامی کاربرانی که از سرویس SSH استفاده می کنند یا سرورهایی که آنها به آن متصل می شوند را با لیست آدرس خودکار می توان بدست آورد.

یکی از کاربردهای این لیست در کار من، مشحص کردن لیستی از سایت هایی است که لازم نیست برای دسترسی به آنها کاربر اعتبارسنجی شود و از حساب اینترنتی اون کم بشه lمثلا لیستی بنام Direct-to-Internet  درست کنیم و در قسمت Nat داشته باشیم:

 chain=srcnat action=src-nat to-addresses=1.1.1.1  protocol=tcp    src-address=192.168.10.0/24 dst-address-list=Direct-To-Internet log=no  log-prefix=""

Connection

از طریق تب Connections می توانید لیست کلیه ارتباط هایی که با میکروتیک برقرار شده است را بر اساس آدرس مبدا و مقصد ، نوع پروتکل و مدت زمان فعال بودن ارتباط مشاهده کنید.

شکل 4

Service Ports 
سرویس هایی وجود دارند که در صورت فعال شدن نت بدلیل احتیاج به ارتباط واقعی پایاپای، بدرستی کار نخواهند کرد، برای حل این مشکل میکروتیک از خاصیت NAT Traversal برای چند سرویس خاص استفاده می کند.

شکل 5


Filter , NAT, Mangle 
در پنجره Firewall ، سه جدول اصلی که قبلا مفاهیم آنها مورد بررسی قرار گرفت (مطلب عنوان میکروتیک4-کلیات) وجود دارند. در این پنجره می توان لیست قانون هایی که قبلا نوشته شده اند را در تب های مختلف مشاهده و ویرایش کرد.

شکل 6

برای اضافه کردن قانون جدید بر روی علامت “+” کلیک کنید تا پنجره New Manage Rule باز شود. گزینه ها در سه دسته عمومیGenerl  ، پیشرفته Advanced و اضافی Extra تقسیم بندی شده اند.
این گزینه ها در هر سه جدول NAT , Mangle و Filter یکسان می باشند و فقط در جدول نت گزینه P2P وجود ندارد. این گزینه ها را در شکل های 7 ، 8 ، 9 می توانید مشاهده کنید.

شکل 7

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

شکل 8

دسته اضافی شامل گزینه هایی همچون تنظیم زمان برای فعال شدن قانون بر اساس ساعت و روزهای هفته، نوع آدرس از قبیل Broadcast , Unicast , Multicast و Local ، محدود کردن تعداد ارتباطات و ... می باشد.

شکل 9

عملیات های قابل انجام توسط منگل در تب Action شکل 10 لیست شده اند. باید توجه داشت که هر قانون فقط یک عمل در آن واحد قادر است انجام دهد.پس برای عملیات های متفاوت باید قوانین مجزا ایجاد کنید.

عملیات های قابل انجام توسط جدول  Mangle در شکل زیر آورده شده است.

شکل 10

عملیات های قابل انجام توسط جدول  Nat در شکل زیر آورده شده است.

شکل 11

و در آخر لیست عملیات های جدول Filter در ادامه قابل مشاهده است.

شکل 12

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

  • Accept : قبول کردن بسته ، بسته در قانون های بعدی بررسی نمی شود.
  • Add dst to address list : اضافه کردن آدرس مقصد به یکی از لیست آدرس های مشخص شده در Address Lists و یا حتی یک لیست آدرس جدید
  • Add src to address list : اضافه کردن آدرس مبدا به یکی از لیست آدرس های مشخص شده در Address Lists و یا حتی یک لیست آدرس جدید
  • Jump : پرش به زنجیره مشخص شده
  • Log : فرستادن پیغامی حاوی قانون تطبیق داده شده با فرمت خاص به سیستم ثبت وقایع
  • Passthrough : در نظر نگرفتن قانون و رفتن به قانون بعدی (کاربرد، بیشتر برای آمارگیری )
  • Return : برگردان کنترل به زنجیره در جایی که پرش صورت گرفته



عملیات های غیرمشترک جدول  Filter متشکل شده از :

  • Drop : رها کردن بسته بدون ارسال پیغام -حذف بسته
  • Reject : رها کردن بسته همراه با ارسال یک پیغام ICMP Reject
  • Tarpit : ضبط و نگهداری ارتباطات TCP ( کاربرد در کم کردن اثر حملات DOS )


عملیات های غیرمشترک جدول Nat بقرار زیر است :

  • Src-NAT : ترجمه آدرس مبدا بسته به آدرس مشخص شده
  • Dst-NAT : ترجمه آدرس مقصد بسته به آدرس مشخص شده
  • MASQUERADE : ترجمه آدرس مبدا بسته به آدرس عمومی موجود در سیستم
  • Redirect : جایگزین کردن درگاه مقصد بسته با درگاه مشخص شده
  • Same
  • Netmap



عملیات های غیرمشترک جدول منگل عبارت اند از :


  • Change DSCP) TOS ) : تغییر مقدار فیلد TOS بسته
  • Change TTL : تغییر مقدار فیلد TTL بسته
  • Change MSS : تغییر مقدار فیلد Maximum Segment Size بسته
  • Clear DF : پاک کردن بیت Don’t Fragment (کاربرد در تانل IPSEC )
  • Mark Connection : نشانه گذاری ارتباط
  • Mark Packet : نشانه گذاری بسته ( کاربرد در کنترل پهنای باند )
  • Mark Routing : نشانه گذازی مسیر ( کاربرد در عملیات مسیریابی پیشرفته )
  • Set Priority : تغییر مقدار فیلد اولویت در لینک هایی که مقدار اولویت را ارسال می کنند.
  • Strip IPv4 Options



تب Statistics نیز آماری از میزان ترافیک و تعداد بسته هایی که این قانون شامل حال آنها می شود را بصورت عددی و گراف در اختیار ما قرار می هد.از طریق این تب می توان درستی قانون نوشته شده را مورد بررسی قرار داد. شکل 13 گویای این موضوع می باشد.

شکل13