حمله DDoS چیست؟ چطور انجام میشود و چگونه آن را دفع کنیم؟
اوایل سال 2000 میلادی بود که یک دانشآموز دبیرستانی از کانادا، به نام مایکل کالس (معروف به Mafia Boy) به سایت YAHOO حمله کرد. فکرش را بکنید؛ این پسر کم سنوسال کسی بود که توانست با طراحی حمله DDoS، یکی از بزرگترین وبسایتهای آن زمان را از دسترس خارج کند!
فعالیتهای مافیا بوی در هفتههای بعدی هم ادامه داشت. او حتی توانست فعالیت سایتهای معروف دیگری مثل eBay، آمازون و CNN را مختل کند. مایکل اولین کسی نبود که از دیداس استفاده کرد، اما استفاده از این حمله در سطح عمومی و هدف قرار دادن سایتهای بزرگ، دی داس را به یک نگران جدی برای همه بیزینسها تبدیل کرد.
پس از گذشت 20 سال، این حمله نهتنها از دور خارج نشده، بلکه پیشرفتهتر هم شده و میتواند خرابیهای بزرگتری به بار بیاورد!
💡 در مقاله امروز ایرانسرور، میخواهیم راجع به حمله DDoS با شما صحبت کنیم، انواع این نوع حملات را معرفی کنیم، چندتا از نرمافزارهای اجرای حمله دیداس را نام ببریم و در نهایت یادتان بدهیم که چطور از حمله DDoS جلوگیری کنید.
با تعریف دیداس شروع کنیم؟
حمله DDoS چیست؟
حمله DDoS (یا dos) مخفف Distributed Denial Of Service Attack است و به زبان ساده یعنی سرازیر کردن تعداد زیادی تقاضا (Request) به یک سرور (کامپیوتر قربانی یا هدف) و استفاده بیش از حد از منابع (پردازنده، پایگاه داده، پهنای باند، حافظه و…)، بهطوریکه سرویسدهی عادی آن به کاربرانش دچار اختلال شده یا از دسترس خارج شود.
برای اینکه بهتر درک کنید، یک اتوبان را تصور که ماشینها با خیال راحت در آن در حال رفتوآمد هستند. حالا اگر از یک سمت این اتوبان ورودی ایجاد شود و تعداد زیادی ماشین در حال ورود به آن باشند، چه اتفاقی میافتد؟
بله! رفتوآمد در اتوبان مختل شده، ماشینها مجبورند مدام ترمز کنند و عملاً به مقصد نمیرسند؛ یا اینکه خیلی دیر میرسند! این دقیقاً بلایی است که درخواستهای زیاد در حملۀ DDoS، سر سایت یا اپلیکیشن میآورند. درخواستهای پیشبینی نشده ترافیک غیرعادی ایجاد میکنند و نمیگذارند که درخواستهای کاربران پاسخ داده شوند.
توجه کنید که هر سایتی میتواند دچار این حملهها شود، از یک سایت معمولی بگیرید، تا اپلیکیشنهای فروشگاهی یا سایتهای دولتی! فقط کافی است که بدخواه داشته باشید!
راستی، یک حمله دبگر مشابه DDoS هم داریم که DoS نام دارد.
تفاوت DoS و DDoS چیست؟
هم DoS و هم DDoS، هر دو حملاتی هستند که در سرویسدهی اختلال ایجاد کرده و هدفشان از دسترس خارج کردن سرویس است.
در حملۀ DoS، سرور با حجم زیادی از بستههای UDP و TCP که از یک کامپیتور ارسال میشوند، سرزیر و دچار مشکل میشود؛ ولی در DDoS چندین دستگاه با همکاری هم، یک قربانی را هدف قرار میدهند و آن را با بستههایی از چندین مکان و IP مختلف، بمباران میکنند.
عواقب حمله DDoS چیست؟
گفتیم که بر اثر حمله دیداس، سایت شما از دسترس خارج شده، یا خیلی خیلی کند میشود. حالا این اتفاق را در حالتی تصور کنید که یک کمپین تبلیغاتی بزرگ برگزار کردهاید و هزاران کاربر آنلاین، منتظر خرید از سایت یا استفاده از کمپین هستند. در این شرایط اگر حملهای صورت بگیرد، جدا از اینکه برندتان خدشهدار میشود، تجربه کاربری بدی برای افراد رقم میخورد که ممکن است هیچوقت یادشان نرود.
به این موارد، ضرر مالی هنگفتی را هم که ممکن است متقبل شوید اضافه کنید؛ میشود نور علی نور!
فکر میکنم الان این سوال در ذهنتان ایجاد شده باشد که چطور باید جلوی حملات DDoS را گرفت. عجله نکنید؛ بیایید اول با سازوکار حمله دیداس و انواع آن آشنا شویم، تا بعد بفهمیم راه برقراری امنیت در سایتمان چیست.
حمله DDoS چگونه رخ میدهد؟
طراحی و شروع حمله DDoS ساده است. تنها چیزی که برای یک حملۀ ساده نیاز دارید، 2 دستگاه مختلف است که در یک همکاری بینظیر و هماهنگ باهم، به سرور یا سایت مقصد، ترافیک فیک بفرستند.
مثلاً شما میتوانید با استفاده از گوشی موبایل و لپتاپتان یک شبکه DDoS درست کرده و حمله را آغاز کنید. البته بدیهی است که با این 2 دستگاه سایت مورد نظر Down نمیشود و تنها میتوانید در آن اختلال ایجاد کنید.
در حملات بزرگتر، شبکهای بزرگ از کامپیوترها و دستگاههای متصل به اینترنت -که گاهی تعدادشان به میلیونها دستگاه هم میرسد- توسط بدافزار (Malware) تسخیر شده و در خدمت هکرها قرار میگیرند. به این شبکه دستگاهها Botnet (مخفف Robot Network) یا شبکه زامبی گفته میشود.
در botnet هر دستگاهی توسط یک ربات کنترل میشود. این رباتها حتی گاهی وظیفه دارند که دیگر دستگاهها را گیر بیاندازند و برای حمله آماده کنند.
وقتی که سرور یا کامپیوتر قربانی، هدف حملۀ botnet قرار میگیرد، هر ربات تعداد زیادی درخواست را برای آدرس IP آن ارسال میکند، اینطوری به اصطلاح، سرور هدف سرریز شده و سایت یا برنامه Down میشود.
یک نکتۀ مهم: در حملۀ DDoS، چون هر ربات به شکل معمول و قانونی در حال استفاده از اینترنت است، جدا کردن ترافیک واقعی سایت از ترافیکی که طی حمله ایجاد شده، کار خیلی سختی است!
جالب است بدانید که حمله دیداس انواع مختلفی هم دارد و هرکدام میتواند به بخشهای مختلفی از شبکه آسیب بزند. دوست دارید با این حملهها آشنا شوید؟
انواع حملات DDoS و آسیبهای هر کدام!
برای اینکه بدانید هر حمله چطور برنامهریزی و اجرا میشود، بهتر است اول با نحوه ایجاد اتصال شبکه آشنا شوید.
هر اتصال شبکه در اینترنت، از لایههای مختلفی تشکیل شده است. یعنی چه؟
ساختن یک خانه را تصور کنید؛ در فرآیند ساختن خانه، مراحلی مانند گودبرداری، اسکلتبندی، دیوارکشی، گچکاری و … را داریم، که هر کدام با دیگری متفاوت است. در فرآیند ساختن اتصال شبکه هم، چنین چیزی اتفاق میافتد.
ما قبلاً در مقاله مدل OSI چیست، مفصل راجعبه لایههای شبکه صحبت کردیم. هر لایه در این مدل، دارای پروتکلهای مخصوص به خودش است و همانطور که در تصویر زیر میبینید، کار متفاوتی را بر عهده دارد.
پیشنهاد میکنم برای اینکه کارکرد ابن لایهها را بهتر درک کنید، مقاله مذکور را بخوانید. از اینجا به بعد، درباره 3 نوع حمله دیداس صحبت میکنیم که در لایههای مختلف همین مدل اجرا میشوند.
1) حمله DDoS در لایه کاربرد (Application)
در این حمله، از ضعفهای موجود در لایه هفتم شبکه (Application) برای باز کردن راه حمله استفاده میشود. مثلاً وردپرس و جوملا، 2 تا از اپلیکیشنهایی هستند که در برابر این حملات آسیبپذیرترند.
هدف حمله
هدف این حملات این است که استفاده از منابع هدف را به حداکثر برسانند. معمولاً نقطه هدف هم جایی در سرور است که صفحات وب قرار دارند و با ارسال تعداد زیادی درخواست HTTP فرآیند پاسخدهی مختل میشود.
اجرای یک درخواست HTTP ساده، در سمت کلاینت ساده و بیهزینه است؛ اما پاسخ به آن در سمت سرور هدف، میتواند پرهزینه باشد؛ چراکه سرور بایستی چندین فایل را بارگذاری کرده و کوئریهای پایگاه داده را برای ایجاد یک صفحه وب اجرا کند.
مقابله با حملات لایه 7 دشوار است؛ چون همانطور که بالاتر هم گفتیم، تشخیص اینکه ترافیک مخرب است یا عادی کار سختی است.
مثال حمله لایه Application
HTTP Flood یا سیل HTTP، یکی از رایجترین حملات لایه 7 است. این حمله مثل است که شما و چند تا از دوستانتان بهصورت همزمان وارد یک سایت شوید و بیوقفه آن را Refresh کنید. چه اتفاقی میافتد؟
تعداد زیادی HTTP Request به سرور ارسال شده، سرور سرریز میشود و DDoS اتفاق میافتد. البته مسلما مهاجمان سایبری این کار را با دوستانشان انجام نمیدهند و ابزارهای خاصی دارند!
⚠ ناگفته نماند که HTTP Flood هم میتواند خیلی ساده طراحی شود و هم خیلی پیچیده! در نسخه ساده، ممکن است به یک URL با همان محدوده آدرس IP حمله شود. در نسخه پیچیده ولی، ممکن است از تعداد زیادی آدرس IP برای حمله استفاده شود و URL های تصادفی را با استفاده از ارجاعهای تصادفی و نمایندگان کاربر (User Agents) هدف قرار دهد.
2) حملات پروتکل (Protocol attacks)
حملات پروتکل، از نقاط ضعف موجود در لایه 3 و 4 OSI (حملونقل و شبکه) استفاده میکنند تا هدف را از دسترس خارج کنند.
هدف حمله
حملههای پروتکل، یا هدف خسته و فرسوده کردن سرور و از طریق مصرف بیش از حد منابع آن اجرا میشوند. طی این نوع از حملات، فایروالها یا لودبالانسرها به شدت درگیر شده و سرویسدهی مختل میشود.
مثالی از حمله پروتکل
حملۀ SYN flood، یکی از نمونههای رایجِ حمله به لایه 3 و 4 است. اجازه دهید با یک مثال این حمله را توضیح دهیم.
یک انبار پر از کالا را با یک مسئول انبار تصور کنید. روال کار در انبار به این شکل است که مسئول، درخواست مشتری را دریافت کرده، آن را بررسی میکند، سپس به انبار رفته و بسته را برمیدارد و قبل از تحویل بسته، منتظر تایید میماند.
حالا حالتی را تصور کنید که مسول انبار کلی درخواست دریافت کرده و هیچکدام هنوز تائیدیهای دریافت نکردهاند. این روند تا جایی ادامه پیدا میکند که مسئول دیگر نمیتواند بستههای بیشتری را حمل کند و عملاً از حرکت میافتد.
در حمله SYN Flood هم چنین اتفاقی میافتد؛ کلاینت (یا مرورگر) اول برای سرور یک درخواست SYN میفرستد و منتظر میماند تا با پروتکل TCP اتصالی برقرار شود. اتصال که برقرار شد، تبادل اطلاعات آغاز میشود و سرور منتظر دریافت پیام از کاربر میماند. کاربر پیامی نمیفرستد و فقط درخواست ایجاد اتصال است که سرور در از مرورگرهای مختلف دریافت میکند. با توجه به اینکه سرور در باز کردن کانال اتصالی محدودیت دارد، عملکردش کاملاً مختل شده و از دسترس خارج میشود. اینطوری همه درخواستها بیپاسخ میمانند.
3) حملات حجمی (Volumetric attacks)
اساس این حمله، بر شلوغکاری زیاد و بریز بپاش است! بهطوریکه میزبان از عهده این همه درخواست برنیاید و مهمانی بهم بریزد!
هدف حمله
در حملات حجمی، هدف استفادۀ حداکثری از پهنای باند موجود است. به این شکل که حجم خیلی زیادی داده (Data) با استفاده از یک تقویتکننده که ترافیک عظیمی ایجاد میکند (مثل همان botnet که قبلتر گفتیم) به سوی هدف روانه میشود و شروع به استفاده از پهنای باند آن میکند.
در حملههای حجمی، حملهکننده چیزی را درخواست میکند که نیاز به تشریح یا افزایش حجم پاسخ داشته باشد.
مثالی از حمله حجمی
حمله DNS Amplification یک نمونه از حملات Volumetric است. با یک مثال میخواهم این حمله را به شما توضیح دهم.
فرض کنید که شما و 10 تا از دوستانتان، به یک رستوران زنگ میزنید و میگویید از هر غذا یکی میخواهم و تازه دوباره به من زن بزن، سفارشم را تکرار کن. شماره تلفنی هم که برای تماس به رستوران میدهید، شماره تلفن خود رستوران است.
به اتفاقی که افتاده دقت کنید؛ شما با یک تلاش کوچک، کاری کردهاید که قربانی مجبور باشد پاسخ خیلی بزرگی برایتان آماده کند و تا این کارها را انجام دهد، از دسترس خارج میشود!
به وسیلۀ ارسال درخواست با یک آدرس IP تقلبی (آدرس آیپی واقعی هدف)، به یک سرور DNS باز، آدرس IP مقصد از سرور پاسخ دریافت میکند. در ضمن مهاجم درخواست را طوری طراحی کرده که سرور DNS با حجم بالایی از دادهها مجبور به پاسخگویی باشد. در نتیجه، هدف یک نسخه تقویتشده از درخواست اولیه مهاجم را دریافت میکند.
تمام این حملاتی که تا اینجا درموردشان صحبت کردیم، برای پیادهسازی نیاز به یک سری ابزار و نرمافزار هم دارند.
نرم افزارهای حمله DDoS کدامند؟
در این بخش 3 تا از نرمافزارهایی را که در حمله دی داس استفاده میشوند، به شما معرفی خواهیم کرد. اگر شما هم نرمافزارهای دیگر میشناسید حتماً به ما معرفیکنید.
1) LOIC
این نرمافزار با ارسال درخواستهای HTTP، TCP و UDP در شبکه botnet کار سرور را دچار مشکل میکند.
2) Slowloris
این نرمافزار ترافیکهای به ظاهر مجاز HTTP را به سرور میفرستد و باعث ایجاد تاخیر در پاسخگویی به کاربران میشود. البته معمولاً ترافیک این حمله قابل شناسایی و بلاک شدن است.
3) Tor’s Hammer
با این نرمافزار میشود وبسرور آپاچی و IIS را هدف حمله قرار داد. خوبی Tor’s Hammer این است که از طریق شبکه Tor حمله را انجام میدهد؛ برای همین هم هویت حملهکننده غیرقابل شناسایی باقی میماند.
خب؛ تا اینجا، بهصورت کلی با انواع حملههای دی داس آشنا شدید. سوال مهم دیگری که باید به آن بپردازیم، درباره جلوگیری و بستن راههای نفوذ است.
جلوگیری از حمله DDoS چطور ممکن است؟
وقتی که حملۀ دیداس شروع میشود، شما اصلاً فرصت فکر کردن برای اینکه الان باید چه کار کنید ندارید؛ پس از قبل باید به فکر باشید و برنامهای را برای اینجور مواقع آماده کنید. در این بخش به شما 6 نکته مهم درباره پیشگیری و دفاع در برابر حمله DDoS را میگوییم.
نکته اول: ترافیک خودتان را بشناسید
شما باید با استفاده از ابزارهای مانیتورینگ، ترافیک سایتتان را مدام رصد کنید و با درک الگوها و خصوصیات آن، فعالیتهای غیرطبیعی را زود متوجه شوید.
نکته دوم: اصول اولیه امنیت را رعایت کنید
یک سری اصول امنیتی اولیه برای تمام سایتها وجود دارد که با رعایت آنها میتوانند امنیتشان را افزایش دهند. مثلاً انتخاب پسوردهای پیچیده، تعویض ماهانه یا 2 ماه یک بار پسوردها، جلوگیری از یادداشت پسوردها در پیامرسانها یا اپهای متفرقه، فعال کردن احراز هویت 2 مرحلهای و … کارهای پیشپاافتادهای هستند که اکیداً توصیه میکنیم آنها را جدی بگیرید.
نکته سوم: زیرساختهای امنیتی را بهروز نگه دارید
گاهی استفاده از سیستمهای از رده خارج و نرمافزارهای منسوخ شده، باعث ایجاد اتصالات آسیبپذیری میشود که محل نفوذ هکرها هستند. پس بهتر است که همیشه از آپدیت بودن دیتاسنتر و سیستمهای خود مطمئن شوید، فایروالها، برنامههای امنیتی و برنامههای وب را بهروز کنید و اگر نیاز بود، از شرکت هاستینگتان بخواهید که اگر لایه امنیتی خاصی دارد، آن را برای شما فعال کند.
نکته چهارم: از کافی بودن ظرفیت سرور مطمئن شوید
یادتان هست که درباره حملات Volumetric صحبت کردیم؟ در مواقعی که هدف این حملات قرار میگیرید، یکی از سادهترین راهکارها، افزایش بیشازحدی پهنای باند (یعنی تا جایی که سرور ظرفیت آن را داشته باشد)، تا زمان خروج از بحران است.
توجه کنید که این کار ممکن است حمله دیداس را کاملاً متوقف نکند؛ اما خب تا زمانی که منابع بهصورت کامل درگیر شوند، میتوانید زمان بخرید و خود را برای دفاعیات بعدی آماده کنید.
نکته پنجم: از زیرساختهای ابری استفاده کنید
ما قبلاً در مقاله رایانش ابری، تمام مفاهیم پایه درباره این زیرساختها را گفتهایم. بهصورت خلاصه، سرور ابری منابع بیشتر را برای شما فراهم میکند، ارتقاء آن خیلی سریع و راحت قابل انجام است و چون بهجای اتکا به یک سرور خاص از سرورهای خوشهای استفاده میکند، ترافیک روی سرورهای مختلف پراکنده میشود.
فایده این تکنولوژی این است که اگر هدف حملۀ DDoS واقع شوید، ترافیک روی سرورهای مختلف توزیع شده، به یک سرور فشار وارد نمیشود و سایتتان به این راحتی از دسترس خارج نخواهد شد. اینطوری تیر حمله کنند به سنگ میخورد!
نکته ششم: از CDN استفاده کنید
CDN یا شبکه تحویل محتوا، شبکهای از سرورها است که در نقاط مختلفِ جهان یا ایران مستقر شدهاند، یک کپی از محتوای سایت را ذخیره میکنند و آن را از نزدیکترین نقطه، تحویل کاربران میدهند. (توصیه میکنم در مقاله CDN چیست بیشتر درباره آن مطالعه کنید)
لطفا به تعریف بالا دقت کنید. زمانی که حمله دیداس اتفاق میافتد و شما از CDN استفاده کردهاید، اگر سروری از دسترس خارج شود، دیگر سرورهای شبکه که هنوز فعال هستند میتوانند وظیفه آن سرور را بر عهده بگیرند و درخواست کاربران را پاسخ دهند. به همین راحتی!
در صورتی که هم اکنون درگیری حملات DDoS هستید، به آموزش استفاده CDN رایگان بروید و با اجرای آنچه که گفته شده، تا حد زیادی این نوع حملات را دفع کنید. شما همچنین میتوانید از CDN رایگان ایرانسرور هم استفاده کنید.
حرف آخر ما
بعد از تمام این حرفها، فکر میکنم که دید خوبی نسبت به DDoS Attack پیدا کرده باشید. فقط میماند یک نکته!
سعی کنید همیشه آمادگی خود را در برابر انواع حملات سایبری حفظ کنید و اگر اتفاقی افتاد، تیمهای آمادهای، با مسئولیتهای مشخص، برای حل میشکل، دفع حمله و پاسخگویی به مدیران و مشتریان داشته باشید. شما باید مشتریان سایت یا برنامهتان را در جریان اتفاقات بگذارید و به آنها اطمینان دهید که تیم فنی در حال رفع مشکل است.
همین. اگر نکتهای از قلم افتاده یا سوالی دارید، حتما در بخش نظرات همین پست مطرح کنید. تا جایی که بتوانیم خیلی زود پاسخ شما را خواهیم داد.
منابع کمکی برای نگارش این مقاله: