تبیان، دستیار زندگی
دیوار آتش سیستمی است كه در بین كاربران یك شبكه محلی و شبكه بیرونی (مثلا اینترنت) قرار می گیرد و ضمن نظارت بر دسترسی ها ، در تمام سطوح ورود و خروج اطلاعات را تحت نظر دارد. هر سازمان یا نهادی كه بخواهد ورود و خروج اطلاعات شبكه...
بازدید :
زمان تقریبی مطالعه :

آشنایی با دیوارهای آتش یا 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

برای دریافت برنامهZone Alarm Pro از سایت تبیاناینجا را كلیك كنید.