فهرست مطالب
عنوان صفحه
۱ مقدمه ۱
فصل اول:
۱-۱ انواع حملات ۱
۱-۱-۱ حملات رد سرویس ۱

۱-۱-۲ حملاتی که به منظور بدست آوردن اطلاعات صورت مي‌گیرند ۴
۱-۱-۳ حملاتی که سرویسدهی روی شبکه را دچار مشکل مي‌کنند ۴
۱-۲-امنیت پروتکلها ۵
۱-۲-۱ پیچیدگی سرویس ۵
۱-۲-۲ سوء استفاده از سرویس ۶
۱-۲-۳ اطلاعات ارائه شده توسط سرویس ۶
۱-۲-۴ میزان دیالوگ با سرویسگیر ۶
۱-۲-۵ قابلیت پیکر بندی سرویس ۷
۱-۲-۶ نوع مکانیزم احراز هویت استفاده توسط سرویس ۷
فصل دوم:
۲ فایروالهای packet- fkiter 9
2-1 فيلتر‌هاي stateless 9
2-1-1 کنترل بسته‌ها بر اساس نوع پروتکل ۹
۲-۱-۲ کنترل بسته‌ها بر اساس آدرس IP 9
2-1-3 کنترل بسته‌ها بر اساس پورتهای TCP/UDP 10
2-1-4 کنترل بسته‌ها از روی سایر اطلاعات موجود در سرآیند ۱۱
۲-۱-۵ مشکلات فیلتر‌های استاندارد ۱۲
۲-۱-۶ کنترل بسته‌ها توسط سیستم عامل ۱۳
۲-۲ فیلترهای stateful 13
2-3 مشکلات فیلترها ۱۴

فصل سوم:
۳ NAT 15
3- انواع ترجمه آدرس در NAT 17
3-1-ترجمه پویا ۱۷

۳-۱-۲ ترجمه ایستا ۱۸
۳-۱-۳ توزیع بار ۱۸
۳-۱-۴ افزونگی (Redundancy) 19
3-2 مشکلات NAT 19
3-3 پراکسی ۲۰
۳-۳-۱ عملکردهای امنیتی پراکسی ۲۱
۳-۳-۲ پنهان کردن اطلاعات سرویسگیرها ۲۲
۳-۳-۳ بستن يک سري URL 22
3-3-4 کنترل کنترل محتویات بسته‌ها ۲۲
۳-۳-۵ اطمینان از سالم بودن بسته‌ها ۲۳
۳-۳-۶ کنترل روی دسترسی‌ها ۲۳
۳-۴ تاثیر پراکسی در سرعت ۲۳
۳-۴-۱ cache کردن ۲۳
۳-۴-۲ توزيع بار ۲۴
۳-۴-۳ مشکلات پراکسی ۲۴
۳-۵سیستم‌های تهاجم یاب ۲۶

۳-۵-۱ سیستم‌های تهاجم باب بر مبنای بازرسی ۲۷
۳-۵-۲ سیستم‌های تهاجم یاب طعمه ۲۸
۳-۶ IP Filter 29
3-6-1 نصب IP Filter روی Solaris 30
3-6-2 پیاده سازی یک فیلتر با استفاده از IP filter 30
فصل چهارم:

۴ Snort 36
4-1 مود Sniffer 37
4-2 مود Packet logger 38
4-3 مود تهاجم یاب شبکه ۳۹
۴-۳-۱ فیلترهای BPF 40
4-3-2 فایل پیکربندی Snort 42
4-3-3 Perprocessor‌ها ۴۳
۴-۳-۴ قوانین تهاجم یاب ۴۵
۴-۳-۵ ماجول‌های خروجی ۴۵

 

۴-۴ SAINT 47
4-4-1 فایل پیکربندی ۴۸
۴-۴-۲ خط فرمان ۵۲
۴-۴-۳ فرمت بانک اطلاعاتی ۵۵
۴-۴-۴ بانک اطلاعاتی Facts 5
4-4-5 بانک اطلاعاتی all-hosts 557
4-4-6 بانک اطلاعاتی todo 57
4-4-7 بانک اطلاعاتی CVE 57
4-4-8 آنالیز خروجی ۵۷
منابع و مآخذ ۶۰

۱ مقدمه
این متن به بررسی انواع سیستمهای امنیتی و بررسی نقاط ضعف و قوت هر کدام مي‌پردازد. در این بخش مقدماتی در مورد امنیت پروتکها و انواع حملات بیان مي‌شود و بخشهای بعدی به بررسی دقیق انواع فایروال (فیلتر ، NAT و پراکسی ) و سیستمهای تهاجم یاب مي‌پردازد. سپس سه نمونه از نرم افزارهای مفید امنیتی Snort, IPF) و SAINT) معرفی مي‌گردد.

۱-۱ انواع حملات
در این قسمت یک سری از روشهای متدول برای جمله به شبکه‌های کامپیوتری توضیح داده مي‌شود و در مورد هر کدام مشخصات و نحوه شناسایی آن حمله بیان شده است. این حملات در چهار دسته عمده تقسیم بندی شده اند:
– حملات رد سرویس یا DoS
– حملات استثماری
– حملاتی که به منظور بدست آوردن اطلاعات صورت مي‌گیرند.
– حملاتی که سرویسدهی روی شبکه را دچار مشکل مي‌کنند.
۱-۱-۱ حملات رد سرویس

این نوع حملات با ایجاد یک بار زیاد و غیر عادی روی سرورها باعث از کار افتادن سرویسهای ارائه شده توسط آنها مي‌شوند. از آنجا که انجام دادن این نوع حمله ساده است. لذا بیشتر متداول مي‌باشد. این قسمت بيشتر این حملات را توضیح مي‌دهد:
Ping of Death
این حمله از طریق بسته‌های ICMP صورت مي‌گیرد. حجم بسته‌های ICMP به ۶۴KB محدود مي‌شود و بسته‌هایی که در سر آیند آنها حجم بسته بیشتر از این مقدار بیان شده (در حالیکه نیست) ممکن است در سمت گیرنده مشکلاتی ایجاد کنند چون بسیاری از سیستم عاملها کنترل دقیقی روی بسته‌های معیوب ندارند. این نوع حمله نبستاً قدیمی است و امروزه تمام سیستم عامل‌ها قادر به تشخیص آن مي‌باشند.
Teardrop
این حمله از طریق Fragment‌های IP صورت مي‌گیرد. یک Fragment شامل اطلاعاتی است که بیان مي‌کند چه قسمتی از بسته داخل آن قرار دارد. بسیاری از سیستمها ممکن است با گرفتن Fragment‌هایی که متعلق به یک بسته بوده و با هم تناقض دارند (یک قسمت از بسته در دو Fragment قرار داشته باشد) دچار مشکل شوند. این نوع حمله نیز قدیمی است.
UDP Flooding
این حمله با استفاده از سرویسهای chargen , echo صورت مي‌گیرد. با فرستادن یک درخواست جعلی از طرف یک سرویس echo برای یک سرویس chargen مي‌توان به راحتی حجم زیادی از ترافیک را روی شبکه ایجاد کرد.
SYN Fooding
این حمله با فرستادن SYN پروتکل TCP صورت مي‌گیرد. برای یک سرور دریافت یک بسته SYN به معنی گرفتن فضایی از حافظه برای آن ارتباط و فرستادن یک بسته ACK در پاسخ مي‌باشد. فضای حافظه تخصیص داده شده تا زمان timeout یا بسته شدن ارتباط باقی مي‌ماند. اگر تعداد زیادی بسته SYN فرستاده شود موجب اتلاف قسمت عمده ای از حافظه مي‌شود، هر چند فرستادن بسته‌های ACK نیز زمان و پردازش زیادی لازم دارد. این حمله در نهایت سرور را به وضعیتی مي‌کشاند که قادر به قبول ارتباط جدید نمی باشد. از آنجا که فرستنده بسته SYN در این حمله منتظر پاسخ نمی ماند مي‌تواند بسته‌ها را قبل از فرستاندن تغییر دهد

و هر بار یک آدرس تصادفی بجای آدرس فرستنده آنها قرار دهد. در این صورت تشخیص حمله بسیار مشکل مي‌شود.
Land Attack
این حمله شبیه SYN Fooding مي‌باشد. در این حمله یک بسته SYN برای سرور ارسال مي‌شود که آدرس فرستنده و گیرنده آن هر دو آدرس خود سرور است. سرور پس از دریافت این بسته پاسخ آن را برای خودش مي‌فرستد که نتیجه ای مشابه SYN Fooding به همراه دارد.

Smurf Attack
این حمله از طریق بسته‌های ICMP صورت مي‌گیرد. در این حمله یک بسته ICMP Reqest داخل شبکه فرستاده مي‌شود که آدرس reply آن آدرس broadcast شبکه مي‌باشد. چنین بسته‌هایی معمولاً ترافیک بالایی داخل شبکه ایجاد مي‌کنند.

Fragle Atack
این حمله شبیه Smurf Attack است ولی بجای بسته‌های ICMP از بسته‌های UDP استفاده مي‌کند.

E-mail Bombs
این نوع حمله شامل فرستادن نامه‌های بزرگ بطور مداوم برای یک سیستم است. از آنجا که سمت فرستنده و گیرنده دارای بار نسبتاً مساوی هستند از این روش کمتر مي‌توان بعنوان یک DoS واقعی استفاده کرد.
Malfrmed Attacks
بسیاری از سرویسها هنگام دریافت بسته‌هایی که دارای خطا مي‌باشند با مشکل مواجه مي‌شوند چون کنترل دقیق روی بسته‌های معیوب ندارند و این بسته‌ها باعث ایجاد مشکل در برنامه سرور مي‌شوند. یک تقسیم بر صفر یا سرریز بافر مي‌تواند سرور را از کار بیندازد یا سبب دسترسی افراد غیر مجاز به آن شود. هر سرویسی ممکن است در معرض این حمله قرار بگیرد چون در هر لحظه امکان پیدا شدن یک bug در برنامه مربوطه وجود دارد. بیشترین مواردی که از این حمله مشاهده شده بر روی سرویسهای وب و پست الکترونیکی بوده است.
حملات استثماری
این نوع حملات بیشتر برای بدست آوردن کنترل مستقیم روی یک ماشین انجام مي‌شود. مهمترین این حملات از قرار زیر مي‌باشند:
حدس زدن Password
بسیاری از سرورها برای ارائه سرویس نیاز به احراز هویت کاربران از طریق Password دارند. برنامه‌هایی وجود دارند که یک سری کلمات (اسامی، کلمات dictionary، اعداد، …) را بطور اتوماتیک تست مي‌کنند تا به یک Password معتبر دسترسی پیدا کنند.
Trojan Horse
Trojan Horse به برنامه ای گفته مي‌شود که اغلب توسط یک مهاجم روی سیستم نصب مي‌شود و اطلاعاتی در مورد سیستم به خارج از شبکه مي‌فرستد یا راهی برای دسترسی غیر مجاز به سیستم فراهم مي‌کند که به آن backdoor مي‌گویند. Trojan Horse معمولاً برنامه کوچکی است که به سادگی نصب مي‌شود و از دید کاربر نیز پنهان مي‌ماند.

