آشنايي با ديوارهاي آتش يا Firewalls
ديوار آتش سيستمي است كه در بين كاربران يك شبكه محلي و شبكه بيروني (مثلا اينترنت) قرار مي گيرد و ضمن نظارت بر دسترسي ها ، در تمام سطوح ورود و خروج اطلاعات را تحت نظر دارد. هر سازمان يا نهادي كه بخواهد ورود و خروج اطلاعات شبكه خود را كنترل كند موظف است تمام ارتباطات مستقيم شبكه خود را با دنياي خارج قطع نموده و هر گونه ارتباط خارجي از طريق يك دروازه كه ديوار آتش يا فيلتر نام دارد ، انجام شود.
قبل از تحليل اجزاي ديوار آتش عملكرد كلي و مشكلات استفاده از ديوار آتش را بررسي مي كنيم.
بسته هاي TCP و IP قبل از ورود يا خروج به شبكه ابتدا وارد ديوار آتش ميشوند و منتظر ميمانند تا طبق معيارهاي حفاظتي و امنيتي پردازش شوند. پس از پردازش و تحليل بسته سه حالت ممكن است اتفاق بيفتد :
1- اجازه عبور بسته صادر ميشود (Accept Mode)
2- بسته حذف ميشود (Blocking Mode)
3- بسته حذف شده و پاسخ مناسب به مبدا آن بسته داده شود (Response Mode)
غير از حذف بسته مي توان عملياتي نظير ثبت ، اخطار، ردگيري، جلوگيري از ادامه استفاده از شبكه و توبيخ هم در نظر گرفت.
در حقيقت ديوار آتش محلي است براي ايست و بازرسي بسته هاي اطلاعاتي به گونه اي كه بسته ها بر اساس تابعي از قواعد امنيتي و حفاظتي پردازش شده و براي آنها مجوز عبور يا عدم عبور صادر شود.
اگر P مجموعه اي از بسته هاي ورودي به سيستم ديوار آتش باشد و S مجموعه اي متناهي از قواعد امنيتي باشد داريم :
(X=F(P,S
F تابع عملكرد ديوار آتش و Xنتيجه تحليل بسته (سه حالت بالا) خواهد بود. به مجموعه قواعد ديوار آتش سياستهاي امنيتي نيز گفته مي شود. همانطور كه همه جا عمليات ايست و بازرسي وقتگير و اعصاب خرد كن است ديوار آتش هم بعنوان يك گلوگاه ميتواند منجر به بالا رفتن ترافيك ، تاخير، ازدحام و نهايتا بن بست در شبكه شود. (بن بست : بسته ها آنقدر در پشت ديوار آتش معطل ميمانند تا زمان طول عمرشان به اتمام رسيده و فرستنده مجددا اقدام به ارسال آنها ميكند و اين كار متناوبا تكرار ميگردد.) به همين دليل ديوار آتش نياز به طراحي صحيح و دقيق دارد تا از حالت گلوگاهي خارج شود. تاخير در ديوار آتش اجتناب ناپذير است و فقط بايد به گونه اي باشد كه بحران ايجاد نكند.
مباني طراحي ديوار آتش:
از آنجايي كه معماري شبكه به صورت لايه لايه است ، در مدل TCP/IP براي انتقال يك واحد اطلاعات از لايه چهارم بر روي شبكه بايد تمام لايه ها را بگذراند، هر لايه براي انجام وظيفه خود تعدادي فيلد مشخص به ابتداي بسته اطلاعاتي اضافه كرده و آنرا تحويل لايه پايين تر مي دهد. قسمت اعظم كار يك ديوار آتش تحليل فيلدهاي اضافه شده در هر لايه و سرآيند هر بسته ميباشد. در بسته اي كه وارد ديوار آتش مي شود به تعداد لايه ها (4 لايه) سرآيند متفاوت وجود خواهد داشت. معمولا سرايند لايه اول (لايه فيزيكي يا Network Interface ) اهميت چنداني ندارد چرا كه محتواي اين فيلدها فقط روي كانال فيزيكي در شبكه محلي معنا دارند و در گذر از هر شبكه يا مسيرياب اين فيلدها عوض خواهند شد.
بيشترين اهميت در سرآيندي است كه در لايه هاي دوم ، سوم و چهارم به يك واحد اطلاعات اضافه خواهند شد:
1- در لايه شبكه از ديوار آتش فيلدهاي سرايند بسته IP را پردازش و تحليل ميكند.
2- در لايه انتقال از ديوار آتش سرايند بسته هاي TCP يا UDP را پردازش و تحليل ميكند.
3- در لايه كاربرد ديوار آتش فيلدهاي سرآيند و همچنين محتواي خود داده ها را بررسي ميكند. (مثلا سرايند و محتواي يك نامه الكترونيكي يا صفحه وب ميتواند مورد بررسي قرار گيرد.)
با توجه به لايه لايه بودن معماري شبكه لاجرم يك ديوار آتش نيز چند لايه خواهد بود. اگر يك بسته در يكي از لايه هاي ديوار آتش شرايط عبور را احراز نكند همانجا حذف خواهد شد و به لايه هاي بالاتر ارجاع داده نمي شود بلكه ممكن است بسته جهت پي گيريهاي امنيتي نظير ثبت عمل و ردگيري به سيستمي جانبي تحويل گردد.
سياست امنيتي يك شبكه مجموعه اي متناهي از قواعد امنيتي است كه بنابر ماهيتشان در يكي از لايه هاي ديوار آتش تعريف ميشوند :
1- قواعد تعيين بسته هاي ممنوع (بسته هاي سياه) در اولين لايه از ديوار آتش
2- قواعد بستن برخي از پورتها متعلق به سرويسهايي مثل Telnet يا FTP در لايه دوم
3- قواعد تحليل سرايند متن يك نامه الكترونيكي يا صفحه وب در لايه سوم
لايه اول ديوار آتش:
لايه اول ديوار آتش بر اساس تحليل بسته IP و فيلدهاي سرآيند اين بسته كار ميكند و در اين بسته فيلدهاي زير قابل نظارت و بررسي هستند :
1- آدرس مبدا : برخي از ماشينهاي داخل و يا خارج شبكه با آدرس IP خاص حق ارسال بسته نداشته باشند و بسته هايآنها به محض ورود به ديوار آتش حذف شود.
2- آدرس مقصد : برخي از ماشينهاي داخل و يا خارج شبكه با آدرس IP خاص حق دريافت بسته نداشته باشند و بسته هاي آنها به محض ورود به ديوار آتش حذف شود. (آدرس هاي IP غير مجاز توسط مسئول ديوار آتش تعريف ميشود.)
3- شماره شناسايي يك ديتاگرام قطعه قطعه شده (Identifier & Fragment Offset) : بسته هايي كه قطعه قطعه شده اند يا متعلق به يك ديتاگرام خاص هستند بايد حذف شوند.
4- شماره پروتكل : بسته هايي كه متعلق به پروتكل خاصي در لايه بالاتر هستند مي توانند حذف شوند. يعني بررسي اينكه بسته متعلق به چه پروتكلي است و آيا تحويل به آن پروتكل مجاز است يا خير؟
5- زمان حيات بسته : بسته هايي كه بيش از تعداد مشخصي مسيرياب را طي كرده اند مشكوك هستند و بايد حذف شوند.
6- بقيه فيلدها بنابر صلاحديد و قواعد امنيتيمسئول ديوار آتش قابل بررسي هستند.
مهمترين خصوصيت لايه اول از ديوار آتش آن است كه در اين لايه بسته ها بطور مجزا و مستقل از هم بررسي مي شوند و هيچ نيازي به نگه داشتن بسته هاي قبلي يا بعدي يك بسته نيست. به همين دليل ساده ترين و سريع ترين تصميم گيري در اين لايه انجام مي شود. امروزه برخي مسيريابها با امكان لايه اول ديوار آتش به بازار عرضه مي شوند يعني به غير از مسيريابي وظيفه لايه اول يك ديوار آتش را هم انجام مي دهند كه به آنها مسيريابهاي فيلتركننده بسته (Pocket Filtering Router ) گفته مي شود. بنابراين مسيرياب قبل از اقدام به مسيريابي بر اساس جدولي بسته هاي IP را غربال مي كند و تنظيم اين جدول بر اساس نظر مسئول شبكه و برخي قواعد امنيتي انجام مي گيرد.
با توجه به سريع بودن اين لايه هرچه درصد قواعد امنيتي در اين لايه دقيقتر و سخت گيرانه تر باشند حجم پردازش در لايه هاي بالاتر كمتر و در عين حال احتمال نفوذ پايين تر خواهد بود ولي در مجموع بخاطر تنوع ميلياردي آدرسهاي IP نفوذ از اين لايه با آدرسهاي جعلي يا قرضي امكان پذير خواهد بود و اين ضعف در لايه هاي بالاتر بايد جبران شود.
لايه دوم ديوار آتش:
در اين لايه از فيلدهاي سرايند لايه انتقال براي تحليل بسته استفاده مي شود. عمومي ترين فيلدهاي بسته هاي لايه انتقال جهت بازرسي در ديوار آتش عبارتند از :
1- شماره پورت پروسه مبدا و مقصد : با توجه به آنكه پورتهاي استاندارد شناخته شده هستند ممكن است مسئول يك ديوار آتش بخواهد سرويس ftp فقط در محيط شبكه محلي امكان پذير باشد و براي تمام ماشينهاي خارجي اين امكان وجود نداشته باشد. بنابراين ديوار آتش مي تواند بسته هاي TCP با شماره پورت هاي 20 و 21 (مربوط به ftp) كه قصد ورود و خروج از شبكه را دارند ، حذف كند. يكي ديگر از سرويسهاي خطرناك كه ممكن است مورد سوء استفاده قرار گيرد Telnet است كه مي توان به راحتي پورت 23 را مسدود كرد. يعني بسته هايي كه مقصدشان شماره پورت 23 است حذف شوند.
2- فيلد شماره ترتيب و فيلد Acknowledgment : اين دو فيلد نيز بنا بر قواعد تعريف شده توسط مسئول شبكه قابل استفاده هستند.
3- كدهاي كنترلي (TCP code Bits) : ديوار آتش با بررسي اين كدها ، به ماهيت آن بسته پي برده و سياستهاي لازم را بر روي آن اعمال ميكند. بعنوان مثال يك ديوار آتش ممكن است بگونه اي تنظيم شود كه تمام بسته هايي كه از بيرون به شبكه وارد ميشوند و داراي بيت SYN=1 هستند را حذف كند. بدين ترتيب هيچ ارتباط TCP از بيرون به درون شبكه برقرار نخواهد شد.
از مهمترين خصوصيات اين لايه آنست كه تمام تقاضا هاي برقراري ارتباط TCP بايستي از اين لايه بگذرد و چون در ارتباط TCP ، تا مراحل "دست تكاني سه گانه اش" به اتمام نرسد انتقال داده امكان پذير نيست لذا قبل از هر گونه مبادله داده ديوار آتش ميتواند مانع برقراري هر ارتباط غير مجاز شود. يعني ديوار آتش ميتواند تقاضاهاي برقراري ارتباط TCP را قبل از ارائه به ماشين مقصد بررسي نموده و در صورت قابل اطمينان نبودن مانع از برقراري ارتباط گردد. ديوار آتش اين لايه نياز به جدولي از شماره پورتهاي غير مجاز دارد.
لايه سوم ديوار آتش:
در اين لايه حفاظت بر اساس نوع سرويس و برنامه كاربردي انجام مي شود. يعني با در نظر گرفتن پروتكل در لايه چهارم به تحليل داده ها مي پردازد. تعداد سرآيند ها در اين لايه بسته به نوع سرويس بسيار متنوع و فراوان است. بنابراين در لايه سوم ديوار آتش براي هر سرويس مجزا (مانند وب، پست الكترونيك و...) بايد يك سلسله پردازش و قواعد امنيتي مجزا تعريف شود و به همين دليل حجم و پيچيدگي پردازش ها در لايه سوم زياد است. توصيه موكد آنست كه تمام سرويسهاي غير ضروري و شماره پورتهايي كه مورد استفاده نيستند در لايه دوم مسدود شوند تا كار در لايه سوم كمتر باشد.
بعنوان مثال فرض كنيد كه موسسه اي اقتصادي، سرويس پست الكترونيك خود را دائر نموده ولي نگران فاش شدن برخي اطلاعات محرمانه است. در اين حالت ديوار آتش در لايه سوم ميتواند كمك كند تا برخي آدرسهاي پست الكترونيكي مسدود شوند و در عين حال ميتواند در متون نامه هاي رمز نشده به دنبال برخي از كلمات كليدي حساس بگردد و متون رمز گذاري شده را در صورتي كه موفق به رمزگشايي آن نشود حذف نمايد.
فيلترهاي Stateful و هوشمند:
دقت كنيد كه فيلترهاي معمولي كارايي لازم را براي مقابله با حملات ندارند زيرا آنها بر اساس يك سري قواعد ساده بخشي از ترافيك بسته هاي ورودي به شبكه را حذف مي كنند. امروزه بر عليه شبكه ها حملاني بسيار تكنيكي و هوشمند طرح ريزي مي شود بگونه اي كه يك فيلتر ساده قابل اعتماد و موثر نخواهد بود. بديهي است كه يك فيلتر يا ديوار آتش قطعا بخشي از ترافيك بسته ها را به درون شبكه هدايت خواهد كرد . (زيرا در غير اينصورت شبكه داخلي هيچ ارتباطي با دنياي خارج نخواهد داشت.) نفوذگر براي آنكه ترافيك داده هاي مخرب او حذف نشود تلاش مي كند با تنظيم مقادير خاص در فيلدهاي بسته هاي TCP و IP آنها را با ظاهري كاملا مجاز از ميان ديوار آتش يا فيلتر به درون شبكه بفرستد. به عنوان مثال فرض كنيد فيلتري تمام بسته ها به غير از شماره پورت 80 (وب) را حذف مي كند. حال يك نفوذگر در فاصله هزاران كيلومتري ميخواهد فعال بودن يك ماشين را از شبكه بيازمايد. بدليل وجود فيلتر او قادر نيست با ابزارهايي مانند Ping ، Nmap و Cheops و ... از ماشينهاي درون شبكه اطلاعاتي كسب كند. بنابراين براي غلبه بر اين محدوديت يك بسته SYN-ACK (با شماره پورت 80) به سمت هدف ميفرستد. يك ديوار آتش معمولي با بررسي Source Port به اين بسته اجازه ورود به شبكه را مي دهد زيرا ظاهر آن نشان ميدهد كه توسط يك سرويس دهنده وب توليد گشته است و حامل داده هاي وب ميباشد. بسته به درون شبكه داخلي راه يافته و چون ماشين داخلي انتظار دريافت آنرا نداشته پس از دريافت يكي از پاسخ هاي RESET يا ICMP Port Unreliable را برميگرداند. هدف نفوذگر بررسي فعال بودن چنين ماشيني بوده است و بدين ترتيب به هدف خود ميرسد. فيلتر بسته (يا ديوار آتش ) نتوانسته از اين موضوع باخبر شود! براي مقابله با چنين عملياتي ديوار آتش بايد فقط به آن گروه از بسته هاي SYN-ACK اجازه ورود به شبكه را بدهد كه در پاسخ به يك تقاضاي SYN قبلي ارسال شده اند. همچنين بايد بشرطي بسته هاي ICMP Echo Reply بدرون شبكه هدايت شود كه حتما در پاسخ يك پيام ICMP Echo Request باشد. يعني ديوار آتش بايد بتواند پيشينه (History) بسته هاي قبلي را حفظ كند تا در مواجهه با چنين بسته هايي درست تصميم بگيرد. ديوار هاي آتشي كه قادرند مشخصات ترافيك خروجي از شبكه را براي مدتي حفظ كنند و بر اساس پردازش آنها مجوز عبور صادر نمايند ديوار آتش هوشمند ناميده ميشوند.
البته نگهداري مشخصات ترافيك خروجي شبكه (يا ورودي) در يك فيلتر Stateful هميشگي نيست بلكه فقط كافي است كه ترافيك چند ثانيه آخر را به حافظه خود بسپارد! وجود فيلترهاي Stateful باعث ميشود بسته هايي كه با ظاهر مجاز ميخواهند درون شبكه راه پيدا كنند از بسته هاي واقعي تميز داده شوند. بزرگترين مشكل اين فيلتر ها غلبه بر تاخير پردازش و حجم حافظه مورد نياز ميباشد.ولي در مجموع قابليت اعتماد بسيار بالاتري دارند و ضريب امنيت شبكه را افزايش خواهند داد. اكثر فيلترهاي مدرن از اين تكنيك بهره گيري نموده اند. يك ديوار آتش يا فيلتر هوشمند و Stateful پيشينه ترافيك خروجي را براي چند ثانيه آخر به خاطر ميسپارد و بر اساس آن تصميم ميگيرد كه آيا ورود يك بسته مجاز است يا خير.
ديوار آتش مبتني بر پراكسي (Proxy Based Firewall):
فيلترها و ديوارهاي آتش معمولي و Stateful فقط نقش ايست و بازرسي بسته ها را ايفا مي كنند. هر گاه مجوز برقراري يك نشست صادر شد اين نشست بين دو ماشين داخلي و خارجي بصورت مستقيم (انتها به انتها) برقرار خواهد شد . بدين معنا كه بسته هاي ارسالي از طرفين پس از بررسي عينا تحويل آنها خواهد شد.
فيلترهاي مبتني بر پراكسي رفتاري كاملا متفاوت دارند:
وقتي ماشين مبدا تقاضاي يك نشست (Session) مثل نشست FTP يا برقراري ارتباط TCP با سرويس دهنده وب را براي ماشين ارسال مي كند سرآيند زير اتفاق ميافتد:
پراكسي به نيابت از ماشين مبدا اين نشست را برقرار مي كند. يعني طرف نشست ديوار آتش خواهد بود نه ماشين اصلي! سپس يك نشست مستقل بين ديوار آتش و ماشين مقصد برقرار مي شود. پراكسي داده هاي مبدا را ميگيرد ، سپس از طريق نشست دوم براي مقصد ارسال مي نمايد. بنابراين :
در ديوار آتش مبتني بر پراكسي هيچ نشست مستقيم و رو در رويي بين مبدا و مقصد شكل نمي گيرد بلكه ارتباط آنها بوسيله يك ماشين واسط برقرار مي شود. بدين نحو ديوار آتش قادر خواهد بود بر روي داده هاي مبادله شده در خلال نشست اعمال نفوذ كند. حال اگر نفوذگر بخواهد با ارسال بسته هاي كنترلي خاص مانند SYN-ACK كه ظاهرا مجاز به نظر مي آيند واكنش ماشين هدف را در شبكه داخلي ارزيابي كند در حقيقت واكنش ديوار آتش را مشاهده مي كند و لذا نخواهد توانست از درون شبكه داخلي اطلاعات مهم و با ارزشي بدست بياورد.
ديوار آتش مبتني بر پراكسي در لايه سوم عمل مي كند و قادر است حتي بر داده هاي ارسالي در لايه كاربرد مثل محتواي نامه هاي الكترونيكي يا صفحات وب نظارت كند.
ديوار آتش مبتني بر پراكسي به حافظه نسبتا زياد و CPU بسيار سريع نيازمندند و لذا نسبتا گران تمام مي شوند. چون ديوار آتش مبتني بر ديوار آتش بايد تمام نشستهاي بين ماشينهاي درون و بيرون شبكه را مديريت و اجرا كند لذا گلوگاه شبكه محسوب ميشود و هر گونه تاخير يا اشكال در پيكربندي آن ، كل شبكه را با بحران جدي مواجه خواهد نمود.
ممكن است از شما سوال شود كه استفاده از كدام نوع ديوارهاي آتش در شبكه اي كه امنيت داده هاي آن حياتي است منطقي تر و امن تر خواهد بود؟
اگر قرار باشد از ديوار آتش مبتني بر پراكسي در شبكه استفاده شود اندكي از كارايي سرويس دهنده هايي كه ترافيك بالا (مثل سرويس دهنده وب) دارند كاسته خواهد شد زيرا پراكسي يك گلوگاه در شبكه محسوب ميشود. اگر سرويس دهنده اي را براي كل كاربران اينترنت پيكربندي كرده ايد بهتر است در پشت يك ديوار آتش مبتني بر پراكسي قرار نگيرد.
در طرف مقابل فيلترها و ديوارهاي آتش معمولي سريعند وليكن قابليت اطمينان كمتري دارند و نميتوان به آنها به عنوان حصار يك شبكه اطمينان نمود. در نتيجه بهترين پيشنهاد استفاده همزمان از هر دونوع ديوار آتش است. شبكه هاي متعلق به سازمانها يا موسسات تجاري در دو بخش سازماندهي و پيكربندي مي شوند:
-بخش عمومي شبكه شامل سرويس دهنده وب ، پست الكترونيكي و FTP كه به عموم كاربران اينترنت سرويس ميدهد. اين بخش اصطلاحا DMZ (بخش غير محرمانه غير نظامي!) نام دارد.
-بخش حصوصي يا محرمانه كه صرفا با هدف سرويس دهي به اعضاي آن سازمان يا موسسه پياده سازي شده است.
بخش عمومي شبكه توسط يك فيلتر (معمولي يا هوشمند) حفاظت مي شود تا از كارايي سرويس دهنده آن كاسته نشود. شبكه داخلي در پشت يك ديوار آتش مبتني بر پراكسي پنهان مي شود تا ضمن غير قابل نفوذ بودن با اينترنت در ارتباط باشد. در چنين ساختاري يك نفوذگر خارجي براي برقراري ارتباط بايك ماشين داخلي دو مانع عمده بر سر راه دارد : فيلتر و ديوار آتش مبتني بر پراكسي. حال حتي اگر بتواند با مكانيزم هاي متداول از سد فيلتر بگذرد پشت ديوار آتش متوقف خواهد شد.
ديوار هاي آتش شخصي:
يك ديوار آتش كل ماشينها شبكه داخلي را حفاظت مي كند. سوال مهم اينست كه در محيطهاي معمولي مانند ISP كه هيچ ديوار آتش يا فيلتري نصب نشده و ماشينهاي اعضاي شبكه بي حفاظ رها شده اند تكليف كاربران بي گناه چيست؟!!
بسياري از كاربران ISP كه از مودمهاي معمولي يا سريع (مثل سري xDSL) براي اتصال به شبكه اينترنت استفاده مي كنند بدليل عدم وجود يك سيستم امنيتي قدرتمند به دام نفوذگران بدخواه مي افتند و داده هايشان سرقت ميشود و يا مورد آزار و اذيت قرار مي گيرند. اينگونه حوادث نادر نيست بلكه هر روز اتفاق مي افتد. حال چگونه ميتوان از اين ماشينها حفاظت كرد؟ ديوار آتش شخصي !!
ديوار آتش شخصي (PersonalFirewall) يك ابزار نرم افزاري است كه روي ماشين نهايي نصب مي شود و ورود و خروج بسته ها به/از آن ماشين را نظارت ميكند و مانع دسترسي غير مجاز به منابع آن ماشين شده و از داده هاي يك كاربر بي اطلاع حفاظت ميكند!
در ويندوز XP هنگام نصب ، يك ديوار آتش رايگان با يكسري قواعد پيش فرض و نسبتا مطمئن بر روي ماشين كاربر فعال شده و ترافيك بسته ها را نظارت مي كند و حتي الامكان از دسترسي غير مجاز به آن جلوگيري ميكند. اگر از نسخه هاي قديمي تر ويندوز استفاده مي كنيد بايد از نرم افزارهاي مستقل استفاده كنيد. مشهورترين ديوارهاي آتش شخصي عبارتند از :
-Norton Firewall
-Zone Alarm Pro
-ProtectX Professional

