بررسی نحوه عملکرد فایروال Firewallیا دیواره آتش

دیوار آتش سیستمی سخت افزاری یا نرم افزاری است که بین کامپیوتر شما یا یک شبکه  LAN و شبکه بیرونی (مثلا اینترنت) قرار گرفته و ضمن نظارت بر دسترسی به منابع  resource  سیستم  ، در تمام سطوح ورود و خروج اطلاعات را تحت نظر دارد. هر سازمان یا نهادی که بخواهد ورود و خروج اطلاعات شبکه خود را کنترل کند موظف است تمام ارتباطات مستقیم شبکه خود را با دنیای خارج قطع نموده و هر گونه ارتباط خارجی از طریق یک دروازه که دیوار آتش یا فیلتر نام دارد ، انجام شود.
قبل از تحلیل اجزای دیوار آتش عملکرد کلی و مشکلات استفاده از دیوار آتش را بررسی میکنیم.
بسته های
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) یک ابزار نرم افزاری است که روی ماشین شما نصب میشود و ورود و خروج بسته ها به یا از ماشین را نظارت میکند و مانع دسترسی غیر مجاز به منابع شده و از داده ها حفاظت میکند.
در اکثر نسخه های لینوکس و همچنین در ویندوز اکس پی هنگام نصب ، یک دیوار آتش با یکسری قواعد پیش فرض و نسبتا مطمئن بر روی ماشین کاربر فعال شده و ترافیک بسته ها را نظارت میکند و حتی الامکان از دسترسی غیر مجاز به آن جلوگیری میکند. اگر کاربری بخواهد از ضریب تنظیمات امنیتی بالاتری بر خوردار شود  باید سطوح امنیتی بالاتری را با پیکربندی فایروال در نظر بگیرد و یا از فایروالهای سخت افزاری علاوه بر فایروالهای ذکر شده استفاده نماید .

منبع : http://www.alliancedatacom.com/firewall-tutorial.htm