Buffer Overrun
اکثر سرورها برای رسیدگی به درخواستهایی که از شبکه دریافت مي‌کنند فضایی از حافظه را به عنوان بافر اختصاص مي‌دهند. اغلب برنامه‌ها حجم این بافر را به یک مقدار ثابت محدود مي‌کنند یا به بسته‌های رسیده اطمینان کرده و اندازه بسته‌ها را از روی اطلاعات سر آیند آنها استخراج مي‌کنند. این پدیده معمولاً زمانی اتفاق مي‌افتد که طول یک بسته از مقدار در نظر گرفته شده برای بافربیشتر باشد یا اطلاعات غلط در مورد طول خود به برنامه بدهد. برای مثال اگر طول یک بسته ۲۵۶ بایت باشد ولی در اطلاعات غلط در مورد طول خود معرفی شده باشد ۲۴۰ بایت بسته داخل بافر قرار مي‌گیرد و ۱۶ بایت اضافی در یک مکان دیگر از حافظه نوشته مي‌شود و منجر به از بین رفتن اطلاعات آن قسمت حافظه مي‌شود. در این حالت با قرار دادن کد ماشین در

۱۶ بایت آخر بسته ممکن است بتوان این کد را روی سرور اجرا کرده کنترل سرور را بدست آورد.
۱-۱-۲ حملاتی که به منظور بدست آوردن اطلاعات صورت مي‌گیرند
این نوع حملات هیچگونه صدمه ای به سیستم نمی زنند و تنها برای بدست آوردن اطلاعات جهت حملات بعدی مورد استفاده قرار مي‌گیرند. مهمترین اطلاعاتی که یک مهاجم مي‌تواند بدست آورد در مورد آدرس سیستمهای داخل شبکه، سیستم عامل روی آنها، پورتهای باز این سیستمها و کاربران روی آنها مي‌باشد. برای پیدا کردن آدرسهای داخل شبکه از نرم افزار‌هایی استفاده مي‌شود که برای یک دسته از آدرسها پیغام TCMP Request مي‌فرستد. با دریافت پاسخ این بسته‌ها سیستمهای موجود در داخل شبکه شناسایی مي‌شوند و هر کدام از این آدرسها برای حملات بعدی مورد بررسی قرار مي‌گیرند. قبل از حمله باید اطلاعات خاصی در مورد هر سیستم بدست آورد که این اطلاعات مي‌تواند شامل سیستم عامل، پورتهای باز و کاربران معتبر روی آن سیستم باشد. برنامه‌هایی تحت عنوان Port Scanner وجود دارند که مي‌توانند با فرستادن بسته‌های خاصی به سیستم اطلاعاتی در مورد پورتهای باز، سرویسهای موجود روی سیستم و سیستم عامل آنها بدست بیاورند. Port Scanner‌ها انواع مختلف دارند و بعضا از روشهایی استفاده مي‌کنند که به سختی قابل تشخیص مي‌باشند. برای تشخیص نام کابران روی سیستم نیز مي‌توان از سرویسهایی نظیر Finger استفاده کرد. سرویسFinger در سیستم عاملهای مبتنی بر Unix اطلاعات مفیدی در مورد کاربران ارائه مي‌کند ولی از این سرویس برای پیدا کردن نام کاربران معتبر نیز مي‌توان استفاده کرد.
۱-۱-۳ حملاتی که سرویس‌دهی روی شبکه را دچار مشکل مي‌کنند
این نوع حملات بر روی سرورهای شبکه اعمال مي‌شود و آنها را وادار مي‌کند اطلاعات اشتباه به سرویسگیرها بدهند. این حملات معمولا راه را برای حملات بعدی باز مي‌کند. دو نمونه از این حملات عبارتند از:
DNS Cache Pllution
از آنجایی که سرورهای DNS هنگام رد و بدل کردن اطلاعات با سرورهای دیگر از مکانیزم امنیتی خاصی استفاده نمی کنند مهاجمین مي‌توانند با دادن اطلاعات غلط به سرور DNS آنها را وادار کنند اطلاعات اشتباه به سرویسگیرها بدهند. سپس سرویسگیرها از همین اطلاعات غلط استفاده مي‌کنند. در این حالت بجای وصل شدن به یک سایت خاص ممکن است به سایت مهاجمین وصل شوند.

Email جعلی
تولید نامه‌های جعلی از طریق سرور پست الکترونیکی کار بسیار ساده است چون هیچ مکانیزم امنیتی خاصی برای احراز هویت کاربران استفاده نمی شود. این کار به سادگی پیگربندی اشتباه یک سرویسگیر مي‌باشد. با ارسال نامه‌های جعلی برای کاربران از طرف اشخاص مورد اطمینان آنها مي‌توان باعث نصب یک Trojan Horse روی سیستم آنها، ارسال اطلاعات محرمان در پاسخ نامه، یا اتصال کاربران به یک سایت خاص شد.
۱-۲ امنیت پروتکلها
در این قسمت یک سری پروتکلهای متداول که بر پایه IP کار مي‌کنند از لحاظ امنیتی مورد بررسی قرار مي‌گیرند. از آنجا که هر کدام از این پروتکلها برای ارائه یک سرویس بکار مي‌روند، دو اصطلاح پروتکل و سرویس معمولاً بجای یکدیگر بکار مي‌روند. میزان آسیب پذیری یک سرویس یا پروتکل با پاسخ داده به سئوالات زیر مشخص مي‌شود:
– سرویس مربوطه چقدر پیچیدگی دارد؟
– این سرویس چگونه مي‌تواند مورد سوء استفاده قرار بگیرد؟
– چه اطلاعاتی در مورد شبکه توسط سرویس افشا مي‌شود؟
– چه مقدار دیالوگ با سرویسگیر انجام مي‌شود؟
– سرویس تا چه حد قابلیت پیکربندی و برنامه نویسی دارد؟
– چه سرویسهای دیگری بر پایه این سرویس قرار گرفته اند؟
– این سرویس چه مکانیزمی برای احراز هویت سرویسگیرها استفاده مي‌کند؟

۱-۲-۱ پیچیدگی سرویس
سرویسهای پیچیده خیلی زودتر از سرویسهای ساده مورد تهاجم قرار مي‌گیرند. سرویس echo یک سرویس ساده است که تمام کاراکترهای ارسالی از طرف سرویسگیر را دوباره برای وی مي‌فرستد. این سرویس بیشتر برای مقاصد تست مورد استفاده قرار مي‌گیرد. در مقابل سرویس پست الکترونیکی یک سرویس پیچیده مي‌باشد که نامه‌های الکترونیکی را رد و بدل مي‌کند. بسیاری از سرویسهای مرتبط با این سرویس مانند IMAP, POP نیاز به احراز هویت کاربر قبل از ارائه سرویس به وی دارند، هر چند در مقابل سرویس SMTP نامه‌ها را بدون توجه به فرستنده آنها (هر

کاربری که باشد، حتی یک کاربر قلابی) ارسال مي‌کند. اگر اطلاعات مربوط به password کاربران افشا گردد، مکانیزم امنیتی و احراز هویت فریب داده شود، یا حتی خود سرویس به گونه ای مورد تهاجم واقع مي‌شود که اطلاعات محرمانه شبکه را به بیرون منتشر کند، هر کدام از این شرایط امنیت شبکه در معرض خطر بزرگی قرار گرفته است.
۱-۲-۲ سوء استفاده از سرویسصد مخرب نیز مورد استفاده قرار گیرد. سرویس chargen یک سرویس UNIX برای تولید مداوم کارکترهای ASCII مي‌باشد. این سرویس از آنجا که کاراکترهای تصادفی تولید مي‌کند برای تست نرم افزار‌های شبکه یک ابزار قدرتمند مي‌باشد. این سرویس مي‌تواند به سادگی مورد سوء استفاده قرار گیرد. برای مثال فرض کنید که یک بسته SYN با آدرس فرستند تحریف شده برای این سرویس فرستاده شود. در مقابل سرویس سیل عظیمی از کاراکتر را برای کسی که آدرس وی بجای آدرس فرستند در بسته قرار دارد فرستاده خواهد شد. در این حالت ایجاد کننده این بار ترافیکی بدون اینکه هزینه‌های مصرف کرده باشد جریان

بسته‌ها را بین دو آدرس دلخواه ایجاد مي‌کند.
۱-۲-۳ اطلاعات ارائه شده توسط سرویس
بعضی سرویسها در عمل بسیار ساده اند ولی مي‌توانند برای شبکه خطرناک باش

ند. سرویس finger برای راحتی کاربران UNIX طراحی شده است. این سرویس یک سری اطلاعات در مورد account‌های موجود در سیستم ارائه مي‌کند. مهاجمین مي‌توانند از این سرویس برای پیدا کردن account‌های فعال سیستم استفاده کنند. پیدا کردن نام یک account معتبر مي‌تواند نقطه شروع مناسبی برای حمله به سیستم باشد.

۱-۲-۴ میزان دیالوگ با سرویسگیر
امن کردن یک سرویس با دیالوگ ساده به مراتب راحتتر از امن کردن سرویسی است که نیاز به دیالوگهای پیچیده با سرویسگیر دارد. برای مثال سرویس HTTP (در نسخه‌های اولیه و بدون در نظر گرفتن ASP, CGI و موارد مشابه) یک پروتکل ساده است که در آن سرویسگیر تقاضای یک سری منابع را به سرور مي‌دهد و سرور نیز بدون توجه به وضعیت ارتباط موجود در صورت امکان منابع در خواست شده را برای سرویسگیر تهیه مي‌کند. (این ارتباط بصورت Stateless است). امن کردن یک ارتباط Stateful به مراتب مشکلتر است. مخصوصاً اگر سرویس نیاز به احراز هویت سرویسگیر نیز داشته باشد و درخواستها و پاسخهای بین سرور و سرویسگیر موجب تغییر در وضعیت ارتباط شود.
۱-۲-۵ قابلیت پیکربندی سرویس

