تارا فایل

پاورپوینت دیوار آتشین


موضوع

دیوار آتشی

استاد ارجمند
سرکار خانم صنعتی

تهیه کننده
وحید شبیری
بهار 87

مقدمه :
Firewall در فرهنگ کامپیوتر یعنی محافظت از شبکه های داخلی در مقابل شبکه های خطاکار . معمولا یک شبکه کامپیوتری با تمام دسترسی ها در طرف و در طرف دیگر شما شبکه تولیدات شرکت را دارید که باید در مقابل رفتارهای مخرب محافظت شود. چند سوال مطرح می شود که آیا واقعا نیاز به محافظت از یک شبکه داخلی داریم و سوال دیگر اینکه چگونه از طریق یFirewall در فرهنگ کامپیوتر یعنی محافظت از شبکه های داخلی در مقابل شبکه های خطاکار .

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

پیاده سازی دیواره های آتش
هر کاربر با تجربه اینترنت می داند که یک دیواره آتش چیست و چه کاربردی دارد. برای دانستن تعریف دقیق آن می توانید به مقاله دیواره آتش چیست مراجعه کنید. در این مقاله دسته بندی دقیقی از روش های تولید دیواره آتش ارائه نخواهد شد، بلکه تنها به مرور برخی از مهم ترین این روش ها پرداخته می شود. کلیه این روش ها مربوط به پیاده سازی دیواره آتش تحت نسخه های مختلف سیستم عامل ویندوز می باشد. از صحبت در مورد مزایا و معایب این رویکردها در این مقاله خودداری می شود. برای اطلاعات بیشتر در این زمینه می توانید به مقاله روش های مختلف پیاده سازی دیواره آتش، مزایا و معایب رجوع کنید.

تکنولوژیهای فیلترینگ ترافیک شبکه در ویندوز
با وجود این که ویندوز 9X/ME و ویندوز XP/NT واسطهای سوکت مشابه دارند و معماری NDIS نیز درایورهای باینری miniport سازگار برای واسطهای شبکه را پشتیبانی می کند، زیر سیستمهای داخلی شبکه آنها تفاوتهایی با هم دارند. در واقع، زیرسیستمهای شبکه ویندوز NT/2000/XP خیلی پیچیده تر از ویندوز 9X/ME است، ولی هر دو قابل تقسیم به بخش های زیر می باشند:
NDIS- : در سال 1989 Microsoft و 3com با هم (Network Driver Interface Specification) NDIS را گسترش دادند که به درایورهای شبکه اجازه می دهد از سرویسهای واسط شبکه برای مخفی کردن جزئیات عملکرد خودشان استفاده کنند. درایور شبکه با مشخصات ذکر شده NDIS-miniport نامیده می شود. NDIS-miniport با نسخه های مختلف ویندوز سازگار است.
-درایورهای شبکه: توصیف جزئیات این درایور خارج از حوصله این مقاله می باشد. به طور خلاصه یک درایور شبکه (به طور مثال TCP/IP ) در لایه پایین از توابع کتابخانه ایNDIS برای دستیابی به شبکه استفاده می کند و ممکن است (TDI (Transport Data Information را در لایه بالایی ارائه دهد. واسط TDI ارائه شده می تواند توسط Clientهای متنوعی نظیر بخشی از پیاده سازی سوکت afd.sys (در ویندوزهای NT/2000/XP) استفاده شود.
-DLL های سطح کار بر که واسط سوکت ویندوز را تشکیل می دهند و عبارتند از : WS2_32.DLL ،msafd.dll ، wshtcpip.dll
در زیر به بررسی سریع روش های ممکن فیلترینگ ترافیک شبکه پرداخته خواهد شد. برخی از این روش ها که در سطح کاربر کار می کنند دارای محدودیت های فراوانی هستند. به عنوان مثال نمی توانند از اتصال برنامه هایی که مستقیما از لایه TDI استفاده می کنند جلوگیری نمایند.

فیلترینگ ترافیک در سطح کار بر

1)Winsock layered service provider (lsp)
این رویکرد در msdn به خوبی مستند سازی شده است و دارای یک مثال مناسب (SPI.CPP) می باشد. از مزایای این روش می توان به امکان تعیین فرآیند هایی که سوکت های ویندوز را فراخوانی می کنند اشاره کرد. این روش می تواند برای انجام اعمالی از قبیل کنترل کیفیت سرویس، رمز نگاری جریان دادها و … استفاده شود. البته همان طور که گفته شدTCP/IP می تواند مستقیماً از طریق TDI فراخوانی شود، بنابراین این روش برای مراقبت در برابر ویروس ها و اسب های تروا و … استفاده نمی شود. به علاوه این رویکرد روی مسیریاب قابل استفاده نیست، زیرا بسته های اطلاعاتی در سطح TCP/IP مسیریابی می شوند (یا حتی در سطح کارت شبکه)
2) Windows 2000 Packet Filtering Interface
ویندوز 2000 APIهایی را ارائه می کند که برنامه های کاربردی سطح کاربر با استفاده از آن ها می توانند مجموعه ای از فیلترها -که توسط TCP/IP برای فیلتر کردن بسته ها استفاده می شوند- را نصب کنند. البته قوانین فیلترینگ نسبتاً محدودند (بر مبنای عبور/انسداد برای آدرس های IP و اطلاعات port). هم چنین این رویکرد فقط در ویندوز 2000 و نسخه های بالاتر قابل استفاده است.
3) جایگزینی Winsock DLL
این رویکرد با توجه به داشتن مشکلات امنیتی متعدد قابل اعتماد نمی باشد و لذا از بحث در مورد آن خودداری می شود.
4) قلاب کردن کلیه توابع ناامن
استفاده از این رویکرد نسبتاً مشکل بوده و نیازمند احتیاط فراوان می باشد، زیرا ممکن است بر روی ثبات و امنیت سیستم تاثیر بگذارد.

