تعريف ديوارههاي آتش (فايروال)
ديوارههاي آتش يکي از مؤثرترين و مهمترين روشهاي پياده سازي "مصونيت شبکه" هستند و قادرند تا حد زيادي از دسترسي غير مجاز دنياي بيرون به منابع داخلي جلوگيري کنند.ديوارههاي آتش، مانند خندقهاي دور قلعههاي دوران قرون وسطي عمل ميکنند. شکل 1 يکي از اين قلعهها را نشان ميدهد. خندق دور قلعه باعث ميشود نفوذ به قلعه مشکل باشد.
انجمن Network Computer Security Association) NCSA) تعريف زير را از ديوارههاي آتش ارائه داده است."ديواره آتش يک سيستم يا ترکيبي از چندين سيستم است که يک سري محدوديت را بين دو يا چند شبکه اعمال ميکند."در واقع يک ديواره آتش با محدودکردن دسترسي بين دو شبکه سعي ميکند يکي را از ديگري محافظت کند. عموماً ديوارههاي آتش به منظور محافظت شبکه خصوصي که به يک شبکه عمومي يا مشترک متصل است به کار گرفته ميشوند. ديوارههاي آتش يک نقطه محدود کننده را بين دو شبکه ايجاد ميکند.
عملکرد ديوارههاي آتش را ميتوان در سه جمله خلاصه کرد:
- آنها افراد را موقع ورود در يک نقطه کاملاً کنترل شده محدود ميسازد.
- آنها از نزديک شدن خرابکاران به منابع داخلي جلوگيري ميکنند.
- آنها افراد را موقع خروج در يک نقطه کاملاً کنترل شده محدود ميسازند.
در واقع اين نقطه کاملاً کنترل شده در مثال قلعههاي قرون وسطايي همان پل متحرکي است که تنها در مواقع ورود و خروج افراد مشخص بر روي خندق قرار ميگيرد و در ديگر موارد بسته است و در نقش درب قلعه عمل ميکند. ديواره آتش اغلب در نقطهاي که شبکه داخلي به شبکه خارجي متصل است قرار داده ميشود (شکل 2). تمام ترافيکي که از سمت شبکه خارجي به شبکه داخلي وارد ميشود و يا از شبکه داخلي به سمت شبکه خارجي، خارج ميشود از ديواره آتش عبور ميکند، به همين علت ديواره آتش فرصت و موقعيت مناسبي را داراست که تشخيص دهد آيا ترافيک عبوري مورد پذيرش هست يا خير. اينکه چه ترافيکي مورد پذيرش هست به "سياست امنيتي" (Security Policy)شبکه باز ميگردد. سياستهاي امنيتي تعيين ميکنند که چه نوع ترافيکهايي مجوز ورود و يا خروج را دارا هستند.
ميتوان گفت يک ديواره آتش:
- يک جداساز است.
- يک محدودساز (Restrictor) است.
- يک آناليزکننده (Analyzer) است.
يک ديواره آتش ممکن است:
- مسيريابي با چند ليست کنترل دسترسي باشد.
- نرم افزاري که روي يک PC يا يک سيستم Unix اجرا مي شود، باشد.
- يک جعبه سخت افزاري اختصاصي باشد.
انواع پيچيده تر ديواره هاي آتش به صورت ترکيبي از چندين سيستم و راه حلهاي Multi-computer و Multi-router پياده سازي ميشوند. شبکه هاي مختلف بسته به نيازهاي امنيتي مختلف و هزينه اي که براي تأمين امنيت در نظر گرفته اند از ديوارههاي آتش مختلف و روشهاي پياده سازي مختلف آنها استفاده ميکنند.
ديوارههاي آتش اگر چه که از بروز مشکلات مختلف براي شبکه داخلي جلوگيري ميکنند اما بدون اشکال و عيب نيستند. در مثال ذکر شده، افراد ماهرتر قادر خواهند بود از خندق با شنا عبور کنند و در يک فرصت مناسب هنگامي که پل باز است با لباس مبدل به قلعه وارد شوند. سؤال اينجاست که با وجود اين اشکالات چرا ديوارههاي آتش مورد استفاده قرار ميگيرند؟ در پاسخ بايد گفت درست است که در حالات خاصي ديواره آتش نفوذ پذير است و خرابکاران قادرند از آن عبور کنند، اما با اين حال اين ابزار از عبور بسياري از خرابکاران جلوگيري ميکند و موثرترين ابزار در کنترل دسترسي به شبکه به حساب ميآيد. در صورتي که هيچ خندقي وجود نداشته باشد ورود افراد غير مجاز به قلعه بسيار آسانتر خواهد بود و آيا چون در حالات خاصي، افراد خاص ممکن است از خندق عبور کنند، هيچ خندقي وجود نداشته باشد؟
در هر حال يک ديواره آتش قادر است در جهت بالا رفتن سطح امنيتي شبکه اقدامات مفيدي را انجام دهد. در ادامه مواردي که يک ديواره آتش قادر است انجام دهد و به امنيت شبکه کمک کند را مورد بررسي قرار ميدهيم.
تواناييهاي ديوارههاي آتش
در اين بخش تواناييهاي ديوارههاي آتش را مورد بررسي قرار ميدهيم.
يک ديواره آتش ميتواند اجراي تصميمات امنيتي را در يک نقطه متمرکزکند: همانطورکهگفته شد، ديواره آتش يک نقطه محدود کننده بين دو شبکه است. تمام ترافيک به داخل و از خارج بايد از اين نقطه باريک عبورکند و راه ديگري براي عبور ترافيک وجود ندارد. بدين ترتيب ديواره آتش قابليت اعمال کنترل شديدي را دارا خواهد بود و ميتواند با اعمال ابزار مختلف تأمينکننده امنيت در اين نقطه سطح قابل قبولي از امنيت را تضمين کند. در واقع چون همه چيز در يک کانال ارتباطي قابل کنترل است ميتوان تصميمات مختلفي را در ارتباط با امنيت شبکه گرفت و به اجرا در آوردن آنها را در يک نقطه متمرکز ساخت.
يک ديواره آتش ميتواند سياست امنيتي شبکه را به اجرا در آورد: ميدانيم سرويسهاي مختلفي در شبکهها وجود دارند و با گسترش اينترنت تنوع و تعداد آنها بسيار افزايش يافته است. اغلب اين سرويسها ناامن هستند و هنگام استفاده و ارائه آنها بايد دقت کرد. سياست امنيتي شبکههاي مختلف تعيين ميکند که چه سرويسهايي در شبکه ارائه ميشود و چه افرادي مجازند از اين سرويسها استفاده کنند. ديوارههاي آتش قادرند با پاسباني و کنترل سرويسهاي مختلف تنها به سرويسهاي مجاز تعريف شده در سياست امنيتي اجازه عبور دهند و بدين ترتيب سياست امنيتي شبکه را به اجرا درآورند. سياستهاي امنيتي نهايتاً به تعدادي قوانين اجرايي تبديل ميشوند که ديوارههاي آتش قادر خواهند بود تعداد زيادي از آنها را اجرا کنند. ديوارههاي آتش ممکن است سرويسهاي خطرناک و ناامن و را با اعمال محدويت تنها در شبکه داخلي اجازه دهند.
سياستهاي امنيتي مختلفي قابل اتخاذ هستند. مديران يک شبکه ممکن است تنها به يک سيستم داخلي اجازه دهند. با دنياي بيرون در ارتباط باشد، در اين صورت ديواره آتش تنها ترافيک متعلق به آن سيستم را از خود عبور خواهد داد.
ذکر اين نکته ضروري است که پيادهسازيهاي مختلف از ديوارههاي آتش تواناييهاي متفاوت در به اجرا در آوردن سياستهاي امنيتي دارند و بنابراين با استفاده از برخي از ديوارههاي آتش ممکن است نتوان برخي از سياستها را به اجرا در آورد.
يک ديواره آتش ميتواند فعاليتهاي مهم را ثبت کند: به اين علت که تمام ترافيک از ديواره آتش عبور ميکند، ديواره آتش يک مکان مناسب براي ثبت مجموعههاي مختلف از فعاليتهاست. به عنوان تنها نقطه دسترسي، ديواره آتش ميتواند ثبت کند که چه اتفاقاتي بين شبکه محافظت شده و شبکه بيروني رخ ميدهند. با دسته بندي اين اطلاعات ميتوان به نتايج خوبي در ارتباط با استفاده از شبکه، تهاجمهاي در حال شکلگيري، مزاحمان و متخلفان داخلي و خارجي و.... دست يافت.
يک ديواره آتش قادر است سطوح مختلفي از امنيت را براي بخشهاي مختلف پيادهسازي کند: از ديوارههاي آتش گاهي براي جدا نگه داشتن يک بخش از بخشهاي ديگر استفاده ميشود. اين حالت زماني اتفاق ميافتد که يک بخش از شبکه بيشتر از بخشهاي ديگرحساس باشد و نيازمند امنيت بيشتري باشد. بدين ترتيب با استفاده از ديوارههاي آتش ميتوان بخشهاي مختلف با سطوح امنيتي مختلف را ايجاد نمود. اين مسأله باعث ميشود بروز مشکلات امنيتي نتواند تمام سرتاسر شبکه را تحت تأثير قرار دهد و برخي بخشهاي مهمتر و حساستر مصون بمانند. ديوارههاي آتش در مجموع قادرند شبکه را در برابر تهديدات مختلف تا حد زيادي مورد محافظت قرار دهند، اما آنها راه حل امنيتي کامل و بدون عيبي نيستند. برخي از خطرات و مشکلات از کنترل ديواره آتش خارج هستند و براي مقابله با آنها بايد از روشهايي مانند ايجاد مکانيزمهاي قوي امنيت فيزيکي، " مصونيت ميزبان" و آموزش کاربران و مديران و... استفاده کرد.
ناتوانيهاي ديوارههاي آتش
در ادامه برخي از ناتوانيهاي ديوارههاي آتش را مورد بررسي قرار ميدهيم:
يک ديواره آتش نميتواند شبکه و منابع آن را از خرابکاران داخلي محافظتکند: ديواره آتش ممکن است بتواند از اينکه اطلاعات مفيد سازمان از طريق خط ارتباطي شبکه به بيرون انتقال يابند جلوگيري کند اما هنگامي که اين اطلاعات از خط ارتباطي عبور نميکنند نميتواند هيچکاري انجام دهد. کاربري ممکن است با استفاده از يک ديسک، Floppy، CD و يا تعدادي ورقه که آنها را در کيفش قرار ميدهد اطلاعات حساس سازمان را به بيرون انتقال دهد. در مقابله با اين نوع کاربران (که ممکن است اطلاعات داخل را عمداً و يا سهواً از روي غفلت افشا کنند)، ديوارههاي آتش ناتوان هستند و هيچکاري از دستشان ساخته نيست. برخي از افراد داخلي سطوح دسترسي بالايي را در شبکه دارا هستند و مجازند به منابع مختلف در شبکه دسترسي داشته باشند، اين افراد قادر خواهند بود سخت افزارها را خراب کنند، نرم افزارها و برنامههاي مختلف را دچار مشکلکنند، به طور ماهرانهاي برنامهها را تغييردهند، سطوح دسترسيها را دستکاري کنند و.... واقعيت اين است که ديوارههاي آتش در مقابله با اين مشکلات کاري نميتوانند انجام دهند.
يک ديواره آتش نميتواند از بروز تمام مشکلات امنيتي جلوگيريکند: ديواره آتش براي مقابله با خطرات شناخته شده طراحي شده است. مديران شبکه با شناختي که از حملات و خطرات مختلف دارند و با تصويب تعدادي قوانين و اجراي آنها توسط ديواره آتش سعي ميکنند از بروز آنها جلوگيري کنند، اما واقعيت اين است که روز به روز حملات و مشکلات امنيتي جديدي به وجود ميآيند و ديواره آتش نميتواند به طور خودکار با اين خطرات مقابله کند. ديواره آتش نيز مانند تجهيزات ديگر توسط مدير سيستم پيکربندي ميشود و پيرو دستوراتي است که مدير ميدهد. يک پيکربندي خوب تا حدودي قادر خواهد بود از خطرات جديد نيز جلوگيريکند. در اين پيکربندي هيچ ترافيکي عبور داده نميشود غير از ترافيک مربوط به تعداد بسيار اندکي سرويس مطمئن. خرابکاران به طور مرتب راههاي جديدي براي نفوذ و خرابکاري پيدا ميکنند. آنها يا از سرويسهاي مطمئن شناخته شده سوء استفاده ميکنند ويا مشکلاتي که تا کنون براي کسي رخ نداده (و بنابراين هيچ کس راجع به آنها چيزي نميداند و به همين دليل در هيچ ديواره آتشي در نظر گرفته نشده) را به کار ميبندند. يک ديواره آتش را نميتوان يک بار پيکربندي کرد و انتظار داشت براي هميشه شبکه را از هر خطري مورد محافظت قرار دهد.
يک ديواره آتش معمولاً نميتواند از ورود ويروسها جلوگيري کند: اغلب ديوارههاي آتش بخشهاي مربوط به آدرس مبدأ و آدرس مقصد و شماره پورت مبدأ ومقصد شبکههاي ورودي را مورد بازرسي قرار ميدهند و به جزئيات داده توجهي ندارند. پيادهسازي بخش تشخيص ويروس و بررسي کامل داده بستهها در ديوارههاي آتش زياد عملي وکارا نيست. انواع بسيار زيادي از ويروسها وجود دارند و روشهاي زيادي براي آنکه ويروس خودش را در داخل داده مخفيکند وجود دارد. تشخيص ويروس (Virus Detection) در يک بسته تصادفي از دادهاي که از ديواره آتش عبور ميکند بسيار مشکل است. براي تشخيص ويروس در بستهها نيازمنديهاي زير وجود دارد:
- تشخيص اين مطلب که بخش داده بسته بخشي از يک برنامه است.
- مشخص کردن اينکه يک برنامه مجاز چگونه است و چه ويژگيهايي دارد.
- تشخيص اين که تفاوتي بين اين برنامه و مدل برنامههاي بدون مشکل و مجاز وجود دارد و بنابراين برنامه يک ويروس است.
اغلب ديوارههاي آتش ماشينهايي از انواع مختلف و با فرمتهاي اجرايي مختلف را مورد محافظت قرار ميدهند.
يک برنامه ممکن است يک برنامه کامپايل شده قابل اجرا و يا يک script باشد. علاوه بر اين، بسياري از برنامهها قبل از اينکه انتقال يابند به شکل يک Package در ميآيند و به خوبي فشرده سازي ميشوند. اين مسايل باعث ميشود پيچيدگي مسأله تشخيص ويروسها بالاتر رود و پيادهسازي آن مشکل باشد. با اين همه باز هم نميتوان تمامي منابع ديگر انتقال ويروسها را کنترل کرد. بسياري از برنامهها ممکن است از طريق مودمهاي اشخاصي که به اينترنت متصلند و از ديواره آتش رد نمي شوند download شوند و يا با يک floppy از محل سکونت به شبکه داخلي سازمان انتقال يابند و ... روش عملي تر مقابله با ويروسها استفاد از نرم افزارهاي host-base virus protection است. آموزش کاربران و آگاه کردن آنها از خطرات ويروسها نيز مي تواند مؤثر باشد.
تاريخچه ديواره آتش
اگر چه تکنولوژي ديوارههاي آتش جوان است و تازه شکل گرفته اما بسيار سريع رشد کرده و در کمتر از بيست سال تحولات زيادي را پشت سر گذاشته است.
اولين نسل از ديواره هاي آتش در حدود سال 1985 بوجود آمدند و " ديواره هاي آتش پالايشگر بسته" (Packet filter firewalls) نام گرفتند. ايده اصلي آنها از امکانات نرم افزاري گرفته شده بود که متعلق به شرکت Cisco بود و تحت عنوان (IOS (Internetworking Operation system شناخته مي شد. اولين مقاله در ارتباط با فرآيند غربال کردن (Screening Process) که توسط اين نوع ديواره هاي آتش مورد استفاده قرار مي گرفت در سال 1988 منتشر شد.
در سال 1989 آزمايشگاه شرکت AT&T براي اولين بار نسل دوم ديوارههاي آتش که در آينده "ديوارههاي آتش سطح مدار" (Circuit level firewalls) لقب گرفتند را بوجود آوردند. در همان سال آنها همچنين اولين مدل عملي (Working Model) از نسل سوم ديوارههاي آتش يعني "ديوارههاي آتش لايه کاربرد" (Application layer firewalls) پيادهسازي کردند اما نه هيچ مقالهاي در اين ارتباط منتشر شد و نه محصولي بر اساس اين مدل به بازار عرضه گشت.
در اواخر سال 1989 و اوايل دهه 90 تحقيقات مختلف و پراکنده اي در سطح کشور آمريکا بر روي نسل سوم ديواره هاي آتش انجام شد و بالاخره نتايج اين تحقيقات به صورت جداگانه درسال هاي 1990 و 1991 توسط Gene Spafford از دانشگاه Bill Cheswick,Purdue از لابراتوري Bell شرکت AT&T و Marcus Ranum انتشار يافتند. در سال 1991 تحقيقات Marcus Ranum بيشترين توجه را به خودش معطوف کرد و باعث بوجود آمدن Bastion host هايي که سرويس proxy را اجرا مي کردند شد. نتايج اين تحقيقات به سرعت در اولين محصول تجاري شکل عيني يافت و به کار گرفته شد. اين محصول که SEAL نام داشت توسط شرکت DEC عرضه شد.
در اواخر سال1991، Bill Cheswick و Steve Bellovin تحقيقاتي را در ارتباط با پالايش کردن بسته ها به صورت پويا (Dynamic) شروع کردند و بر اين اساس محصولي داخلي را در لابراتوار Bell پيادهسازي کردند که البته هرگز به بيرون عرضه نشد. در سال 1992، Bob Barden و Annette DeSchon در مؤسسه USC’s Information Sience Institute تحقيقاتي را بر روي نسل چهارم ديوارههاي آتش تحت عنوان "ديوارههاي آتش پالايشگر بسته پويا" (Dynamic packet filter firewalls) براي سيستمي با نام Visas به طور جداگانه شروع کردند و در نهايت نرم افزار Chech Point، اولين محصول تجاري بر پايه معماري نسل چهارم ديواره هاي آتش، در سال 1994 به بازار عرضه شد.
در سال 1996، Scott Wiegel طرحي را براي نسل پنجم ديوارههاي آتش با عنوان Kernel Proxy ارائه داد. ديواره آتش Cisco Centri که درسال 1997 پياده سازي شد اولين محصول تجاري بر اساس معماري اين نسل بود.
در سال هاي اخير نياز به سيستم هاي امنيتي که پرسرعت و در عين حال قابل گسترش(Extensible)، قابل نگهداري(Maintainable) و انعطاف پذير (Flexible) باشند باعث شده است شرکت هاي فعال در زمينه امنيت در تکاپوي يافتن راه حلهايي مناسب و کاربردي براي پاسخگويي به اين نيازها باشند.
انواع ديوارههاي آتش
ديوارههاي آتش پالايشگر بسته
ديوارههاي آتش سطح مدار
ديوارههاي آتش لاية کاربرد
ديوارههاي آتش پالايشگر بسته پويا
ديوارههاي آتش Kernel Proxy
ديوارههاي آتش مخفي
ديوارههاي آتش توزيع شده
ديوارههاي آتش شخصي
ديوارههاي آتش با توسعهپذيري بالا
ديوارههاي آتش نرمافزاري.
ديوارههاي آتش اختصاصي
ديوارههاي آتش شخصي
ديوارههاي آتش شخصي (که به آنها desktop firewalls نيز گفته ميشود) نرمافزارهايي هستند که براي محافظت از يک کامپيوتر تنها که به اينترنت متصل است مورد استفاده قرار ميگيرند. اين کامپيوتر ممکن است به طور دائمي (از طريق خطوط Cable modem , DSL) و يا موقت (از طريق ارتباطات Dial-up) به اينترنت متصل باشد. در مقايسه با برنامه هاي anti-virus ديواره هاي آتش در background و در سطحي پايين تر اجرا مي شوند. ديواره هاي آتش شخصي با چک کردن جامعيت فايل هاي سيستم، پالايش ترافيک ورودي و خروجي، اخطار به کاربر در ارتباط با حملات در حال شکلگيري و .... سعي ميکنند کامپيوتر مرتبط با اينترنت را مورد محافظت قرار دهند. در آيندة نزديک امنسازي سيستمها با ديوارههاي آتش شخصي به يکي از استانداردهاي کامپيوترهاي خانگي تبديل خواهد شد.
ديوارههاي آتش شخصي مانند ديوارههاي آتش توزيع شده کار ميکنند به جز چند مورد. در واقع قابليتهاي ديوارههاي آتش توزيع شده بيشتر از ديوارههاي آتش شخصي است. ديوارههاي آتش شخصي براي محافظت از يک کامپيوتر تنها که به اينترنت متصل است استفاده ميشود در حالي که ديوارههاي آتش توزيع شده براي محافظت از کامپيوترهاي موجود در يک شبکة بزرگ سازماني طراحي شدهاند.يک شرکت يا سازمان مي تواند با خريد يک distributed firewall solution، کارمندان دور، شبکههاي محلي سازمان و شبکههاي گستردهاش را مورد محافظت قرار دهد. مديريت مرکزي، قابليت logging در يک نقطة مرکزي و ريزسازي کنترل دسترسي(Access Control Granularity) ويژگيهايي هستند که در ديوارههاي آتش شخصي وجود ندارند. ميتوان گفت ديوارههاي آتش شخصي مستقل و مجزا هستند در حالي که ديوارههاي آتش توزيع شده با يک نقطة مرکزي در ارتباطند و در صحبت با او قادرند اطلاعات سياستهاي امنيتي را دريافت و اطلاعات ثبت شده و جمعآوري شده را ارسال کنند (به اين علت به ديواره هاي آتش توزيع شده Firewall agent نيز گفته مي شود). از ديوارههاي آتش شخصي عموماً براي کامپيوترهاي شخصي و خانگي استفاده ميشود حال آن که ديوارههاي آتش توزيع شده علاوه بر محافظت از کامپيوترهاي شخصي و ايستگاههاي موجود در شبکه قادرند سرويسگرهاي مهم و حساس را نيز مورد محافظت قرار دهند. برخي از ديوارههاي آتش توزيع شده را ميتوان به گونهاي پيکربندي کرد که کاملاً شفاف عمل کنند. آنها هيچ رابط گرافيکي ندارند و سياستهاي امنيتي بدون اين که کاربر از آنها اطلاعي داشته باشد به ديوارة آتش منتقل ميشود. بدين ترتيب درگيري کاربر نهايي حذف ميشود و او نميتواند در سياستهاي امنيتي مداخله کرده يا ديوارة آتش را غير فعال کند. اين قابليت عموماً در ديوارههاي آتش شخصي وجود ندارد.
برخي از ديوارههاي آتش شخصي عبارتند از:
- ConSeal PC firewall
- ConSeal Private Desktop
- SyShield
- BlackICE Defender
- ZoneAlarm
- Norton Internet Security 2000 (firewall & virus protection)
- Internet Connection Firewall (Windows XP built-in personal firewall)