هر اندازه سرویس قابل پیکربندی و برنامه ریزی باشد امکان بروز اشتباه در این تنظیمات بیشتر مي‌شود و در نتیجه امکان پیدا شدن bug‌های مختلف در آن بسیار زیاد است. از این رو سرورهایی مانند Exchange Server و Internet Information Server (یا هر وب سروری که امکان اجرا کردن برنامه‌هایی را برای تولید صفحات HTML در آن وجود داشته باشد) ممکن است دارای مشکلات امنیتی باشند که همه آنها در حال حاضر شناخته شده نیستند و به مرور زمان پدید مي‌آیند.
۱-۲-۶ نوع مکانیزم احراز هویت استفاده شده توسط سرویس
سرویسهایی که نیاز به احراز هویت سرویسگیر دارند از دو طرف در معرض خطرات امنیتی قرار دارند: اول اینکه خود مکانیزم استفاده شده ممکن است ضعیف باشد و این امر باعث سوء استفاده از سرویس مي‌شود. دوم اینکه اغلب کاربران از یک password برای سرویسهای مختلف استفاده مي‌کنند و در صورت لو رفتن password یک سرویس سایر سرویسها نیز در معرض خطر قرار مي‌گیرند. یک نمونه بارز این خطر سرویس POP است. این سرویس اغلب از password‌های خود سیستم برای احراز هویت کاربران استفاده مي‌کند و بسیاری از سرورهای POP امکان رد و بدل کردن password‌ها بطور امن را ندارند. در صورت لو رفتن یک password سرویس POP کل سیستم در معرض تهدیدهای امنیتی قرار مي‌گیرد.
در انتهای این قسمت یک جدول تهیه شده است که میزان فاکتورهای ذکر شده را برای تعدادی از سرویسهای معمول ارائه مي‌کند:

 

نام سرویس پورت و پروتکل پیچیدگی میزان سوء استفاده اطلاعات ارائه شده دیالوک با سرویسگیر قابلیت پیکربندی
DHCP UDP
68 نسبتاً پیچیده متوسط متوسط کم متوسط
Chargen TCP& UDP
19 ساده زیاد ــ ــ ــ
Daytime UDP
13 ساده کم ــ کم ــ

Discard UDP
13 ساده کم ــ کم ــ
DNS UDP
53 پیچیده زیاد کم کم زیاد
Echo UDP
7 ساده کم ــ کم ــ
Finger TCP
79 ساده متوسط زیاد کم متوسط
FTP TCP
20&21 پیچیده زیاد متوسط زیاد زیاد
Gopher TCP
70 ساده کم کم کم کم
HTTP TCP
80 پیچیده زیاد متوسط زیاد زیاد
IMAP TCP
143 ساده کم متوسط کم کم

IDAP TCP &
UDP
389 پیچیده کم متوسط متوسط متوسط
NetBIOS TCP
137-139 پیچیده زیاد زیاد زیاد کم
NFS TCP&
2049 پیچیده زیاد زیاد زیاد متوسط
POP3 TCP
110 ساده متوسط متوسط کم کم
Queue UDP
17 ساده کم ــ کم ــ
RPC(sun) UDP
111 متوسط زیاد زیاد زیاد زیاد
RSH TCP
514 متوسط زیاد زیاد زیاد کم
SMTP TCP
25 پیچیده متوسط متوسط متوسط زیاد
SNMP UDP
161 متوسط زیاد زیاد کم متوسط
Telnet TCP
23 ساده زیاد زیاد کم ــ

TFTP UDP
69 ساده زیاد متوسط کم کم
فصل دوم:
۲ فایروالهای packet-filter
packet-filter‌ها ابتدایی ترین نوع فایروال مي‌باشند. اولین اقدام در جهت امنیت پروتکل TCP/IP نیز همین فیلترها مي‌باشند که عملکرد خود را از طریق چک کردن سرآیند بسته‌ها انجام مي‌دهند. فیلترها به تنهایی نمی توانند امنیت کامل برای شبکه برقرار کنند و باید همراه با انواع دیگر فایروال مانند NAT و پراکسی استفاده شوند، همانطور که NAT و پراکسی نیز نمی تواند بدون یک فیلتر قوی عملکرد مناسب داشته باشند.ها به تفصیل مورد بحث قرار خواهد گرفت.
۲-۱ فیلترهای stateless
فیلترها معمولاً مسیر یا بهایی هستند که با توجه به اطلاعات موجود در سرآیند بسته‌ها در مورد رد شدن آن تصمیم مي‌گیرند. فیلترها از لحاظ تئوری مي‌توانند این کار را بر اساس تمام فیلد‌های موجود در سرآیند بسته انجام دهند، ولی عملاً این کار بر اساس فیلدهای زیر انجام مي‌شود که بیشتر متداول هستند:
– پروتکل لایه شبکه و جلسه
– آدرس IP
– پورت TCP/UDP
– شماره fragment
– اطلاعات مربوط به source routing
2-1-1کنترل بسته‌ها بر اساس نوع پروتکل
این نوع فیلترها بسته‌ها را بر اساس فیلد پروتکل موجود در سرآیند کنترل مي‌کنند. از فیلد پروتکل مي‌توان برای مشخص کردن یک سری از سرویسها مانند UGMP, ICMP, TCP, UDP استفاده کرد. برای مثال اگر یک سرویس TCP مانند وب توسط یک سرور ارائه مي‌شود مي‌توان سایر سرویسها مانند UDP را بست. فیلد پروتکل خیلی کلی است و از روی آن نمی توان کنترل مناسبی روی بسته‌ها داشت.
۲-۱-۲ کنترل بسته‌ها بر اساس آدرس IP

این نوع فیلترها می‌توانند برقراری ارتباط به (یا از ) یک سری آدرسهای مختلف را محدود کنند. اکثر فیلترها همه آدرسها را باز گذاشته و دسترسی به یک سری خاص آدرسها را مي‌بندند یا بر عکس این کار را انجام مي‌دهند. یعنی دسترسی به همه آدرسها را مي‌بندند ویک سری آدرسهای خاص را باز مي‌گذارند. این دو سیاست به ترتیب سیاست accept و سیاست deny نامیده مي‌شوند. سیاست accept معمولاً مزیتی برای شبکه محسوب نمی شوند چون در این حالت کنترل لازم روی همه آدرسها وجود ندارد و هیچ تضمینی نیست که مهاجمینی که آدرسهای آنها بسته شده است از آدرسهای دیگر استفاده نکنند. سیاست deny خیلی

امن تر مي‌باشد، در این حالت مي‌توان مطمئن شد کسانی که اطلاعات کافی در مورد آنها موجود مي‌باشد دسترسی به شبکه دارند.
فیلترهای خوب مي‌توانند دسترسی‌ها را بر اساس پروتکل کنترل کنند. برای مثال مي‌توان دسترسی همه را به سرویس HTTP باز گذاشت ولی فقط به کاربران شبکه داخلی اجازه استفاده از سرویس Telnet را داد. در فیلترهای ساده معمولاً فقط مي‌توان دسترسی آدرسهای خاصی را به یک سرویس باز گذاشت یا بست و برای یک سرویس خاص نمی توان با آدرسهای مختلف رفتار متفاوتی داشت. باید این نکته را در نظر بگیرید که فیلد آدرس فرستنده که در بسته IP وجود دارد آدرسی نیست که بسته از آن آمده است و این آدرس قابل جعل کردن است. از این نقطه ضعف مي‌توان برای فرستادن بسته‌های غیر مجاز به داخل شبکه استفاده کرد؛ البته پاسخ این بسته‌ه

ا برای آدرس جعل فرستاده مي‌شود. راههایی وجود دارد که مي‌توان بر این مشکل غلبه کرد؛ برای مثال مي‌توان با استفاده از تکنیک source routing آدرس بازگشت بسته را نیز تعیین کرد، هر چند هنوز هم مي‌توان از این نقطه ضعف برای فرستادن بسته‌هایی که نیازی به برگشت آنها نیس (مانند حملات DoS) استفاده کرد. مهاجم باید یک آدرس IP را که اجازه عبور از فیلتر را دارد پیدا کند و بسته را از طرف آن بفرستد.
۲-۱-۳ کنترل بسته‌ها بر اساس پورتهای TCP/UDP
فیلدهای مربوط به پورتهای UDP, TCP معمولترین فاکتور برای کنترل بسته‌ها مي‌باشند چون

این اطلاعات به دقت مشخص مي‌کند که یک بسته به چه منظور فرستاده شده است. فیلتر کردن پورتها همچنین تحت عنوان فیلتر کردن پروتکلها نیز شناخته مي‌شود چون هر کدام از این پورتها یک پروتکل سطح بالا را مشخص مي‌کنند. پروتکلهای متداولی که بر اساس شماره پورتهای UDP, TCP فیلتر مي‌شوند عبارتند از:
Daytime DNS NetBIOS Session Echo
HTTP IMAP Quote Gopher
NFS FTP POP Whois
Telnet SNMP RSH SMTP
NNTP X windows
در مورد پورتها نیز مانند آدرسهای IP دو نوع سیاست deny, accept وجود دارد. در مورد پورتها بر خلاف آدرسهای IP سیاست accept نیز مي‌تواند مفید باشد چون اکثر حملات از طریق یک سری پورت شناخته شده انجام مي‌گیرد. معروفترین این پورتها عبارتند از:

– Tenlnet: باز گذاشتن این پورت به مهاجمین اجازه دستور روی سیستم را مي‌دهد که بیشترین دسترسی ممکن را برای آنها فراهم مي‌آورد.
– NetBIOS Session: باز گذاشتن این پورت روی سیستمهای Windows یا سرور

های SMB به مهاجمین اجازه دسترسی به فایل سیستم را مي‌دهد.
– POP: در صورت امکان باید این پورت بسته باشد. در این پورتکلpassword کاربران بصورت رمز نشده روی شبکه فرستاده مي‌شود و مهاجمین مي‌توانند با آنالیز کردن بسته‌ها password کاربران را به دست بیاورند. در صورتی که سرویس POP ارائه مي‌شود یا باید بوسیله SSL یا از طریق VPN امن شود.
– NFS: عملکرد این پورت برای سیستمهای مبتنی بر UNIX دقیقاً مانند پورت NetBIOS برای سیستمهای Windows مي‌باشد.
پورتهایی که در اینجا ذکر شد از اهمیت زیادی برخوردارند چون در صورتی که مورد حمله قرار بگیرند مي‌توانند باعث شوند فرد مهاجم کنترل کامل بر روی سیستم داشته باشد. پورتهای دیگر مانند DNS از اهمیت کمتری برخوردارند، چون در صورت مورد حمله واقع شدن باعث صدمه دیدن یک سری اطلاعات خاصی مي‌شوند و فرد مهاجم نمی تواند کنترل کامل بر روی