فیلترینگ ترافیک در سطح هسته ((kernel
1) kernel-mode sockets filter
این تکنولوژی برای ویندوزهای NT/2000 قابل استفاده است. این رویکرد با قرار گرفتن در مسیر تمامی فراخوانی ها از msafd.dll (پائین ترین لایه سطح کاربر در Winsock ) به ماژول afd.sys در سطح هسته (TDI-client، که در بالاترین سطح هسته قرار دارد و به عنوان بخشی از سوکتهای ویندوز شناخته می شود) و کنترل یا تغییر آن ها کار می کند. این روش، روش جالبی است ولی امکانات بیش تری نسبت به روش LSP ندارد. به علاوه، واسط AFD در نسخه های مختلف ویندوز متغیر بوده است که این مساله باعث افزایش تغییرات لازم برای استفاده از این رویکرد در این نسخه ها می شود.
3) جایگزینی Winsock DLL
این رویکرد با توجه به داشتن مشکلات امنیتی متعدد قابل اعتماد نمی باشد و لذا از بحث در مورد آن خودداری می شود.
4) قلاب کردن کلیه توابع ناامن
استفاده از این رویکرد نسبتاً مشکل بوده و نیازمند احتیاط فراوان می باشد، زیرا ممکن است بر روی ثبات و امنیت سیستم تاثیر بگذارد.
فیلترینگ ترافیک در سطح هسته ((kernel
1) kernel-mode sockets filter
این تکنولوژی برای ویندوزهای NT/2000 قابل استفاده است. این رویکرد با قرار گرفتن در مسیر تمامی فراخوانی ها از msafd.dll (پائین ترین لایه سطح کاربر در Winsock ) به ماژول afd.sys در سطح هسته (TDI-client، که در بالاترین سطح هسته قرار دارد و به عنوان بخشی از سوکتهای ویندوز شناخته می شود) و کنترل یا تغییر آن ها کار می کند. این روش، روش جالبی است ولی امکانات بیش تری نسبت به روش LSP ندارد. به علاوه، واسط AFD در نسخه های مختلف ویندوز متغیر بوده است که این مساله باعث افزایش تغییرات لازم برای استفاده از این رویکرد در این نسخه ها می شود.

2) TDI-FILTER driver
این تکنولوژی هم برای ویندوزهای 9X/ME و هم برای ویندوزهایNT/2000 به کار می رود. البته پیاده سازی آن در این دو تفاوت های فاحشی با هم دارد. برای ویندوز 98 مثالی در Vireo/Numega VtoolsD یافت می شود. هم چنین برای ویندوز NT/2000 مثالی در سایت http://www.sourceforge.net وجود دارد.
این تکنولوژی، تکنولوژی معروفی است که در تعدادی از محصولات تجاری (مثل outpost) استفاده شده است. البته همانند سایر روش هایی که تاکنون بیان شد، این رویکرد فقط می تواند برای ساختن محصولات رده دیواره آتش شخصی استفاده شود و نمی تواند از پشته TCP/IP شما در برابر حملات خرابکاران مراقبت کند.
3) NDIS Intermediate Driver
Microsoft این دسته از درایورها را دقیقا به منظور پیاده سازی دیواره های آتش فراهم کرده است . البته این درایورها برای ویندوز95 قابل پیاده سازی نیست و در مورد ویندوزهای 98/ME/NT نیز بهتر است از این کار صرفنظر شود. نصب این درایورها و هم چنین استفاده آنها برای کاربران خیلی راحت نیست.
پشتیبانی از درایوهایIM در ویندوز 2000/XP بهبود یافته است، ولی مساله دیگری که در این مورد وجود دارد آن است که چنین درایورهایی باید دارای امضای دیجیتال ازMicrosof باشد، در غیر این صورت در هنگام نصب کاربر با پیغامی مبنی بر عدم داشتن امضای دیجیتال مواجه می شود. مثالی در این زمینه در DDK ویندوزهای 2000 به بعد وجود دارد.
4) windows 2000 filter hook driver
این روش در مستندات DDK توضیح داده شده است و فقط برای ویندوز 2000 و نسخه های بالاتر قابل استفاده است. مثالی در این زمینه در http://www.codeproject.com وجود دارد.

