فایروال چیست و چگونه آن را انتخاب کنیم و چه انتظاری از آن داشته باشیم
توسط
- 2014-02-04 - 10:57 AM (بازدید: 3381)
|
من هر از چندگاهی در جواب سوالات دوستان یهو میام یه سری چیزهایی مینویسم که گفتم شاید بد نباشه قدیمی هاش رو به صورت پست بلاگ بذارم تا شاید دوستان جدیدتر هم به دردشون بخوره و به قول شاعر:
مگر صاحبدلی روزی به جایی
کند در کار این مسکین دعایی
بحث در مورد فایروال بسیار مفصل و زیاده اما در این پست ما سعی میکنیم به صورت خیلی خلاصه و بخش بخش اقدام به بحث در این مورد کنیم؛
تعاریف و توضیحات ابتدایی
فایروال چیست؟
فایروال یا "دیواره آتش" یک سیستم نرمافزاری یا سخت افزاریه که ترافیک های ورودی و خروجی از یک درگاه یا Gateway رو آنالیز میکنه و بسته به نوع قوانینی که براش تعیین میشه، اجازه یا عدم اجازه ورود یا خروج اطلاعات از این درگاه رو صادر میکنه.
هدفش هم مشخصاً امن کردن شبکه و اعمال محدودیت بر درگاههای ورودی یا خروجیه که چیا بیان و چیا برن !
پیشرفت و نوع فایروالها سه نسل رو طی کردن :
نسل اول فایروالها یا First Generation که کارشون Packet Filtering هستش
کسایی که با مدل OSI آشنا هستن میدونن که بحث Packet روی لایه سوم این مدل مطرح میشه
در واقع این نسل از فایروالها تا لایه سوم مدل OSI میتونستن اطلاعات رو کنترل و آنالیز کنن و با توجه به اطلاعاتی که درمیارن و قوانینی که برای این فایروال مشخص میکنن، به فیلتر کردن Packet ها و صد البته Frame ها (لایه 2) میپرداختن
حالا چه ایرادی داشت این فایروال؟
ایرادش اینه که State یک packet رو نمیفهمه.
یعنی چی؟
یعنی مثلاً نمیفهمه که این Packetی که داره میاد مال یک Connection جدیده یا یک Connectionیِ که قبلاً وجود داشته !!!
به عبارت بهتر، این نوع فایروال فقط نگاه میکنه که این Packet از کجا اومده و داره به کجا میره. اینکه چرا داره میره میاد براش مهم نیست!
برای اینکه بهتر بفهمیم این قضیه رو یک مثال خیلی ساده میشه از از پروتکل و کانکشن ftp و ببینیم که چی میشه که این تیپ فایروال مشکلساز میشه برای این پروتکل:
ارتباط FTP Active یک ارتباطیه که به این صورته:
1 - کلاینت درخواست رو میفرسته به سمت سرور FTP و یک Concetion میزنه (درخواست رو مثلاً از پورت 1026 خودش میده به پورت 21 سرور)
2 - سرور به conccetion کلاینت جواب میده (سرور پاسخ رو از پورت 21 خودش به پورت 1026 کلاینت میفرسته)
3 - سرور یک conncetion میزنه به کلاینت برای ارسال اطلاعات (سرور از پورت 20 خودش یک کانکشن میزنه به پورت 1027 کلاینت)
4 - کلاینت قبول میکنه و اطلاعات رو دریافت میکنه
حالا اگر کلاینت از یک فایروال نسل اول استفاده کنه، فایروال جلوی مرحله 3 رو میگره! میگه پورت 20 کجا بود؟! 1027 چیه؟!
نمیشه به این فایروال فهموند که بابا این یه تیریپی که قبلاً اینا روی پورت 21 و 1026 توافقاتشون رو کردن حالا میخوان با این پورتها کار کنن !!!
(جالبه بدونید که برای اینکه این تیپ گیر فایروال ها برای زدن کانکشن FTP دور زده بشه، پروتکل FTP Passive درست شد!)
نسل دوم فایروال ها یا Second Generation بهشون Stateful Filtering میگن که میشه فایروالهایی که تا لایه 4 مدل OSI میان بالا و State و حالت Connection رو میشه بهشون فهموند !
این فایروالها میفهمن که مثلاً توی حالت ftp که قضیه چی بوده و برای اون کار خاص اجازه رو به سیستم بده که کارش رو انجام بده!
نسل سوم فایروالها یا Third Generation فایروالهای application layer هستن
این نوع فایروالها تا لایه هفتم مدل OSI میتونن بالا بیان و میتونن توی کنترل ترافیک بسیار بسیار هوشمندانهتر عمل کنن چون میشه خیلی چیزها رو در سطح لایه اپلیکیشن بهشون فهمون.
انواع مختلف فایروال
1. فایروالهای Network-Level
که معمولاً از نسل اول و نسل دوم فایروالها هستن
کار این فایروالهای Packet Filtering هستش که حالا این رو یا به صورت Stateless (نسل اول) یا به صورت Stateful (نسل دوم) میتونن انجام بدن
کارشون هم اینه که Packet ها و Frame هایی که میاد رو بازرسی میکنن و روشون اعمال قانون(!) میکنن. و همونطوری که گفتیم حداکثر تا لایه 4 مدل OSI رو میتونن هندل کنن
این تیپ فایروالها رو امروزه توی اکثریت روترها و سوئیچها میبینیم
مثلاً کسایی که با روترهای سیسکو کار کرده باشن و مفهوم Access List ها رو بدون، دقیقاً همین نوع فایروال داره استفاده میشه و حتی اکثر قریب به اتفاق روترهای خونگی (مودم ایدیاسال/روتر/سویچ/اکسس پوینت) به این نوع فایروال ها مجهز هستن و میتونن پکت فیلترینگ انجام بدن
مزیت اصلی این فایروالها سرعت خیلی بالای اونا هست که خیلی سریع و به قولی سه سوت کارشون رو انجام میدن حالا اگر Stateless باشن که دیگه سرعتشون عالیه (چون حافظه کمتری اشغال میکنن و به گذشته و آینده کاری ندارن! پکت رو میبینیه اگر اوکی بود بود نبود هم نوکی ِ ش میکنه!!) ولی Stateful باشه یه مقداری کندتره چون باید بدونه که پکت چه تاریخچهای داشته !
عیبشون هم اینه که محتوای پکت براشون مهم نیست و دست برای انواع اعمال قانون کوتاهه و ضمن اینکه قابلیت نفوذ بیشتری دارن نسبت به بقیه فایروالها.
2. فایروالهای Application layer
این نوع فایروالها که نسل سوم باشن تا لایه 7 رو کنترل میتونن بکن و روی همین حساب بسیار بسیار متفاوت میتونن عمل کنن نسبت به فایروالهای Network layer
مزیت این فایروالها به اینکه که به دلیل اینکه این نوع فایروال روی لایه هفتم کار میکنن، میتونن محتوای اطلاعات رد و بدل شده رو هم ببینن و حتی بر اساس محتوا اعمال فیلتر بکنن. مثلاً میشه از این فایروال برای بلاک کردن رد و بدل شدن موسیقی بین شبکه استفاده کرد. کاری که با فایروال سری قبلی نمیشه انجام داد. چون اون فایروال ها فقط مبدا و مقصد و پورت و پرتکل رو میبینن، نگاه نمیکنن که توش چیه ولی این تیپ فایروالها میتونن محتوا رو هم بازرسی کنن و خب دست بسیار بازتر خواهد بود برای امن کردن قضیه. به انضمام اینکه میشه به سیستم این تیپ فایروالها افزونههایی رو هم اضافه کرد تا کارای بیشتری انجام بدن برامون، مثلاً فایروال بیاد از لحاظ ویروس هم محتوا رو چک کن واسمون و هزارتا کار دیگه رو هم انجام بده
اما عیب بزرگی که دارن اینه که خیلی کندتر هستن نسبت به تیپ قبلی چون کار خیلی بیشتری باید انجام بدن.
مثلاً یک فایروال قراره که درخواستی که سراغش اومده رو هم از لحاظ کسی که درخواست رو فرستاده چک کنه که Authenticated هست یا نیست، بعد محتوا رو نگاه کنه که ویروسی هست یا نه ، بعد ببینه که چه اپلیکیشنی داره این درخواست رو میفرسته (مثلاً یک Web Browser هستش یا یک مسنجر مثل یاهو مسنجر) بعد درخواست رو 2 تیکه کنه، تیکه اول رو بده به یک سرور و تیکه دوم رو به یک سرور دیگه (کاری که Reverse Proxy ها انجام میدن به نیت لود بالانس)
سختافزاری و نرمافزاری بودن فایروالها
تمامی کارهایی که یک فایروال انجام میده توی یک محیط نرمافزاری انجام میشه.
حالا اینکه این نرمافزار چطور ارائه میشه و در اختیار مصرف کننده قرار میگیره داستانش فرق میکنه.
خیلی از وقتها هست که سازنده نرمافزار، نرمافزار رو جداگونه میفروشه به شما و میگه این پیشنیازهای نرمافزاری و سختافزاری رو داری. توی این حالت یک فایروال نرمافزاری خریدیم!
بعضی وقتها هم سازنده نرمافزار رو به همراه سختافزار به شما میده. توی این حالت میگیم یک فایروال سختافزاری خریدیم!
هر کدومش مزایای خاص خودش رو هم داره وعیبهای خودش
مزیت اصلیای که یک فایروال سختافزاری داره اینه که اگر سازنده، یک سازنده درست و درمون باشه، تک تک اعضای اون سختافزار رو طوری درست کرده که با نرمافزار مربوطه به طور خیلی اساسی هماهنگی داشته باشه و به قولی بهترین پرفورمنس و بازدهی رو داشته باشه سیستم. اما توی حالت نرمافزاری اینطوری نیست!
توی یک فایروال سختافزاری Ram و CPU و Board و ماژولهایی که روش کار شده، به بهترین وجه TuneUP شدن برای کاری که قرار نرمافزاره انجام بده ولی یک فایروال نرمافزاری که پایهش بر اساس یک سیستم عامل مثل ویندوز یا لینوکس هست رو نمیشه اندازه اون فایروال سختافزاری انتظار پرفورمنس داشت.
البته همه اینا به شرطیه که اون سازنده سیستم سختافزار رو واقعاً TuneUP کرده باشه
مثلاً یکی از دلایلی که Cisco برند شماره 1 سیستمهای Routing و Switching و Firewallهستش هم همینه! سختافزاری که برای هر تجهیزی که میسازه متفاوته و مثلاً CPU ای که قرار کار Routing انجام بده با CPU ای که قرار کار سئویچینگ بکنه فرق میکنه !
از طرفی یک فایروال نرمافزاری میتونه خیلی ارزونتر و (بعضاً) حتی کارا تر باشه
یک فایروال امروزی چه کارهایی میتونه برامون بکنه (چه انتظاراتی از یک فایروال باید داشته باشیم)
- کنترل ترافیک بر اساس IP (محل مبدا و مقصد)، Port (پرتکل انتقال داده) ، نام دامنه (نام محل مبدا و مقصد) ، نام یوزر، نوع محتوا (مثل موسیقی، فیلم، فایل rar)، نوع اپلیکیشن (مثلاً فایرفاکس از پورت 80 استفاده کند ولی یاهومسنجر استفاده نکند) و ...
- پاسکاری ترافیک به سمت سرورهای مختلف و تغییر آی پی (NAT) و تغییر پورت (PAT) برای این پاسکاری
- لاگ کردن ثبت وقایع که "کی، کِی، برای چی، چیکار کرده ؟!"
- کنترل پهنای باند
- کَش کردن اطلاعات جهت تسریع سرعت
- کنترل ویروس و حملات
هر کدوم از این کارهایی که یک فایروال میکنه، میتونه روی انتخاب فایروال ما تاثیر بذاره
و اینکه مثلاً ما چه تیپ فایروالی رو میخواییم انتخاب کنیم (لایه نتوورکی یا لایه اپلیکیشن)
دقیقاً چیا رو میخواییم و چیا رو نمیخواییم
بعد اون رو سختافزاری انتخاب کنیم یا نرمافزاری
وقتی اینا مشخص شد میشه کاملاً سیستم مورد نیاز رو انتخاب کرد و توی شبکه اون رو Deploy کرد.
این لینکها هم اطلاعات خوبی در مورد فایروال میتونن بدن:
Chapter 1: Types of Firewalls
What are the basic types of firewalls?
Firewall (computing) - Wikipedia, the free encyclopedia