سیستم داشته باشد. به همین علت دارای اهمیت کمتری برای مهاجمین مي‌باشند.
۲-۱-۴ کنترل بسته‌ها از روی سایر اطلاعات موجود در سرآیند
سرآیند بسته‌های IP علاوه بر فیلد‌های استاندارد که ذکر شد شامل اط

لاعات دیگری نیز مي‌باشند که از روی آنها مي‌توان در مورد رد شدن یک بسته تصمیم گرفت. Fragmentation, source routing تکنیکهایی هستند که توسط پروتکل IP پشتیبانی مي‌شوند و امروزه چندان استفاده ای ندارند. مهاجمین از این دو تکنیک برای حمله کردن به شبکه‌ها استفاده مي‌کنند.
۲-۱-۴-۱ source routing
Source roting برای مشخص کردن مسیر دقیقی که پاسخ یک بسته IP برای رسیدن به مقصد باید از آن عبور کند استفاده مي‌شود. از این امکان بیشتر برای تست و عیب یابی شبکه‌ها استفاده مي‌شده است ولی امروزه توسط مهاجمین استفاده مي‌شود. آنها با استفاده از IP spoofing یک بسته با آدرس فرستنده جعلی ایجاد مي‌کنند و سپس با استفاده از source routing کاری مي‌کنند که پاسخ آن بجای گیرنده اصلی برای آنها فرستاده شود. دو نوع source routing وجود دارد. در نوع اول آدرس یک یا چند مسیریاب سر راه مشخص مي‌شود و در نوع دوم تمامی مسیر تا مقصد مشخص مي‌شود که نوع اول بیشتر توسط مهاجمین مورد استفاده قرار مي‌گیرد.
۲-۱-۴-۲ fragmentation
Fragmentation برای انتقال بسته‌های IP بزرگ از مسیریابهایی است که اندازه frame در آنها کوچک است. این مسیریابی بسته‌ها را به تعدادی frame مي‌شکنند که از شماره ۰ شماره‌گذاري مي‌شوند. اين frame ها در مقصد سرهم شده و بستة اوليه را دوباره مي‌سازند. از آنجا که مهمترين اطلاعات لازم براي کنترل بسته‌ها (شمارة پورت TCP و UDP ) فقط در frame شماره ۰ وجود دارد، روی frame‌های بعدی هیچگونه کنترلی وجود ندارد و اغلب فیلترها آنها را عبور مي‌دهند.بعضی سیستمها کل fram‌های دریافتی را حتی بدون fram شماره ۰ سرهم مي‌کنند و در صورتی که یک بسته IP سالم را تشکیل دهند آن را پردازش مي‌کنند. از این رو مهاجمین نیز مي‌توانند یک سری fram تولید کنند که از شماره ۱ به بعد یک بسته IP سالم را تشکیل بدهند. از آنجا که اکثر فیلترها فقط fram شماره ۰ را بررسی مي‌کنند و سایر framها از فیلتر عبور مي‌کنند با این روش مي‌توان یک بسته کامل را از فیلتر عبور داد. از این رو بسته‌های fragment شده نباید اجازه ورود به شبکه را داشته باشند.
۲-۱-۵ مشکلات فیلترهای استاندارد
این نوع فیلترها دو مشکل عمده دارند که مانع از این مي‌شود که بطور کامل موثر واقع شوند:
این فیلترها محتویات بسته را نمی توانند چک کنند.
فیلترها برای تعیین سرنوشت بسته‌ها فقط از اطلاعات سرآیند بسته استفاده مي‌کنند و محتوای آنها را بررسی نمی کنند. در این صورت اگر ترافیک HTTP که وارد شبکه مي‌شود یک Trojan Horse باشد فیلتر متوجه آن نخواهد شد؛ و یا اگر یک نامه الکترونیکی که به پورت ۲۵ سرور فرستاده مي‌شود دارای اطلاعاتی باشد که منجر به از کار افتادن سرور شود باز فیلتر متوجه آن نخواهد شد. برای بررسی اینگونه موارد نیاز به یک پراکسی در لایه بالا برای هر سرویس مي‌باشد که محتویات بسته را با توجه به پروتکل استفاده شده بررسی کند.

این فیلترها وضعیت ارتباطات موجود را نگهداری نمی کنند.
فیلترهای statelessهیچ اطلاعاتی در مورد وضعیت ارتباطات فعال نگهداری نمی کنند. این فیلترها تصمیم گیری در مورد سرنوشت بسته‌ها را بسته به بسته انجام مي‌دهند و تنها فاکتوری که در این میان تصمیم گیری مي‌کند اطلاعات سرآیند هر کدام از بسته‌هاست.

۲-۱-۶ کنترل بسته‌ها توسط سیستم عامل
بسیاری از سیستم عاملهای جدید امکان کنترل بسته‌ها را بعنوان بخشی از پشته TCP/IP خود دارند. این بدان معناست که روی هر سرور بسته به سرویسی که ارائه مي‌شود مي‌توان رفتار متفاوتی با بسته‌ها داشت. در این روش بسته‌ها در مقصد آنها یعنی آخرین مسیری که از آن عبور مي‌کنند کنترل مي‌شوند. ممکن است چنین به نظر بیاید که با وجود اعمال سیاستهای امنیتی در فایروالها و مسیریابهای شبکه ایجاد فیلتر بر روی هر سرور یک کار اضافی است، چون این کار را بر روی فایروالها و مسیریابها نیز مي‌توان انجام داد. ولی این نکته را باید در نظر بگیرد که هیچ سیستم

امنیتی مرزی قادر به جلوگیری از حملات داخلی یا حملات از طریق کانالهای VPN و اتصالاتdial-up نمی باشد. بعنوان یک اقدام امنیتی علاوه بر اینکه یک فایروال در نقاط ورود بسته‌ها به شبکه از شبکه محافظت مي‌کند بهتر است هر سرور نیز یک فیلتر مخصوص به خود سر راه بسته‌ها قرار دهد تا اطمینان حاصل شود که فقط سرویسهایی را که لازم است ارائه مي‌کند.
۲-۲ فیلترهای stateful
فیلترهای استاندارد مشکلات زیاد دارند که همه آنها از این حقیقت ناشی مي‌شوند که یک بسته به تنها حاوی اطلاعات کافی برای تصمیم گیری در مورد سرنوشت آن نمی باشد چون این بسته جزئی از یک ارتباط بزرگتر است. فیلترهای stateful این مشکل را با نگهداشتن وضعیت تمام ارتباطات موجود و تصمیم گیری از روی این وضعیتها حل کرده اند. فیلترهای stateful وضعیت هر ارتباط را در لایه‌های شبکه و جلسه نگهداری مي‌کنند، سپس از این اطلاعات برای تشخیص اینکه یک بسته در پاسخ یک درخواست داخلی فرستاده شده یا نه (به احتمال زیاد به قصد خرابکاری ارسال شده) استفاده مي‌کنند.

اغلب فیلترهای استاندارد به بسته‌هایی که برای پورتهای بالای ۱۰۲۴ فرستاده شده‌اند اجازه عبور مي‌دهند و فرض مي‌شود که اینها همه بسته‌هایی هستند که در پاسخ به درخواستهای داخلی فرستاده شده اند. این یک سیاست ضعیف است چون ممکن است یک Trojan Horse نیز به یک پورت بالای ۱۰۲۴ گوش کند و بتوان از بیرون از شبکه به آن وصل شده اطلاعات در مورد شبکه بدست آورد یا اقدام به خرابکاری کرد.
وقتی یک سیستم از شبکه داخلی تقاضای برقراری ارتباط با یک سرور خارج از شبکه مي‌کند یک بسته TCP SYN ایجاد کرده و به سرور مي‌فرستد. قبل از اینکه بسته به سرور برسد فیلتر سر راه اطلاعات بسته را بررسی مي‌کند. چون این یک بسته برای ایجاد ارتباط است یک رکورد برای آن ارتباط در جدول ارتباطات موجود ایجاد شده و وضعیت ارتباط نیز ثبت مي‌گردد. هنگامی که پاسخ بسته بر مي‌گردد فیلتر با مقایسه آدرس فرستنده و گیرنده و وضعیت ارتباط مربوطه متوجه مي‌شود که این همان پاسخی است که قرار است برسد و بسته را به سمت مقصدش مي‌فرستد. اگر بسته ای برای شبکه ارسال شود که هیچ رکورد متناظر با آن در جدول وجود نداشته باشد بسته از فیلتر نمی تواند عبور کند. این عملکرد در شکل۱-۲ نشان داده شده است. به محض اینکه بسته‌های مربوط به بستن ارتباط از سوی سرور و سرویسگیر رد و بدل مي‌شوند رکورد مربوط به آن ارتباط از جدول حذف مي‌شود. بستن ارتباط نیز در شکل ۲-۲ نشان داده شده است.

شکل ۱-۲ شکل ۲-۲

۲-۳مشکلات فیلترها
فیلترها (استاندارد و stateful) دارای مشکلاتی هستند که مهاجمان از آنها برای دور زدن این فیلترها استفاده مي‌کنند. از جمله این ضعفها مي‌توان موارد زیر را نام برد:
اطلاعات مربوط به پورتهای UDP, TCP فقط در fragment شماره ۰ وجود دارند
بعضی سیستم عاملها کنترل دقیقی روی ترتیب frament‌ها ندارند و به محض اینکه fragment آخر را دریافت کنند کل fragment‌ها را سرهم مي‌کنند و در صورتی که یک بسته کامل تشکیل شود آن را به لایه بالاتر منتقل مي‌کنند. بعضی از این ضعف استفاده کرده ویک بسته کامل را fragment کرده ولی آنها را از۱ شماره گذاری مي‌کنند. در طرف گیرنده اطلاعات مربوط به پروتکل شبکه که در fragment شماره ۱ قرار دارد توسط فیلتر نادیده گرفته مي‌شود و بنابراین تمام fragm

