PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : بررسی نحوه عملکرد Firewall یا ديواره آتش



hiddenboy
02-02-2009, 09:38 PM
قبل از تحليل اجزای ديوار آتش عملكرد كلی و مشكلات استفاده از ديوار آتش را بررسی ميكنيم.
بسته های TCP و IP قبل از ورود يا خروج به شبكه ابتدا وارد ديوار آتش ميشوند و منتظر ميمانند تا طبق معيارهای حفاظتی و امنيتی پردازش شوند. پس از پردازش و تحليل بسته سه حالت ممكن است اتفاق بيفتد :
1- اجازه عبور بسته صادر ميشود (Accept Mode)
2- بسته حذف ميشود (Blocking Mode)
3- بسته حذف شده و پاسخ مناسب به مبدا آن بسته داده شود (Response Mode)
غير از حذف بسته ميتوان عملياتی نظير ثبت ، اخطار، ردگيری، جلوگيری از ادامه استفاده از شبكه و توبيخ هم در نظر گرفت.
به مجموعه قواعد ديوار آتش سياستهای امنيتی نيز گفته ميشود. همانطور كه همه جا عمليات ايست و بازرسی وقتگير و اعصاب خرد كن است ديوار آتش هم بعنوان يك گلوگاه ميتواند منجر به بالا رفتن ترافيك ، تاخير، ازدحام و نهايتا بن بست در شبكه شود. یعنی بسته ها آنقدر در پشت ديوار آتش معطل ميمانند تا زمان طول عمرشان به اتمام رسيده و فرستنده مجبور میشود مجددا اقدام به ارسال آنها كند و اين كار متناوبا تكرار ميگردد. به همين دليل ديوار آتش نياز به طراحی صحيح و دقيق دارد تا کمترین تاخیر را در اطلاعات امن و صحیح ایجاد نماید. تاخير در ديوار آتش اجتناب ناپذير است و فقط بايد به گونه ای باشد كه بحران ايجاد نكند.
از آنجايی كه معماری شبكه به صورت لايه لايه است ، در مدل TCP/IP برای انتقال يك واحد اطلاعات از لايه چهارم بر روی شبكه بايد تمام لايه ها را بگذراند، هر لايه برای انجام وظيفه خود تعدادی فيلد مشخص به ابتدای بسته اطلاعاتی اضافه كرده و آنرا تحويل لايه پايين تر ميدهد. قسمت اعظم كار يك ديوار آتش تحليل فيلدهای اضافه شده در هر لايه و header هر بسته ميباشد
سياست امنيتی يك شبكه مجموعه ای متناهی از قواعد امنيتی است كه بنابر ماهيتشان در يكی از لايه های ديوار آتش تعريف ميشوند :
1- قواعد تعيين بسته های ممنوع (بسته های سياه) در اولين لايه از ديوار آتش
2- قواعد بستن برخی از پورتها متعلق به سرويسهايی مثل Telnet يا FTP در لايه دوم
3- قواعد تحليل header متن يك نامه الكترونيكی يا صفحه وب در لايه سوم
لايه اول ديوار آتش:
لايه اول ديوار آتش بر اساس تحليل بسته IP و فيلدهای header اين بسته كار ميكند و در اين بسته فيلدهای زير قابل نظارت و بررسی هستند :
1- آدرس مبدا : برخی از ماشينهای داخل و يا خارج شبكه با آدرس IP خاص حق ارسال بسته نداشته باشند و بسته هايآنها به محض ورود به ديوار آتش حذف شود.
2- آدرس مقصد : برخی از ماشينهای داخل و يا خارج شبكه با آدرس IP خاص حق دريافت بسته نداشته باشند و بسته های آنها به محض ورود به ديوار آتش حذف شود. (آدرس های IP غير مجاز توسط مسئول ديوار آتش تعريف ميشود.)
3- شماره شناسايی يك ديتاگرام قطعه قطعه شده (Identifier & Fragment Offset) : بسته هايی كه قطعه قطعه شده اند يا متعلق به يك ديتاگرام خاص هستند بايد حذف شوند.
4- شماره پروتكل : بسته هايی كه متعلق به پروتكل خاصی در لايه بالاتر هستند ميتوانند حذف شوند. يعنی بررسی اينكه بسته متعلق به چه پروتكلی است و آيا تحويل به آن پروتكل مجاز است يا خير؟
5- زمان حيات بسته : بسته هايی كه بيش از تعداد مشخصی مسيرياب را طی كرده اند مشكوك هستند و بايد حذف شوند.
6- بقيه فيلدها بنابر صلاحديد و قواعد امنيتی مسئول ديوار آتش قابل بررسی هستند.
مهمترين خصوصيت لايه اول از ديوار آتش آنست كه در اين لايه بسته ها بطور مجزا و مستقل از هم بررسی ميشوند و هيچ نيازی به نگه داشتن بسته های قبلی يا بعدی يك بسته نيست. بهمين دليل ساده ترين و سريع ترين تصميم گيری در اين لايه انجام ميشود. امروزه برخی مسيريابها با امكان لايه اول ديوار آتش به بازار عرضه ميشوند يعنی به غير از مسيريابی وظيفه لايه اول يك ديوار آتش را هم انجام ميدهند كه به آنها مسيريابهای فيلتركننده بسته (Pocket Filtering Router ) گفته ميشود. بنابراين مسيرياب قبل از اقدام به مسيريابی بر اساس جدولی بسته های IP را غربال ميكند و تنظيم اين جدول بر اساس نظر مسئول شبكه و برخی قواعد امنيتی انجام ميگيرد.
با توجه به سزيع بودن اين لايه هرچه درصد قواعد امنيتی در اين لايه دقيقتر و سخت گيرانه تر باشند حجم پردازش در لايه های بالاتر كمتر و در عين حال احتمال نفوذ پايين تر خواهد بود ولی در مجموع بخاطر تنوع ميلياردی آدرسهای IP نفوذ از اين لايه با آدرسهای جعلی يا قرضی امكان پذير خواهد بود و اين ضعف در لايه های بالاتر بايد جبران شود.
لايه دوم ديوار آتش:
در اين لايه از فيلدهای header لايه انتقال برای تحليل بسته استفاده ميشود. عمومی ترين فيلدهای بسته های لايه انتقال جهت بازرسی در ديوار آتش عبارتند از :
1- شماره پورت پروسه مبدا و مقصد : با توجه به آنكه پورتهای استاندارد شناخته شده هستند ممكن است مسئول يك ديوار آتش بخواهد سرويس ftp فقط در محيط شبكه محلی امكان پذير باشد و برای تمام ماشينهای خارجی اين امكان وجود نداشته باشد. بنابراين ديوار آتش ميتواند بسته های TCP با شماره پورت های 20 و 21 (مربوط به ftp) كه قصد ورود و خروج از شبكه را دارند ، حذف كند. يكی ديگر از سرويسهای خطرناك كه ممكن است مورد سو استفاده قرار گيرد Telnet است كه ميتوان به راحتی پورت 23 را مسدود كرد. يعنی بسته هايی كه مقصدشان شماره پورت 23 است حذف شوند.
2- فيلد شماره ترتيب و فيلد Acknowledgment : اين دو فيلد نيز بنا بر قواعد تعريف شده توسط مسئول شبكه قابل استفاده هستند.
3- كدهای كنترلی (TCP code Bits) : ديوار آتش با بررسی اين كدها ، به ماهيت آن بسته پی برده و سياستهای لازم را بر روی آن اعمال ميكند. بعنوان مثال يك ديوار آتش ممكن است بگونه ای تنظيم شود كه تمام بسته هايی كه از بيرون به شبكه وارد ميشوند و دارای بيت SYN=1 هستند را حذف كند. بدين ترتيب هيچ ارتباط TCP از بيرون به درون شبكه برقرار نخواهد شد.
از مهمترين خصوصيات اين لايه آنست كه تمام تقاضا های برقراری ارتباط TCP بايستی از اين لايه بگذرد و چون در ارتباط TCP ، تا مراحل " سه گانه اش" به اتمام نرسد انتقال داده امكان پذير نيست لذا قبل از هر گونه مبادله داده ديوار آتش ميتواند مانع برقراری هر ارتباط غير مجاز شود. يعنی ديوار آتش ميتواند تقاضاهای برقراری ارتباط TCP را قبل از ارائه به ماشين مقصد بررسی نموده و در صورت قابل اطمينان نبودن مانع از برقراری ارتباط گردد. ديوار آتش اين لايه نياز به جدولی از شماره پورتهای غير مجاز دارد.
لايه سوم ديوار آتش:
در اين لايه حفاظت بر اساس نوع سرويس و برنامه كاربردی انجام ميشود. يعنی با در نظر گرفتن پروتكل در لايه چهارم به تحليل داده ها ميپردازد. تعداد header ها در اين لايه بسته به نوع سرويس بسيار متنوع و فراوان است. بنابراين در لايه سوم ديوار آتش برای هر سرويس مجزا (مانند وب، پست الكترونيك و...) بايد يك سلسله پردازش و قواعد امنيتی مجزا تعريف شود و به همين دليل حجم و پيچيدگی پردازش ها در لايه سوم زياد است. توصيه موكد آنست كه تمام سرويسهای غير ضروری و شماره پورتهايی كه مورد استفاده نيستند در لايه دوم مسدود شوند تا كار در لايه سوم كمتر باشد.
بعنوان مثال فرض كنيد كه موسسه ای اقتصادی، سرويس پست الكترونيك خود را دائر نموده ولی نگران فاش شدن برخی اطلاعات محرمانه است. در اين حالت ديوار آتش در لايه سوم ميتواند كمك كند تا برخی آدرسهای پست الكترونيكی مسدود شوند و در عين حال ميتواند در متون نامه های رمز نشده به دنبال برخی از كلمات كليدی حساس بگردد و متون رمز گذاری شده را در صورتی كه موفق به رمزگشايی آن نشود حذف نمايد.
بعنوان مثالی ديگر يك مركز فرهنگی علاقمند استقبل از تحويل صفحه وب به كاربر درون آنرا از لحاظ وجود برخی از كلمات كليدی بررسی نمايد و اگر كلماتی كه با معيارهای فرهنگی مطابقت ندارد درون صفحه يافت شد آن صفحه را حذف نمايد.
فيلترهای 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) يك ابزار نرم افزاری است كه روی ماشين شما نصب ميشود و ورود و خروج بسته ها به یا از ماشين را نظارت ميكند و مانع دسترسی غير مجاز به منابع شده و از داده ها حفاظت ميكند.
در اکثر نسخه های لینوکس و همچنین در ویندوز اکس پی هنگام نصب ، يك ديوار آتش با يكسری قواعد پيش فرض و نسبتا مطمئن بر روی ماشين كاربر فعال شده و ترافيك بسته ها را نظارت ميكند و حتی الامكان از دسترسی غير مجاز به آن جلوگيری ميكند. اگر کاربری بخواهد از ضریب تنظیمات امنیتی بالاتری بر خوردار شود بايد سطوح امنیتی بالاتری را با پیکربندی فایروال در نظر بگیرد و یا از فایروالهای سخت افزاری علاوه بر فایروالهای ذکر شده استفاده نماید .




source : shabgard.org