حملات DoS چیست؟
حمله محرومسازی از سرویس (به انگلیسی: Denial of Service attack) (یا به اختصار DoS) نوعی از حملهاست که هدف DoS از کار انداختن سرویس یا سرویسهای خاصی روی سرور مورد نظر است که معمولاً برای از کار انداختن سرویس http به کار میرود که باعث میشود سایتهای روی سرور از دسترس خارج شوند. انجام این حمله (برخلاف بسیاری از انواع دیگر حملهها) تحت هر شرایطی جرم محسوب میشود و پیگرد قانونی دارد.
شکل حمله
به منظور ایجاد یک TCP Connection نیاز مند TREE WAY HANDSHAKING بین Client و سرور هستیم.
سرور با دریافت TCP SYN SEGMENT یک Connection نیمه باز ایجاد و منابع لازم از جمله میانگیر و متغیرهای لازم را تخصیص و مقداردهی میکند. سرور پس از ارسال SYN & ACK مربوطه منتظر دریافت ACK از جانب client به منظور ایجاد Connection باقی میماند. در SYN Flood Attack حمله کننده بدون پایان مرحله سوم و ارسال ACK تعداد زیادی connection نیمه باز ایجاد میکند. بنابر این منابع سرور به connection های نیمه باز اختصاص خواهد یافت. وامکان پاسخ گویی به درخواستها از سرور منع میشود.
تاریخچه
ضعف موجود در پروتکل TCP در سال ۱۹۹۴ شناسایی شد. روش انجام این حمله توسط Bellovin و Cheswick در کتاب Firewall and Internet Security معرفی گردید. شناسایی هیچ راه کار متقابلی تا دو یال پس از آن ارائه نشد. توصیف دقیق حمله SYN flood در مجلهای به نام Phrack منتشر شد. گذشته از خطاهای جزئی که در این روش بود، برنامه به سرعت پخش شده و مورد استفاده قرار گرفت. . به طور خاص حمله ای علیه یکی از شرکت خدمات اینترنتیهای سرویس دهنده MAIL باعث اطلاع همگان از قطع شدن سرویس دهی شد. SYN flood علاوه بر اینکه بر پایه روش های شناخته شده قوه قهریه بود که به سادگی منابع شبکه را تصرف می کرد، در این حملهend-host مورد هدف قرار می گرفت که برای هدر دادن منابع آن به تعداد بسته کمتری نیاز بود.
اهداف حمله
به طور کلی انجام این حمله برای اهداف زیر صورت میگیرد:
- پایین آوردن سرعت و کیفیت سرویسدهی شبکه (دسترسی به سایت یا انتقال فایل)
- از دسترس خارج کردن وبسایت مورد نظر
- قطع دسترسی تمام وبسایتها (با حمله به name serverها)
- افزایش تعداد هرزنامهها (که به بمب ایمیلی نیز معروف است)
لازم به ذکر است که این حمله فقط مختص به سرورها نیست و ممکن است یک شبکه و یا حتی روتر نیز مورد حمله قرار گیرد و ممکن است کار بخش عمدهای از اینترنت را مختل کند (همانطور که در طول تاریخ ۲بار اینترنت کل دنیا با این حمله مختل شدهاست).
روشهای حمله
این حمله به دو بخش کلی تقسیم میشود، حملههایی که باعث crash کردن سرویس مورد نظر میشوند و حملههایی که باعث شلوغ شدن سرویس مورد نظر میشوند.
DDoS
حمله توزیعشده محرومسازی از سرویس (Distributed Denial of Service) روشی از حملهاست که در آن حملهکننده با تعداد زیادی از کامپیوترها و شبکههایی که در اختیار دارد، حمله را صورت میدهد. در این روش تمام رایانهها یکی از روشهای حمله را که در ذیل ذکر شدهاند را همزمان با هم انجام میدهند که ممکن است در برخی موارد خسارات جبران ناپذیری را به بار آورد.
در این روش معمولاحملهکننده سیستمهای زیادی را آلوده کرده و به آنها همزمان فرمان میدهد، به سیستمهای آلوده شده زامبی (zombie) و به شبکهای از این سیستمها که تحت کنترل یک شخص هستند، botnet میگویند.
SYN Flood
در این روش بسیار متداول، حملهکننده تعداد زیادی بسته TCP حاوی SYN ارسال میکند که به معنای تقاضای شروع ارتباط است، در این صورت گیرنده بسته (هدف حمله کننده) با توجه به درخواست ارتباطی را شروع کرده و در انتظار دریافت ادامه درخواست میماند و چون ادامه درخواست از طریق حملهکننده ارسال نمیشود، سرور مورد نظر برای مدتی ارتباط را در خود نگه میدارد که تعداد زیاد این روند باعث استفاده زیاد از پهنای باند، RAM و CPU سرور مورد نظر شده و توانایی پاسخ به سایر درخواستها را نخواهد داشت.
Ping Flood
در این روش تنها با فرستادن بیش از حد بستههای ping از طرف تعداد زیادی از سیستمها، صورت میگیرد. در شبکههایی که به درستی تنظیم نشدهاند با جعلکردن (spoofing) آدرس سیستم مورد نظر و ارسال درخواست ping به broadcast تمامی سیستمهای موجود در شبکه به سیستم هدف پاسخ ارسال میکنند و ارسال تعداد زیاد این درخواستها باعث شلوغ شدن شبکه و از کار افتادن سیستم مورد نظر میشود.
سایر روشها
Smurf Attack، Ping of Death، Teardrop، Billion laughs، Christmas tree packet و صدها روش دیگر تنها بخشی از روشهای شناخته شده این حمله هستند و بسیاری روشهای ابداعی و ابتکاری دیگر نیز موجود است.
روشهای جلوگیری
به طور کلی هیچ راه تضمین کنندهای برای جلوگیری از این حمله وجود ندارد و تنها راههایی برای جلوگیری از برخی روشهای متداول و کم کردن اثرات سایر روشها موجوداست، چرا که بسیاری از روشها به هیچعنوان قابل پیشگیری نیست، به عنوان مثال اگر شبکه botnet با صدهزار zombie صفحهای از سایت را باز کنند، این درخواست یک درخواست عادی بوده و نمیتوان تشخیص داد که درخواست دهنده سیستم معمولی است یا zombie و به همین جهت نمیتوان جلوی آنرا گرفت.
برای پاسخگویی به این حملات از SYN cookie استفاده میگردد. سرور با دریافت SYN Segmant به جای ایجاد یک connection نیمه باز یک TCP قرارداد هدایت انتقال و با ارسال SYN ACK آن را ارسال میکند. سپس تنها در صورت دریافت ACK به ایجاد connection و اختصاص منابع روی میآورد.
استفاده از دیوارههای آتش یکی از راههای متداول و بهترین راه جلوگیری است، البته استفاده از هر دیوارهآتشی توصیه نمیشود و تنها دیوارههای آتشی مناسبند که به هدف جلوگیری از DoS طراحی شدهاند.
استفاده از سوییچ و مسیریابهای مناسب که برخی دارای دیواره آتش و سیستمهای تشخیصدهنده هستند نیز راه مناسبی است. همچنین درست تنظیم کردن سوییچها و مسیریابها (روترها) امری ضروری برای جلوگیری از بسیاری از انواع حملهاست.
استفاده از سیستمهای تشخیص دهنده (IPS) سیستمهای تشخیص براساس سرعت بستهها (RBIPS) و اینگونه سیستمها نیز روش مناسبی برای جلوگیری از این حملات است.
بستههای نرمافزاری نیز موجودند که شامل تمام این سیستمها هستند، استفاده از این بستهها علاوه بر حملات DoS بسیاری دیگر از حملات را شناسایی میکنند، بسته نرمافزاری SSP (Sun Security Package) از جمله این بستهها است که کار شناسایی و جلوگیری را به صورت خودکار انجام میدهد.