ent‌ها از فیلتر عبور مي‌کنند و یک بسته کامل IP را تشکیل مي‌دهند.
بسیاری از فیلترها بسته‌های ارسالی برای پورتهای بالای ۱۰۲۴ را عبور مي‌دهند.
این مشکل فقط مربوط به فیلترهای استاندارد مي‌شود که در قسمتهای قبل نیز در مورد آن توضیح داده شده است. فیلترهای stateful تمام تقاضاهایی را که برای برقراری ارتباط فرستاده مي‌شوند شناسایی کرده و جلوی آنها را که مجاز نیستند مي‌گیرند.
NAT‌های داخلی مي‌توانند فیلتر را فریب دهند.
اگر کسی در داخل شبکه قادر به راه اندازی یک سرویس NAT بر روی سیستم خود باشد مي‌تواند بسته‌هایی را که به یک پورت فیلتر نشده فرستاده مي‌شوند ترجمه کرده و به یک پورت فیلتر شده روی یک سرور بفرستد. با استفاده از پراکسی نیز مي‌توان این کار را انجام داد. در این مورد در قسمتهای بعد توضیح داده خواهد شد.
فصل سوم:
۳ NAT
سیستم NAT درسهای IP شبکه محلی را به آدرسهای یکتا برای استفاده بر روی اینترنت تبدیل مي‌کند. هر چند این روش برای ایجاد آدرسهای بیشتر برای استفاده در شبکه داخلی ابداع شده است ولی مي‌توان از آن برای مخفی کردن اطلاعات مربوط به سیستمهای داخلی نیز استفاده کرد. NAT مي‌تواند تمام اطلاعات مربوط به پروتکلهای TCP/IP شبکه داخلی را مخفی کند و از دید خارج چنین به نظر برسد که تمام ترافیک از یک آدرس خاص منتشر مي‌شود. NAT همچنین این

امکان را فراهم مي‌کند که هر محدوده آدرسی را بتوان برای سیستمهای داخلی استفاده کرد، بدون اینکه کوچکترین مشکلی برای شبکه پیش بیاید. فایروال برای این منظور آدرس و شماره پورت مبدا تمام بسته‌هایی را که از شبکه داخلی فرستاده مي‌شوند عوض مي‌کند. آدرس خود فایروال (یا هر آدرس دیگری که فایروال به آن پاسخ مي‌دهد) بجای آدرس مبدا و یک شماره پورت بجای شماره پورت مبدا قرار مي‌گیرد. این شماره پورت برای شناسایی آدرس و شماره پورت مبدا بسته بکار مي‌رود و اطلاعات مربوطه در یک جدول نگهداری مي‌شود. هنگام برگشت پاسخ بسته از اطلاعات این جدول برای پیدا کردن گیرنده آن استفاده مي‌شود. در واقع فایروال بین یک س

ری سوکت داخلی و یک سری سوکت خارجی ارتباط ایجاد مي‌کند. شکل ۱-۳ این عملکرد را با یک مثال توضیح مي‌دهد.

شکل ۱-۳
در این مثال یک سیستم داخلی با آدرس۱۰٫۱٫۱٫۷ مي‌خواهد ارتباط HTTP با یک سیستم خارجی با آدرس ۱۹۲٫۱۶۸٫۱۳٫۱۵برقرار کنند. یک بسته برای مثال از ۱۰٫۱٫۱٫۷:۱۲۳۴ به ۱۹۲٫۱۶۸٫۱۳٫۱۵:۸۰ فرستاده مي‌شود. فایروال یا مسیریاب سر راه (با آدرسهای ۱۰٫۱٫۱٫۱و ۱۲۸٫۱۱٫۱۲۱٫۱) این بسته را گرفته و این رکوردها را در یک جدول ثبت مي‌کند:
– مبدا: ۱۰٫۱٫۱٫۷:۱۲۳۴
– مقصد: ۱۹۲٫۱۶۸٫۱۳٫۱۵:۸۰
– مبدا بسته تولید شده: ۱۲۸٫۱۱۰٫۱۲۱٫۱:۱۵۴۶۵
سپس بسته را با اطلاعات جدید مي‌فرستد، یعنی سرور وب یک تقاضا از طرف ۱۲۸٫۱۱۰٫۱۲۱٫۱:۱۵۴۶۵ دریافت مي‌کند. هنگام پاسخ دادن نیز سرور بسته‌ها را برای همین آدرس مي‌فرستد. فایروال هنگام دریافت بسته جدول داخلی را برای پیدا کردن گیرنده واقعی بسته جستجو مي‌کند. اگر اطلاعات رکورد مربوطه با اطلاعات سرآیند بسته مطابقت داشت بسته پس از اعمال تغییر لازم برای گیرنده واقعی بسته (۱۰٫۱٫۱٫۷:۱۲۳۴) فرستاده مي‌شود. اگر رکورد مربوطه پیدا نشد یا اطلاعات سرآیند بسته با رکورد مربوطه مطابقت نداشت بسته اجازه عبور پیدا نمی کند.

از آنجا که NAT فقط از یک سری جایگزینی ساده در لایه شبکه استفاده مي‌کند و مانند پراکسی‌ها نیازی به اجرای عملیاتهای پیچیده ندارد مي‌تواند در بسیاری موارد با سرعتی نزدیک به سرعت routing عمل کند.
۳-۱ انواع ترجمه آدرس در NAT
خیلی از فایروالها از روشهای مختلفی برای ترجمه آدرس استفاده مي‌کنند. چهار عملکرد اصلی NAT به ترتیب میزان استفاده در زیر آمده است:
– ترجمه ایستا (porwarding): حالتی است که سیستم خاص (مثلاً یک سرور) همیشه دارای ترجمه آدرس ثابتی است که امکان برقراری ارتباط از طرف سیستمهای خارجی با آن را فراهم مي‌کند.
– ترجمه پویا (اتوماتیک): حالتی است که یک عده از سیستمهای داخلی از یک یا چند آدرس برای ارتباط با شبکه خارجی استفاده مي‌کنند. این روش برای مخفی کردن مشخصات سیستمهای داخلی یا گسترش محدوده آدرسهای مورد استفاده در شبکه داخلی استفاده مي‌شود.
– توزیع بار: در این حالت یک آدرس ثابت به یک سری آدرس دیگر ترجمه مي‌شود که همه سرورهایی هستند که به یک درخواست خاص پاسخ مي‌دهند. این روش برای توزیع بار یک سرویس پرترافیک بر روی یک سری سرور استفاده مي‌شود.

– افزونگی (Redundancy): در حالتی که یک شبکه از چند روش برای اتصال به اینترنت استفاده مي‌کند از این روش استفاده مي‌شود تا در صورت قطع شدن هر کدام از مسیرها از مسیر دیگر استفاده شود.
۳-۱-۱ ترجمه پویا
ترجمه پویا سیستمهای داخلی را از طریق تعویض آدرسهای آنها با یک آدرس دیگر محافظت مي‌کند. تا زمانی که یک سیستم داخلی با یک سیستم خارجی ارتباط برقرار نکرده است هیچ رکوردی در مورد آن در جدول داخلی فایروال وجود ندارد و در نتیجه هیچ راهی برای برقراری ارتباط با آن وجود ندارد. توجه کنید که فایروال فقط مانع از این مي‌شود که سیستمهای خارجی با یک سیستم داخلی ارتباط برقرار کنند. اگر سیستم داخلی به یک سرور خطرناک در بیرون شبکه وصل شود یا یک Trojan Horse روی سیستم باشد که به یک سرور خارجی متصل شود دقیقاً مانند حالتی است که هیچ فایروالی در میان نیست. به همین علت استفاده از NAT به تنهایی برای امنیت شبکه کافی نیست.
فریب زدن سیستم برای وصل شدن به یک سرور کار ساده ای است. فرض کنید یک نامه الکترونیکی از طرف رئیس برای یکی از کارمندان فرستاده مي‌شود که در آن وی خواسته شده که به یک سرور وب وصل شود. به احتمال خیلی قوی آن کارمند بدون فکر کردن به آن سرور وصل خواهد شد. جعل کردن نامه الکترونیکی نیز کار خیلی ساده ای است.

تعداد کل ارتباطاتی که از طریق یک فایروال NAT مي‌تواند ترجمه شود محدود است. از آنجا که در سرآیند IP فقط ۱۶ بیت برای شماره پورت در نظر گرفته است این تعداد به ۶۵۵۳۶محدود مي‌شود. البته در بسیاری از سیستم عامل‌ها این تعداد به ۵۰٫۰۰۰نیز کاهش مي‌یابد، چون بعضی از این پورتها برای مصارف خاصی رزرو شده اند.
۳-۱-۲ ترجمه ایستا
ترجمه ایستا (یا port forwarding) در مواردی استفاده مي‌گیرد که یک سرویس

خاص داخل شبکه ارائه مي‌شود که باید از بیرون شبکه قابل دسترسی باشد. در بعضی شرایط هم که از پروتکلی استفاده مي‌شود که برای درست کار کردن باید آدرس یا شماره پورت خاصی داشته باشد از ترجمه ایستا استفاده مي‌شود.
برای قرار دادن یک سرور پست الکترونیکی داخل شبکه باید یک مسیر ثابت از فایروال تا خود سرور ایجاد شود. اگر آدرس سرور ۱۰٫۱٫۱٫۲۱ و آدرس خارجي فايروال نيز ۱۲۸٫۱۱۰٫۱۲۱٫۱ باشد اين مسير مي‌تواند از ۱۰٫۱٫۱٫۲۱:۲۵ به ۱۰٫۱٫۱٫۲۱:۲۵ باشد. اگر بیش از یک سرور داخل شبکه باشد مي‌توان برای هر کدام از آنها یک پورت فایروال را اختصاص داد. تمام این سرورها با یک آدرس خاص مشخص مي‌شوند در صورتی که هر کدام از آنها را یک سرور خاص مدیریت مي‌کند.
۳-۱-۳ توزیع بار

بعضی از فایروالها مي‌توانند با استفاده از NAT کار توزیع بار را روی شبکه انجام دهند. توزیع بار یعنی توزیع ترافیک یک سرویس روی چند سرور، مثلاً تقاضاهایی که برای یک سایت وب خیلی پرطرفدار فرستاده مي‌شود روی سرورهای مختلف پخش شود. این توزیع مي‌تواند براساس میزان بار موجود در هر کدام از سرورها یا از طریق الگوریتم round-robin باشد. برای تصمیم گیری از طریق میزان بار موجود، هر سرور باید راهی برای دادن اطلاعات در این مورد به فایروال داشته باشد. از آنجا که هیچ راه استانداردی برای این کار نیست خود فایروال باید یک راه مخصوص برای خود داشته باشد. به همین دلیل هم اغلب فایروالها از روش round-roubin استفاده مي‌کنند و فرض مي‌کنند که همه سرورها یک میزان بار را دارند. به این نکته توجه کنید که توزیع بار فقط ب

رای پروتکلهایی قابل استفاده است که stateless باشد یا وضعیت ارتباط در سمت سرویسگیر نگهداری شود.
۳-۱-۴ افزونگی (Redundancy)
این نوع ترجمه آدرس ترکیبی از ترجمه پویا و توزیع بار مي‌باشد. در این حالت فایروال از طریق چند اتصال مختلف به اینترنت وصل مي‌شود و روی هر کدام از آنها یک آدرس مجزا دارد. هنگامی که یک سرویسگیر از داخل شبکه تقاضای برقراری ارتباط با یک سرور خارجی را مي‌کند، فایروال با توجه به وضعیت اتصالات یک مسیر (ارزانترین مسیر) را برای برقراری ارتباط با سرور انتخاب مي‌کند. سپس با استفاده از ترجمه پویا آدرس سرویسگیر روی آدرس فایروال ترجمه مي‌شود و تقاضای مورد نظر