5) NDIS HOOKING FILTER DRIVER
این رویکرد بر مبنای قلاب کردن برخی توابع NDIS عمل می کند بدین ترتیب کلیه ترافیک ارسالی و دریافتی شبکه از مسیر توابع قلاب شده عبور خواهد کرد. لذا می توان محدودیت های مورد نظر را در این نقطه اعمال نمود.
6) Miniport Hooking
پایین ترین سطح برای پیاده سازی یک دیواره آتش، سطح miniport می باشد. البته نوشتن کد در این سطح، دشواری های فراوانی دارد و به همین دلیل توصیه نمی شود.
روشهای مختلف پیادهسازی دیواره آتش، مزایا و معایب :
سیستم عامل ویندوز با توجه به موارد استفاده فراوانی که دارد، نسبت به همتایان خود بیشتر مورد توجه هکرها قرار دارد. در این میان سرویسهایی نظیر IISوSMB SHARING بیشترین توجه را به خود جلب کردهاند. بنابراین لازم است که تا حد ممکن تدابیری برای مبارزه با این نفوذها اندیشیده شود. دیوارههای آتش از جمله معروفترین روشها در این زمینه میباشند. اولین قدم برای هک کردن یک سیستم یافتن اطلاعات کافی در مورد آن میباشد. این اطلاعات به هکر نشان میدهند که توپولوژی شبکه مقصد او چیست و ضعیف­ترین یا در حقیقت مناسبترین نقطه جهت انجام حمله کدام است. برای جلوگیری از دستیابی هکر به چنین اطلاعاتی، دیوارههای آتش شیوههای متفاوتی دارند که در ادامه به معرفی آنها میپردازیم.
فیلتر بستهها
فیلتر بستهها بر اساس پارامترهای مختلف بسته نظیر IP وPORT مبدا و مقصد، پروتکل ارتباطی و…. صورت میپذیرد. در چنین حالتی دیوارهآتش روی محتویات بسته نظارتی ندارد و تنها به بررسی پارامترهای فوق میپردازد. مزیت اصلی این روش سرعت بالای آن است، ولی در کنار این مزیت مشکل اصلی چنین روشی عدم توجه به محتویات بسته است که میتواند حاوی یک برنامه مخرب باشد. اکثر دیوارههای آتشی که به صورت سختافزاری طراحی میشوند از این تکنیک استفاده میکنند.

