DDoS یا Distributed Denial-of-Service حملهای است که با هدف ایجاد وقفه در فرایند بارگذاری وبسایت و ترافیک عادی آن انجام میشود. اتفاقی که در این حمله میافتد این است که ترافیک ورودی وبسایت شما افزایش پیدا کرده و سرورهای شما قادر به پاسخگویی آنها نخواهند بود.
اما این ترافیک از طرف کاربران واقعی صورت نمیگیرد، باتها و نرمافزارهایی برای انجام DDoS طراحی میشوند که انجام چنین کاری را با سادگی هر چه بیشتر امکانپذیر کنند.
برای انجام چنین حملاتی هکرها میتوانند از کامپیوترهای آلوده سوءاستفاده کرده و آنها را به منابعی برای انجام حملات مورد استفاده قرار دهند.
برای درک سادهتر حمله DDoS، خیابانی را تصور کنید که به صورت معمول ترافیک چندانی نداشته و مردم به سادگی در آن تردد میکنند. اگر هکر تصمیم بگیرد که صدها خودرو به صورت غیرمعمول از این خیابان عبور کنند، تردد در خیابان به مشکل خورده و در نتیجه مردم عادی مانند قبل نمیتوانند به سادگی به مقصدشان برسند.
حمله DDoS چگونه کار میکند؟
در حملات DDoS ما با حجم عظیمی از دستگاههای متصل به اینترنت روبهرو هستیم. دستگاههایی که میتوانند برای یک سرور خاص درخواستی را ارسال کنند. این دستگاهها لزوما میتوانند کامپیوترهای عادی نباشند. برای مثال دستگاههای IoT یا اینترنت اشیاء نیز میتوانند در این حمله مشارکت داشته باشند.
از آنجایی که تامین امنیت دستگاههای IoT به نسبت سختتر بوده و پروتکلهای امنیتی بسیاری برای آنها وجود ندارد، این دستگاهها بیشتر آلوده شده و در خدمت هکرها قرار میگیرد. هر کدام از دستگاههای آلودهای که میتوانند در یک حمله DDoS مشارکت داشته باشند را یک Bot یا Zombie مینامند و به گروه بزرگی از این باتها نیز Botnet گفته میشود.
زمانی که یک باتنت ایجاد شود، هکرها میتوانند با ارسال یک دستور به صورت ریموت، تمام باتها را متحد کرده و به یک هدف مشخص حمله کنند. در این حالت هر بات یک درخواست را برای IP Address مربوطه ارسال کرده و باعث میشوند تا سرور مشغول شده و توانایی مدیریت درخواست و ارسال پاسخ درست را نداشته باشد. در نتیجه کاربران عادی دیگر نمیتوانند مانند قبل به سرور دسترسی داشته باشند.
چالش اصلی که در این حالت پیش خواهد آمد این است که تشخیص بات از کاربر عادی بسیار سخت بوده و برای حل این مشکل حتما باید راهکاری پیدا کنیم.
چگونه حمله DDoS را تشخیص دهیم؟
تشخیص حمله DDoS میتواند چالشبرانگیز باشد، زیرا این حملات ممکن است در ابتدا شبیه به افزایش ناگهانی و معمول ترافیک وب به نظر برسند. یکی از معمولترین نشانههای آن کُند شدن بیش از حد وبسایت و یا از کار افتادن آن به صورت کلی است. اما جدای از آن چند نشانه و روش دیگر نیز وجود دارد که میتواند به شما در تشخیص و مقابله با این حملات کمک کند.
تحلیل ترافیک وب
- افزایش ناگهانی ترافیک: یکی از واضحترین نشانههای حمله DDoS، افزایش ناگهانی و غیرمنتظره در ترافیک وب سایت یا برنامه است. اگر ترافیک بدون دلیل مشخصی افزایش یابد، ممکن است نشانهای از حمله باشد. برای مثال اگر شما صاحب یک فروشگاه آنلاین باشید در یک بازه خاص میتوانید نسبت بازدید کننده به مشتری را متوجه شوید. برای مثال از هر صد بازدیدکننده یک خریدار وجود دارد. اما در صورتی که حمله DDoS صورت بگیرد، ترافیک ورودی شما افزایش بسیار زیادی مییابد اما مشتری جدیدی ظاهر نمیشود!
- الگوهای ترافیک غیرعادی: ترافیک تولید شده توسط باتها ممکن است الگوهای خاصی داشته باشند، مانند درخواستهای متمرکز به یک صفحه خاص یا از منابع جغرافیایی خاص.
- پراکندگی جغرافیایی: حملات DDoS معمولاً از طریق شبکههای گستردهای از دستگاههای مختلف در سراسر جهان انجام میشوند. ترافیک غیرمعمول از مناطق مختلف میتواند نشاندهنده یک حمله باشد. برای مثال شما صاحب یک کسب و کار آنلاین در ایران هستید، افزایش بازدید ناگهانی از کشوری مانند مکزیک یا اندونزی و… میتواند نشانهای از یک حمله DDoS باشد.
مانیتورینگ منابع سرور
- بار بالا بر روی سرورها: افزایش بار و استفاده از منابع بر روی سرورها، مانند CPU و حافظه، میتواند نشانهای از حمله DDoS باشد.
- افزایش تعداد درخواستها: یک افزایش قابل توجه در تعداد درخواستهای دریافتی میتواند نشاندهنده تلاش برای فلج کردن سرور باشد.
- خطاهای سرور افزایش یافته: افزایش تعداد خطاهای سرور مانند خطاهای 503 (سرویس غیرقابل دسترس) میتواند نشانهای از فشار ناشی از یک حمله باشد.
انواع حملات DDoS
با وجود اینکه حملات DDoS با یک هدف (افزایش بار ترافیکی سرور و از دسترس خارج کردن آن) صورت میگیرد، اما راهکارها و روشهای مختلفی برای انجام آن وجود دارد. در ادامه با پنج مورد این روشها آشنا خواهیم شد.
1. حملات حجمی (Volume-Based Attacks)
این نوع حملات با هدف ایجاد اشباع در پهنای باند شبکه انجام میشود. هکرها با ارسال حجم عظیمی از ترافیک به سایت یا سرور هدف، سعی در اختلال یا متوقف کردن سرویس دارند. مثالهایی از این نوع حملات شامل UDP Flood ،ICMP (Ping) Flood، و دیگر اشکال flood attacks میشوند.
2. حملات پروتکل (Protocol Attacks)
این حملات روی لایه پروتکل شبکه، مانند لایه انتقال (TCP/IP) تمرکز دارند و با هدف ایجاد اختلال در سرویسدهی عمل میکنند. آنها از ضعفهای موجود در پروتکلهای شبکه برای اشباع سرور یا تجهیزات شبکه با درخواستهای غیرمعتبر استفاده میکنند. SYN Flood و Ping of Death نمونههایی از این نوع حملات هستند.
3. حملات لایه اپلیکیشن (Application Layer Attacks)
حملات لایه اپلیکیشن (۷ لایه شبکه) به طور خاص، لایه برنامه (مانند وب سرورها) را هدف قرار میگیرند و سعی در ایجاد خلل در سرویسهای خاص دارند. این حملات اغلب دشوارتر برای تشخیص هستند زیرا ترافیک تولید شده توسط آنها میتواند شبیه به درخواستهای معتبر باشد. نمونههایی از این نوع حملات شامل HTTP Flood و Slowloris است.
4. حملات چند وجهی (Multi-Vector Attacks)
حملات چند وجهی ترکیبی از دو یا چند نوع حمله DDoS مختلف هستند که به طور همزمان اجرا میشوند. این رویکرد باعث میشود تشخیص و مقابله با حملات دشوارتر شود، زیرا نیازمند راهحلهای امنیتی جامع و چندلایه است.
5. حملات تقویتی (Amplification Attacks)
حملات تقویتی با استفاده از ضریب بزرگنمایی غیرمستقیم، حجم قابل توجهی از ترافیک را به سمت هدف میفرستند. در این روش، مهاجمان از سرورهای غیرمستقیم با استفاده از آسیبپذیریهای خاص برای افزایش حجم ترافیک استفاده میکنند. NTP Amplification و DNS Amplification دو نمونه از این نوع حملات هستند.
چگونه با حملات DDoS مقابله کنیم؟
اصلیترین نگرانی در ارتباط با حملات DDoS مشخص کردن ترافیک عادی از حملات است. با تشخیص کاربران واقعی از باتها شما به سرعت میتوانید باتها را مسدود کرده و حجم ترافیک ورودی را کاهش دهید تا کاربران واقعی بتوانند مانند سابق از سرویسهای شما استفاده کنند.
اما انجام چنین کاری ساده نیست! در واقع چالش اصلی در حملات DDoS نیز همین موضوع است. برای حل این مشکل چندین روش وجود دارد که در ادامه برخی از اصلیترین آنها را بررسی خواهیم کرد:
روش Blackhole routing
یکی از راهکارهای مقابله با DDoS استفاده از تکنیکی با نام «مسیردهی به سیاهچاله» است. در این روش، مدیران شبکه یک مسیر null را ایجاد کرده و تمام ترافیکهای ورودی را به آن مسیر ارسال میکنند. البته همانطور که از توضیحات معلوم است، این روش چندان ایدهآل نیست چرا که منظور از «تمام ترافیکهای ورودی» در جمله قبلی، در واقع تمام ترافیکهای کاربران واقعی و باتهاست. پس در نتیجه کسی به سرور اصلی دسترسی پیدا نخواهد کرد.
از این روش برای کمتر کردن میزان خسارات استفاده شده و به عنوان یک راهحل موقت در نظر گرفته میشود.
روش Rate Limiting
روش دیگر، محدود کردن تعداد درخواستهای ورودی به سرور در یک بازه زمانی خاص است. در این حالت سرور برای مثال در یک ساعت به تنها ۱۰۰۰ درخواست پاسخ داده و درخواست بیشتر را در آن بازه زمانی قبول نمیکند.
با وجود آنکه استفاده از این روش میتواند در جلوگیری از Web Scraping، سرقت محتوا توسط باتها و همچنین عملیات Brute Force جوابگو باشد، اما در حملات پیچیده DDoS نباید انتظار زیادی در حل مشکلات از آن داشت.
فایروال
فایروال یکی از کاربردیترین روشها برای حل حملات DDoS لایه ۷ است. با قرار دادن یک فایروال بین اینترنت و سرور اصلی، میتوان فایروال را به چیزی شبیه به Reverse Proxy تبدیل کرد که در مقابل انواع خاصی از ترافیکهای مشکوک و مخرب میتواند مقاومت کند.
با فیلترکردن درخواستها براساس مجموعهای از قوانین که برای شناسایی حملات DDoS استفاده میشود میتوان تا حد زیادی از حملات لایه ۷ جلوگیری کرد.
شبکه توزیع محتوا
شبکههای توزیع محتوا (CDNs) میتوانند با پراکندگی درخواستها بر روی سرورهای متعدد، فشار ناشی از این حملات را کاهش دهند. با استفاده درست از شبکههای توزیع محتوا شما میتوانید تا حد زیادی حملات DDoS را کنترل کنید.
در پایان
حملات DDoS از جمله شایعترین حملات در دنیای دیجیتال است که سالانه میلیونها دلار به کسبوکارهای دیجیتالی آسیب وارد میکند. با شناخت بهتر ساختار حملات DDoS و روشهای مقابله با آن میتوانید از آسیبهای آن جلوگیری کنید.
همچنین استفاده از سرویسهای ابری همروش به کسبوکار شما کمک میکند تا در صورت بروز حملات DDoS در کمترین زمان ممکن آن را حل کرده و کمترین خسارت به وبسایت و سرویسهای شما وارد شود.