برای سرور فرستاده مي‌شود. در این حالت فایروال بار سرویسگیرهای داخلی را روی چند مسیر مختلف توزیع مي‌کند. شکل ۲-۳ این عملکرد را توضیح مي‌دهد. قطع شدن هر کدام از این اتصالات به منزله پر شدن بار آن اتصال در نظر گرفته مي‌شود و فایروال هیچ سرویسگیر جدیدی را از آن مسیر عبور نخواهد داد. هر چند پروتکهای stateful نیاز به برقراری مجدد ارتباط دارند، پروتکلهای

statelessفقط با یک پیغام خطا مواجه مي‌شوند و بعد از آن تمام ارتباطات آنها از طریق مسیر جدید برقرار مي‌شود بدون اینکه متوجه شوند چه اتفاقی افتاده است.

شکل۲-۳
۳-۲ مشکلات NAT
بعضی پروتکلها هستند که از طریق NAT قابل استفاده نمی باشند. از این جمله اند:
– پروتکلهایی که نیاز به برقراری ارتباط مجدد با سرویسگیر دارند: هیچ مسیر مشخصی به سمت سرویسگیر وجود ندارد. پروتکلهای IRC, RSH, (video conferencing) H.323 از این دسته اند.
– پروتکلهایی که آدرسهای TCP/IP را داخل اطلاعات بسته قرار مي‌دهند: اطلاعات داخل بسته با اطلاعات سرآیند یکسان نیست: در حقیقت اطلاعات داخل بسته اشتباه مي‌باشد. پروتکل FTP از این دسته پروتکلهاست.
– پروتکلهایی که اطلاعات سرآیند TCP/IP را رمز مي‌کنند: فایروال قادر به خواندن اطلاعات سرآیند و تغییر آدرسها یا شماره پورتها نیست. پروتکل PPTP از این دسته پروتکلهاست.
-پروتکلهایی که از آدرس فرستنده برای چک کردن مسائل امنیتی استفاده مي‌کنند: اطلاعات سرآیند بسته عوض شده و نمی توان از آن بعنوان یک معیار استفاده کرد. پروتکل Sqlnet2 از این دسته پروتکلهاست.
-علاوه بر این پروتکل ICMP نیز با NAT مشکل دارد. نرم افزار ICMP بعضی وقتها قسمت اول بسته اصلی را (که شامل آدرسهای ترجمه نشده مي‌باشد) داخل پیغام ICMP قرار مي‌دهد. البته از لحاظ امنیتی هیچ لزومی ندارد که بسته‌های ICMP بتوانند از فایروال عبور کنند.

استفاده از NAT یک سری مشکلات امنیتی نیز دارد که به مواردی از آنها در اینجا اشاره مي‌شود:
ترجمه ایستا=عدم امنیت
استفاده از ترجمه ایستا سیسمتهای داخلی را محافظت نمی کند. استفاده از ترجمه ایستا فقط آدرس و شماره پورت سرویسگیر را بصورت یک به یک عوض مي‌کند و هیچ مکانیزم امنیتی روی ارتباط ایجاد شده بر قرار نمی کند برای محافظت از یک سرویس داخل شبکه باید از پراکسی استفاده کرد.
یک ارتباط همیشه دوطرفه است.
وقتی یک سرویسگیر با یک سرور ارتباط برقرار مي‌کند، یک ارتباط از سرور به سمت سرویسگیر نیز ایجاد مي‌شود. برقراری ارتباط با بعضی سرورها (مثلاً یک وب سایت) ممکن است منجر ب

ه بروز مشکلات امنیتی در شبکه شود. از آنجا که روی تمام ارتباطات ایجاد شده از طرف شبکه داخلی نمی توان کنترل داشت بهتر است برای هر سرویس از پراکسی استفاده کرد تا محتویات بسته که وارد شبکه مي‌شوند کنترل شود.
۳-۳ پراکسی
پراکسی‌ها در ابتدا برای cache کردن صفحات وب طراحی شده بودند. در روزهای اولیه اینترنت ارتباط برقرار کردن با منابع دیگر نسبتاً کند بود. وب سایت کوچک بود و صفحات وب ثابت (ایستا) بودند. به همین دلیل cache کردن این صفحات کار مفیدی بود. در دنیای امروز سرعت دسترسی به اینترنت خیلی افزایش یافته است، وب به یک دنیای بی سروته تبدیل شده و صفحات وب نیز به سرعت به روز در مي‌آیند و محتوای آنها نیز پویا است. از این رو cache کردن صفحات وب چندان کار مفیدی نیست. پراکسی‌ها امروزه برای مقاصد دیگر استفاده مي‌شوند. آنها مي‌توانند مشخصات کاربران واقعی یک شبکه را پشت یک سیستم واحد مخفی کنند، URL‌ها را فیلتر کنند، محتویات صفحات را کنترل کرده و مانع از ورود موارد مشکوک به شبکه داخلی شوند.

بسیاری از پراکسی‌های حقیقی ابزارهای دیگری مانند NAT و فیلتر را نیز همراه دارند که به آنها کمک مي‌کند تا یک ابزار کامل برای امن کردن شبکه باشند. این متن فقط به بررسی پراکسی‌های خالص مي‌پردازد. پراکسی‌ها بیشتر برای سرویس وب استفاده مي‌شوند چون از ابتدا برای این سرویس طراحی شده اند، ولی برای سرویسهای دیگر نیز مي‌توان از آنها استفاده نمود و مسلماً عملکرد آنها نیز کاملاً متفاوت خواهد بود. مثالهای این متن در مورد پراکسی سرویس وب است، ولی قابل تعمیم به سایر سرویسها نیز مي‌باشند.
یک پراکسی به تمام تقاضای برقراری ارتباط که از شبکه داخلی فرستاده مي‌شوند گوش مي‌دهد و بمحض اینکه یک تقاضا از طرف یک سیستم فرستاده مي‌شود در خواست مربوطه را دریافت کرده و آن را از طرف خودش برای سرور مربوطه مي‌فرستاد و پاسخ سرور را برای سرویسگیر داخلی ارسال مي‌کند. شکل ۱-۴ این فرایند را بیان مي‌کند.

شکل ۱-۴
۳-۳ -۱ عملکردهای امنیتی پراکسی
عمل تبدل تقاضا از سرویسگیر به پراکسی و قرار دادن پراکسی بین شبکه داخلی و خارجی دارای مزایای امنیتی زیر است:
– پراکسی اطلاعات مربوط به سیستمهای داخل شبکه را پنهان مي‌کند.
– پراکسی مي‌تواند جلوی یک سری از URL‌ها را بگیرد.
– پراکسی مي‌تواند با چک کردن محتویات صفحات وب جلوگیری یک سری از اطلاعات خطرناک مانند ویروس یا Trojan Horse را بگیرد.
– پراکسی مي‌تواند سالم رسیدن اطلاعات دریافتی را چک کند.
– پراکسی یک نقطه واحد برای کنترل و log کردن فراهم مي‌کند.

۳-۳-۲ پنهان کردن اطلاعات سرویسگیرها
مهمترین عملکرد پراکسی پنهان کردن اطلاعات سرویسگیرهاست. درست مانند NAT یک پراکسی طوری رفتار مي‌کند که از دید شبکه خارجی کل ترافیک متعلق به یک سیستم واحد به نظر بیاید. تفاوت پراکسی با NAT دراین است که پراکسی در لایه transport کار مي‌کند و فقط برای یک سرویس خاص این کار را انجام مي‌دهد. عملکرد پراکسی چیزی فراتر از

عوض کردن یک سری آدرس و شماره پورت مي‌باشد و آن نیز به این صورت است: بسته ای که از داخل شبکه فرستاده شده توسط پراکسی دریافت مي‌شود. درست مانند اینکه مقصد بسته خود پراکسی باشد. این بسته سپس بعنوان یک تقاضا برای سرور مربوطه فرستاده شده و پاسخ آن به سرویسگیر داخلی تحویل داده مي‌شوند. از آنجا که کل بسته دوباره ایجاد مي‌شود، فقط یک پروتکل خاص (HTTP) مي‌تواند از پراکسی رد شود نه پروتکلهای دیگر
یکی از کاربدرهای خوب دیگر پراکسی استفاده از یک راه اتصال به اینترنت برای چند سیستم است. با نصب یک پراکسی ساده روی یک سیستم، سیستمهای دیگر مي‌توانند از طریق آن به اینترنت وصل شوند.
۳-۳-۳ بستن یک سری UBL
با داشتن پراکسی مي‌توان جلوی دسترسی سیستمهای داخلی به یک سری منابع (سایت‌های porno, hack…) را بست. این کار به سادگی انجام مي‌شود: پراکسی م

ي‌تواند قبل از اینکه درخواست سرویسگیررا برای سرور ارسال کند آدرس سرور را با یک پایگاه داده یا یک لیست چک کند و در صورتی که آدرس سرور غیر مجاز شناخته شود درخواست جدید از طرف پراکسی ایجاد نمی شود و عملاً سرویسگیرنمی تواند به سرور مربوط متصل شود.
۳-۳-۴ کنترل محتویات بسته‌ها
از آنجا که پراکسی در لایه transport کار مي‌کند و مخصوص یک سرویس