بررسی stateful
در این روش جدولی تحت عنوان جدول وضعیت (state table) در دیواره آتش وجود دارد که وضعیت فعلی کلیه اتصالات را درخود نگاه میدارد. در این صورت تنها بستههایی مجوز عبور مییابندکه از نظر جدول وضعیت، در وضعیت درستی باشند. به عنوان مثال، اجازه عبور یک پیغام ACK در پروتکل TCP پیش از ورود یک پیغام SYN داده نمیشود. با استفاده از این تکنیک، هکرها نمیتوانند به سادگی و تنها با تغییرIP مبدا خود، دیواره آتش را فریفته و آن را دوربزنند همچنین در این روش با توجه به آنکه تنها بستهها در زمان برقراری ارتباط چک میشوند (در مورد پروتکلهای اتصال-گرا (Connection Oriented) نظیرTCP ) و پس از آنکه یک ارتباط مجاز برقرار شد دیگر سایر بسته های ارتباط مد نظر مورد پردازش قرار نمی گیرد. بار پردازش کمتری وجود داشته و لذا کارایی دیواره آتش افزایش خواهد یافت.
فیلتر در سطح برنامههای کار بردی
چنین فیلترهایی میان شبکه ارتباطی و برنامههای کاربردی مختلف نظیرInternet Explorer قرارگرفته و محتویات بستهها را مورد پردازش قرار میدهند تا از وجود کدهای خرابکار URLهای غیر مجاز و … در آنها مطلع شده و مانع از فعالیت آنها شوند.
پیادهسازی دیواره آتش
پیادهسازی دیوارههای آتش تحت سیستم عاملهای مبتنی بر Unix کار نسبتاً سادهای است. این سادگی نتیجه کدهای رایگان متعددی است که در این زمینه وجود دارند. نمونههایی از این دست pf برای سیستم عامل OpenBSD و iptable برای سیستم عامل Linux میباشند. برخلاف وجود منابع گوناگون و متعدد برای سیستمهای مبتنی بر UNIX برای پیادهسازی یک دیواره آتش تحت ویندوز منابع چندان زیادی در دست
نمیباشد و اکثر منابع موجود نیز هزینههای زیادی را برای اجازه استفاده از خود تحمیل میکنند. همچنین روش استاندارد و مشخصی نیز برای انجام این کار در ویندوز وجود ندارد. تکنیکهای مختلفی در این زمینه وجود دارند که برای آگاهی از جزئیات آنها میتوانید به مقاله پیادهسازی دیواره آتش مراجعه نمایید. در ادامه تنها به بیان مزایا و معایب هر یک از این تکنیکها پرداخته میشود.

Layered Socket Provide (LSP
مزایا :
– تحت کلیه ویندوزها به صورت یکسان قابل استفاده است
– دیواره آتش به بستههای کامل دسترسی خواهد داشت. یعنی بستههایی که برای عبور از شبکه ناگزیر به تکههای متعددی شکسته شدهاند به صورت سر هم شده به دیواره آتش خواهند رسید و لذا دیواره آتش مجبور به انجام عمل سر هم کردن بستهها نیست.
معایب :
– نصب و پاکسازی چنین دیواره آتشی به سادگی امکان پذیر نیست و عدم دقت کافی به این مساله ممکن است نیاز به نصب مجدد ویندوز داشته باشد.
– اسبهای تراوا میتوانند به سادگی و با استفاده از همان مکانیزم مورد استفاده دیواره آتش در سطحی پائینتر از آن قرار گرفته و به فعالیت بپردازند.
قلاب TDI
مزایا :
– قابلیت کنترل برنامههای کاربردی در این سطح وجود دارد.
– دسترسی مستقیم به جریان بستهها وجود دارد و به همین دلیل عمده فیلترینگ در این لایه قابل انجام است.
معایب :
– کلیه بستهها به این لایه نمیرسند به عنوان مثال، بستههای پروتکل ICMP در این لایه قابل پردازش نیستند.
– پشته TCP از حملات خارجی نظیر حمله DOS مصون نیست، زیرا لایه TDI بالای پشته پروتکلهای ویندوز قرار دارند.

قلاب NDIS
مزایا :
– دسترسی مستقیم به بستههای دریافتی از شبکه
– جلوگیری از ورود بستهها پیش از آنکه به پشته TCP دسترسی پیدا کنند.
معایب :
– راهی برای یافتن نام پروسهای که بسته دریافت شده متعلق به آن است وجود ندارد.
قلاب Miniport
مزایا :
– دریافت بستهها در پائینترین سطح ممکن در معماری ویندوز
معایب :
– مشکل بودن برنامه نویسی و خطایابی در این سطح
فیلتر ( Intermediate(IM
مزایا :
– وجود مثال در این زمینه به همراه DDK
– وجود اطلاعات مناسب و کافی برای برنامه نویسی در این سطح
معایب :
– نیاز به ثبت دیواره آتش در شرکت مایکروسافت برای جلوگیری از پیغام خطای "sign with Microsoft " در هنگام نصب


تعداد صفحات : حجم فایل:511 کیلوبایت | فرمت فایل : .ppt

بلافاصله بعد از پرداخت لینک دانلود فعال می شود