خاص مي‌باشد مي‌تواند محتویات بسته را نیز چک کند، به همین دلیل از پراکسی مي‌توان برای کنترل محتویات بسته‌ها نیز استفاده کرد و موارد مشکوک را سر راه حذف کرد. برای مثال مي‌توان از پراکسی وب برای حذف کردن برنامه‌های ActiveX و اپلت‌های جاوا، یا از پراکسی SMTP برای چک کردن نامه‌ها (وجود ویروس، نامه‌های SPAM…) قبل از دریافت آنها استفاده کرد.
۳-۳-۵ اطمینان از سالم بودن بسته‌ها
بعضی از سرویسها bug‌هایی دارند که با استفاده از این bug‌ها مي‌توان مشکلاتی برای آنها ایجاد کرد. مشهورترین این حملات buffer-overflowاست. به نمونه‌های قدیمی این حملات دقت کنید: در سرویس SMTP سیستمهای مبتنی بر UNIX اگر حجم نامه از آنچه در ابتدای آن ذکر شده بیشتر باشد باعث مي‌شود برنامه ای که در این فضای اضافی قرار دارد اجرا شود. در بعضی سرورهای وب اگر سایز URL بیشتر از ۲۵۶ کاراکتر باشد موجب اجرای برنامه موجود در فضای اضافی مي‌شود. این نوع حملات همه با فرستادن بسته‌های معیوب به سرور انجام مي‌شوند و نمونه‌های آنها زیادند که به مرور زمان با پیدا شدن یک bug جدید یک نوع جدید این حملات کشف مي‌شود. بهترین راه برای امان ماندن از این حملات چک کردن بسته‌های رسیده از لحاظ سالم و کامل بودن است. از آنجایی که این نوع بسته‌ها فقط با چک کردن اطلاعات داخل بسته بدست مي‌آیند، فقط توسط یک پراکسی قابل تشخیص مي‌باشند نه در لایه‌های پایینتر.
۳-۳-۶ کنترل روی دسترسی‌ها
پراکسی تنها نقطه ای از شبکه است که سیستمهای داخلی از طریق آن مي‌توانند به یک سرویس (مثلاً HTTP) روی اینترنت دسترسی داشته باشند و به همین دلیل نقطه خوبی برای اعمال کنترل روی اطلاعات رد و بدل شده مي‌باشد. پراکسی مي‌تواند دسترسی به سرویس را برحسب کاربر کنترل کند، میزان استفاده از سرویس را بر حسب کاربر محاسبه کند، لیست سایتهایی را که توسط کاربران دیده شده نگهداری کند، و حتی هنگام بروز مشکلات امنیتی خاص alarm ایجاد کند.
علاوه بر سرویسهای امنیتی که توسط پراکسی ارائه مي‌شود، پراکسی می‌تواند عملکرد قابل توجهی در افزایش سرعت دسترسی به شبکه داشته باشد:
– پراکسی مي‌تواند اطلاعاتی را که از طرف شبکه داخلی مرتب درخواست مي‌شوند cache کرده و از اين طریق دسترسی به شبکه خارجی را تا حد ممکن کاهش دهد.
– پراکسی مي‌تواند عمل توزیع بار را روی چند سرور داخلی انجام دهد.
۳-۴-۱ cache کردن
پراکسی‌ها در ابتدا به همین منظور ایجاد شده اند. البته با تغییراتی که در دنیای وب صورت گرفته است cache کردن صفحات زیاد مفید نیست، مخصوصاً صفحاتی که با ابزارهایی مانند ASP نوشته مي‌شوند مرتب تغییر محتوا مي‌دهند. فقط در برخی موارد که دسترسی به یک یا چند سایت مشخص از طرف کاربران شبکه داخلی زیاد انجام مي‌شود cache کردن صفحات اصلی، اشکال و اپلت‌ها مي‌تواند مفید باشد.
۳-۴-۲ توزیع بار
اغلب پراکسی‌های جدید مي‌توانند در نقش پراکسی معکوس نیز عمل کنند؛ یعنی سرویسگیرهای خارجی را به سرورهای داخلی متصل مي‌کنند. در حقیقت کاری که در این میان انجام مي‌گیرد توزیع بار سرویسگیرهای خارجی روی سرورهای داخلی مي‌باشد. بسیاری از و سرورهای جدید به علت حجیم بودن عملکردشان نمی توانند روی یک سیستم واحد قرار بگیرند. بیشتر برنامه نویسی سمت سرور (…,CGI JSP, ASP) و تجارت الکترونیکی باعث افزایش بار روی سرور مي‌شوند. در این حالت پراکسی تمام درخواستها را از سرویسگیرهای خارجی دریافت کرده و آنها را به سمت

سرورهای داخلی هدایت مي‌کند. این کار بسیار مشابه توزیع بار از طریق NAT است، با این تفاوت که در NAT این کار در لایه شبکه انجام مي‌شد ولی در پراکسی در لایه transport است.
۳-۴-۳ مشکلات پراکسی
پراکسی دارای یک سری مشکلات مي‌باشد که در این قسمت به آنها اشاره مي‌شود. پراکسی از کل شبکه داخلی بخوبی محافظت مي‌کند، ولی در عوض خودش در معرض خطر قرار دارد. بعضی از مشکلات امنیتی پراکسی از قرار زیر است:
نقطه شکست واحد
شبکه ای که دارای یک نقطه اتصال و کنترل است، دارای یک نقطه شکست نیز مي‌باشد. با از کار افتادن پراکسی اتصال کل شبکه به اینترنت قطع خواهد شد. پراکسی‌ها، مسیریابها و فایروالها همگی تا حدی دارای این مشکل مي‌باشند. این مشکل در مورد مسیریابها با تعریف کردن مسیرهای دیگر به اینترنت حل مي‌شود. فایروالها نسبت به پراکسی‌ها امن ترند چون فایروالها دارای ابزارهایی مانند فیلتر مي‌باشند و قادر به محافظت از خود مي‌باشند. برای برقراری امنیت در لایه‌های پایین خود پراکسی باید دارای ابزاری برای فیلتر کردن بسته‌ها باشد یا از فیلتر خود سیستم عامل برای محافظت استفاده کند.
محدودیت روی سرویسگیرها

اگر یک سرویس قرار باشد از طریق پراکسی قابل دسترسی باشد، سرویسگیرها باید بدانند که چگونه با پراکسی رابطه برقرار کنند (اصلاً با پراکسی ارتباط برقرار کنند). یک سرویسگیر و برای اینکه با پراکسی کار کند باید طوری تنظیم شود که بسته‌ها را بجای سرور مقصد باری پراکسی بفرستد. اگر یک سرویسگیر قادر به این کار نباشد، نمی توان ازپراکسی برای آن سرویس استفاده کرد. این مشکل برای سرویسهایی مانند FTP وجود دارد. برای سرویسگیرهای FTP که با اغلب سیستم عاملها عرضه مي‌شوند دارای این قابلیت نمی باشند. در این موارد مي‌توان نسخه ای از نرم افزار را که استفاده از پراکسی را پشتیببانی مي‌کند تهیه کرد. استفاده از

NAT نیز مي‌تواند این مشکل را حل کند چون در NAT مي‌توان آدرس فرستنده و گیرنده بسته را تغییر داد. در این حالت بسته‌ها بدون اینکه تنظیم خاصی در سرویسگیرها انجام شود از طرف فایروال برای پراکسی فرستاده مي‌شوند. چون پراکسی از دید سرویسگیرها دیده نمی شود به آن transparent proxy مي‌گویند.
تمام سرویسها باید پراکسی داشته باشند.
برای برقراری امنیت روی تمام سرویسهای شبکه، باید برای تمامی آنها از پراکسی استفاده کرد. تنها پراکسی مي‌تواند بسته‌های یک سرویس خاص را بررسی کرده و موارد مشکوک را سر راه حذف کند. در ضمن بعضی سرویسها را (از جمله آنهایی که نیاز به برقراری ارتباط معکوس روی سرویسگیر دارند) نمی توان پشت NAT قرار داد و برای آنها باید از پراکسی استفاده کرد. چون پراکسی جدولی از ارتباطات تشکیل شده را نگهداری مي‌کند مي‌تواند ارتباطات معکوس را در صورت لزوم برقرار کند.

پیکربندی اولیه
معمولاً پیکربندی اولیه پراکسی‌ها از لحاظ امنیتی چندان محکم نیست و در صورتی که تصحیح نشود مي‌تواند خطر بزرگی برای شبکه باشد، علت آن این است که پراکسی‌ها بیشتر برای به اشتراک گذاشتن ارتباط به اینترنت (و معمولاً برای کاربران غیر تکنیکی) تهیه مي‌شوند نه برای مقاصد امنیتی.
علاوه بر موارد ذکر شده در بالا، پراکسی از لحاظ سرعت هم یک مشکل دارد:
ایجاد گلوگاه

پراکسی مانند مسیریاب و فایروال به تنها محل عبور سرویسگیرها تبدیل مي‌شود و به همین علت ممکن است بار زیادی روی آن باشد. پراکسی برخلاف مسیریاب و فایروال در لایه بالاتر کار مي‌کند و بسته‌های دریافتی را دوباره تولید مي‌کند، به همین علت سرعتش به مراتب کمتر از مسیریاب و فایروال است. برای حل این مشکل باید به مرور زمان و افزایش کاربران تعداد پراکسی‌ها را افزایش داد و هر سری از کاربران را به یکی از آنها متصل کرد.

۳-۵ سیستم‌های تهاجم یاب
فایروال‌ها نقش بسیار مهمی در تامین امنیت شبکه دارند. آنها تا حد ممکن مانع نفوذ مهاجمین به شبکه مي‌شوند، ولی قویترین فایروال‌ها نیز قادر به برقراری امنیت صددرصد نمی باشند و بعضی از مهاجمین مي‌توانند از آنها عبور کرده دست به اعمال خرابکانه بزنند. در حالت خیلی خوشبینانه تنها مي‌توان log‌های فایروال نشانه‌هایی از حمله را پیدا کرد، آن هم بعد از وقوع آن.
برای روشن شدن بیشتر موضوع بعنوان مثال عملکرد یک کرم اینترنتی را در نظر بگیرید. یک کاربر داخل شبکه یک نامه الکترونیکی از طرف یکی از دوستانش دریافت مي‌کند که در آن مثلاً آخرین نسخه از بازی دلخواه وی قرار دارد، با اجرا کردن برنامه یک Trojan Horse بر روی سیستم کاربر نصب مي‌شود که سر فرصت و هنگامی که کاربر با سیستم کاری ندارد با باز کردن ارتباط به سمت یک سرور شروع به فرستادن اطلاعات مهم داخل شبکه برای آن مي‌کند. چنین مکانیزمی توسط فیلترها قابل تشخیص نیست چون معمولاً چنین سرورهایی روی یک پورت مجاز مانند HTTP اجرا مي‌شوند. در این حالت فقط پراکسی‌ها مي‌توانند با کنترل محتویات بسته‌ها چنین مکانیزم‌هایی را تشخیص دهند. مهاجمین مي‌توانند حتی بهتر نیز عمل کنند. آنها مي‌توانند سرور خود را روی پورت FTP (با هر پورت دیگری که اطلاعات باینری از طریق آن مبادله مي‌شود) اجرا کنند. سرور و برنامه Trojan Horse طوری تنظیم مي‌شوند که قبل از فرستادن اطلاعات اصلی با مبادله یک سری بسته‌ها طوری وانمود کنند که یک ارتباط مجاز را برقرار مي‌کنند. چنین حمله ای توسط پراکسی نیز قابل تشخیص نمی باشد. در این حالت حتی در log‌های فایروال نیز نشانه ای از حمله دیده نمی شود، چون تمام مبادلات انجام شده مجاز مي‌باشد. این قسمت با معرفی سیستم‌های تهاجم یاب با IDS به بررسی چگونگی محافظت از شبکه در مقابل حملاتی که فایروال قادر به تشخیص آنها نمی باشد مي‌پردازد.
سیستم‌های تهاجم یاب نرم افزارهایی هستند که با بررسی ترافیک شبکه و از روی یک سری نشانه‌ها این حملات را تشخیص مي‌دهند. این نوع سیستم‌ها در کنار فایروال و برای ایجاد امنیت بیشتر بکار مي‌روند. یک سیستم تهاجم یاب مي‌تواند فقط از

یک سیستم و یا از تمامی سیستم‌های تهاجم یاب در قبال موارد مشکوک و حملات آنها را به دو دسته فعال (active) و انفعالی (passive) تقسیم مي‌کند. سیستم‌های تهاجم یاب فعال مي‌توانند طوری برنامه ریزی شوند که به محض بروز یک مورد مشکوک عکس العمل مناسب نشان مي‌دهند (قطع ارتباط مشکوک، تولید یک هشدار، …)، ولی سیستم‌های تهاجم انفعالی فقط اتفاقات رخ داده را ثبت مي‌کنند که بعداً مي‌توانند مورد بررسی قرار گیرند دو تکنیک مختلف برای طراحی سیستم‌های تهاجم یاب وجود دارد که در ادامه به آنها اشاره مي‌شود.
۳-۶ سیستم‌های تهاجم یاب بر مبنای بازرسی
این نوع سیستم‌ها متداولترین نوع تهاجم یاب مي‌باشند. نحوه عملکرد آنها بدین صورت است که فعالیت یک سیستم یا شبکه را زیر نظر مي‌گیرند و از طریق یک سری قوانین تعریف شده و یا مقایسه با وضعیت عادی سیستم موارد مشکوک را کشف مي‌کنند. تهاجم یاب‌ها از فاکتورهای زیر برای کشف موارد مشکوک استفاده مي‌کنند.
• نشانه‌هایی که از تحلیل ترافیک شبکه بدست مي‌آیند مانند portscan با وصل شدن به پورت‌های غیر مجاز
• نحوه بهره گیری از منابع سیستم مانند پردازنده و حافظه و یا برقراری ارتباط با شبکه در زمان‌های غیر عادی که نشانه یک حمله اتوماتیک مي‌باشد.
• نحوه استفاده از فایل سیستم مانند وجود فایل‌های تازه ایجاد شده، تغییرات در فایل‌های سیستم عامل یا تغییرات در account کاربران
• سیستم‌های تهاجم یاب چند نوع مختلف مي‌باشند:
• تهاجم یاب‌های قانون پذیر: این سیستم‌ها حملات را از روی یک سری قوانین تشخیص مي‌دهند هر کدام این قوانین یک روش شناخته شده برای حمله را مشخص مي‌کنند که یک سری نشانه‌ها با یک دنباله از فعالیت‌ها را برای کشف حمله بکار مي‌برند. وصل شدن به یک پورت خاص یا تغییرات در فایل‌های سیستم عامل از جمله این نشانه‌ها مي‌باشند.
• تهاجم یاب‌های آماری: این سیستم‌ها با مقایسه وضعیت فعلی سیستم با وضعیت طبیعی آن حملات را کشف مي‌کنند. این روش برای کشف حملات جدید و ناشناخته مناسب است ولی در عوض قادر به تشخیص بسیاری حملات بسیار ساده شناخته شده نب

اشد و آنها را بعنوان رفتار طبیعی سیستم در نظر بگیرد. واضح است که این روش حملات را پس از وقوع آنها مي‌تواند کشف کند.
• تهاجم یاب‌های هیبرید: این نوع سیستم‌ها ترکیب دو روش قبلی را بکار مي‌برند. حملات شناخته شده را بوسیله قوانین مناسب و حملات ناشناخته را با تحلیل آماری کشف مي‌کنند. بسیاری از این نوع سیستم‌ها قادرند پس از کشف یک حمله ناشناخته قوانین مربوط به آن را نیز ایجاد کنند که از آن پس برای تشخیص آن نوع حمله بکار مي‌رود.

۳-۶-۱سیستم‌های تهاجم یاب طعمه
این نوع سیتسم‌ها به ظاهر مانند یک سرویس بر روی شبکه هستند ولی به محض اینکه کسی قصد استفاده از آنها را داشته باشد یک هشدار امنیتی تولید مي‌کنند. یک سیستم تهاجم یاب طعمه مانند یک سرور به نظر مي‌آید که به خوبی از آن محافظت نمی شود و به همین علت به سرعت جلب توجه مي‌کند. از این طریق توجه مهاجمین جلب سیستمی مي‌شود که برای شبکه هیچ اهمیت عملیاتی ندارد و به محض اولین استفاده مهاجم از آن یک هشدار امنیتی تولید مي‌شود که مدیر شبکه را از وقوع حمله با خبر مي‌کند. تهاجم یاب طعمه مي‌تواند یک یا چند سرویس روی یک سرور، یک سرور مجزا و یا یک شبکه مجزا (به ندرت) باشد. در حالت اول تهاجم یاب چند سرویس TCP/IP بر روی یک سیستم ایجاد مي‌کند که از آنها در شبکه استفاده نمی شود (مانند سرویس chargen .echo یا NFS). در بعضی موارد این سرویس‌ها حتی عملکرد سرویس را نیز ندارند و در پاسخ درخواست‌ها فقط timeonut برمی گردانند و فقط وصل شدن به پورت را تشخیص مي‌دهد. راه حل موثرتر استفاده از یک سیستم کامل بعنوان طعمه است. تنها کاری که باید انجام شود این است که یک نسخه از یک سیستم عامل مورد نظر به همراه تمام سرویس‌های معمول روی سیستم طعمه ایجاد کرد و NAT شبکه را طوری تنظیم نمود که تمام درخواست‌ها را به این سیستم بفرستد، سپس با اضافه کردن قوانین لازم ترافیک سرویس‌های خاصی مانند SMTP,WWW را به سرورهای مربوط فرستاد. کسی که شبکه را scan مي‌کند تمام سرویس‌های سیستم بعلاوه سرویس‌های واقعی شبکه را با هم مي‌بیند و اینگونه به نظر مي‌آید که همه متعلق به یک سیستم واحد مي‌باشند. از آنجا که حمله کردن سرویس‌های طعمهNFS) یا (NetBIOS به مراتب ساده تر است مهاجمین ترجیح مي‌دهند در ابتدا آنها را امتحان کنند و همین باعث تولید هشدار امنیتی مي‌شود. در این مرحله مي‌توان به مهاجمین اجازه داد به کار خود ادامه دهندو روش‌هایی را که برای حمله به سیستم استفاده مي‌کنند شناسایی کرد. مهاجمین پس از مدتی متوجه موضوع مي‌شوند که تمهیدات امنیتی مناسب توسط مدیر شبکه برای مقابله با آنان در نظر گرفته شده است. حتی مي‌توان یک کپی

 

از سرویس‌های شبکه را نیز بر روی این سیستم طعمه قرارداد که مهاجمین دیرتر متوجه موضوع شوند و مدیر شبکه فرصت بیشتری برای امن کردن سرورهای اصلی داشته باشد.
قبل از راه اندازی یک سیستم تهاجم یاب در شبکه باید چند نکته را در نظر داشت:
 سیستمی که قرار است تهاجم یاب بر روی آن نصب شود از امنیت کافی برخوردار باشد.
 زمان سیستم باید صحیح باشد، چون در غیر این صورت اطلاعات ثبت شده و هشدارهای تولید شده توسط سیستم ارزش چندانی نخواهند داشت.
 مکان قرار گرفتن سیستم در شبکه باید مشخص شود. اگر تهاجم یاب بین شبکه فایروال و شبکه خارجی قرار گیرد تمامی حملات را شناسایی مي‌کند، ولی اگر بین فایروال و شبکه داخلی قرار بگیرد فقط حملاتی را که از فایروال عبور مي‌کنند شناسایی مي‌کند.
فصل چهارم:
IP Filter 6
IP Filter یک نرم افزار است که مي‌توان از آن بعنوان NAT با فیلتر استفاده کرد. این نرم افزار مي‌تواند در فرم یک ماجول قابل load یا بعنوان قسمتی از kernel استفاده شود. IP Filter اکنون بعنوان بخشی از سیستم عامل FreeBSD عرضه مي‌شود و عملکرد آن روی سیستم عاملهای زیر نیز کاملاً تست شده است:
– Solaris /Solaris-x86 2.3-8
– SunOS 4.1.1-4.1.4
– NetBSD 1.0-1.4
– FreeBSD 2.0.0-2.2.8
– BSD/OS -1.1-4
– IRIX 6.2
– OpenBSD 2.0-2.6
– HP-UX 11.00
– QNX Port
این نرم افزار از طریق آدرسهای زیر در دسترس مي‌باشد:
– ftp: //coombs.anu.edu.au/pub/net/ip-filter/
– http://commb.anu.edu.au/~avalon

/
مستندات تکنیکی (HOWTO) IP filter نیز از طریق آدرس http://www.obfuscatio.org/ipf/ قابل دسترسی مي‌باشد.
خصوصیتهای این نرم افزار به طور خلاصه از قرار زیر است:
– می تواند بسته‌هایی را که از کارت شبک

 فیلتر کند.
– می تواند بسته را بر حسب پروتکل لایه شبکه فیلتر کند.
– می تواند بسته‌ها را بر حسب پروتکل IP فیلتر کند.
– می تواند جلوی بسته‌های fragment شده را بگیرد.
– می تواند جلوی بسته‌هایی که فیلد قسمت IP option آنها پر شده بگیرد که بسته‌های source-route جزء این دسته به شمار مي‌آیند.
– می‌تواند در جواب بسته‌هایی که اجازه عبور پیدا نمی‌کنند بسته ICMP error یا TCP reute بفرستد.
– اطلاعات مربوط به وضعیت جریان بسته‌های ICMP,UDP,TCP را نگهداری مي‌کند.
– اطلاعات مربوط به fragment‌های یک بسته را نگهداری مي‌کند.
– مي‌تواند بعنوان يک NAT کار کند.
– می تواند از redirection برای ایجاد ارتباطات یک transparent proxy استفاده کند.
– می تواند سرآیند بسته‌ها را به یک برنامه برای احراز هویت پاس دهد.
– می تواند یک سری از بسته‌های مشخص را برای log کردن روی یک device بفرستد.