حمله DDoS چیست؟
حمله انکار سرویس (DoS) تلاشی مخرب برای تأثیرگذاری بر دسترسیپذیری یک سیستم هدف، مانند وبسایت یا برنامه، برای کاربران قانونی است. معمولاً مهاجمان حجم زیادی از بستهها یا درخواستها تولید میکنند که در نهایت سیستم هدف را تحت فشار قرار میدهند. در مورد حمله توزیعشده انکار سرویس (DDoS)، مهاجم از چندین منبع به خطر افتاده یا کنترلشده برای ایجاد حمله استفاده میکند. به طور کلی، حملات DDoS را میتوان بر اساس لایهای از مدل اتصال سیستمهای باز (OSI) که مورد حمله قرار میگیرند، دستهبندی کرد. این حملات بیشتر در لایههای شبکه (لایه ۳)، انتقال (لایه ۴)، ارائه (لایه ۶) و برنامه (لایه ۷) شایع هستند.
دستهبندی حملات DDoS
هنگام بررسی تکنیکهای کاهش این حملات، مفید است که آنها را به دو دسته تقسیم کنیم: حملات لایه زیرساخت (لایههای ۳ و ۴) و حملات لایه برنامه (لایههای ۶ و ۷).
حملات لایه برنامه
حملات در لایههای ۶ و ۷ اغلب به عنوان حملات لایه برنامه دستهبندی میشوند. این حملات کمتر شایع هستند اما معمولاً پیچیدهترند. این حملات معمولاً حجم کمی نسبت به حملات لایه زیرساخت دارند اما روی بخشهای پرهزینه خاص برنامه تمرکز میکنند تا آن را برای کاربران واقعی غیرقابل دسترس کنند. به عنوان مثال، سیل درخواستهای HTTP به صفحه ورود، یک API جستجوی پرهزینه، یا حتی حملات XML-RPC وردپرس (که به عنوان حملات پینگبک وردپرس نیز شناخته میشوند).
حملات لایه زیرساخت
حملات در لایههای ۳ و ۴ معمولاً به عنوان حملات لایه زیرساخت دستهبندی میشوند. اینها شایعترین نوع حملات DDoS هستند و شامل بردارهایی مانند سیلهای همگامسازی (SYN) و سایر حملات بازتابی مانند سیلهای بسته داده کاربر (UDP) میشوند. این حملات معمولاً حجم بالایی دارند و هدفشان اضافهبار ظرفیت شبکه یا سرورهای برنامه است. اما خوشبختانه، این نوع حملات دارای امضاهای واضحی هستند و تشخیص آنها آسانتر است.
تکنیکهای حفاظت در برابر DDoS
کاهش سطح حمله
یکی از اولین تکنیکها برای کاهش حملات DDoS، به حداقل رساندن سطح حمله است که گزینههای مهاجمان را محدود میکند و به شما امکان میدهد حفاظتها را در یک مکان متمرکز کنید. باید اطمینان حاصل کنیم که برنامه یا منابع ما به پورتها، پروتکلها یا برنامههایی که انتظار ارتباطی از آنها ندارند، در معرض قرار نگیرند. این کار نقاط احتمالی حمله را به حداقل میرساند و به ما امکان میدهد تلاشهای کاهش را متمرکز کنیم. در برخی موارد، میتوانید این کار را با قرار دادن منابع محاسباتی خود در پشت شبکههای توزیع محتوا (CDN) یا تعادلسازهای بار (Load Balancers) و محدود کردن ترافیک مستقیم اینترنت به بخشهایی از زیرساخت مانند سرورهای پایگاه داده انجام دهید. در موارد دیگر، میتوانید از فایروالها یا لیستهای کنترل دسترسی (ACLs) برای کنترل ترافیک ورودی به برنامههایتان استفاده کنید.
برنامهریزی برای مقیاسپذیری
دو ملاحظه کلیدی برای کاهش حملات DDoS حجمی در مقیاس بزرگ، ظرفیت پهنای باند (یا ترانزیت) و ظرفیت سرور برای جذب و کاهش حملات است.
- ظرفیت ترانزیت: هنگام طراحی برنامههای خود، مطمئن شوید که ارائهدهنده میزبانی شما اتصال اینترنتی اضافی کافی ارائه میدهد که به شما امکان مدیریت حجم زیادی از ترافیک را میدهد. از آنجا که هدف نهایی حملات DDoS تأثیرگذاری بر دسترسیپذیری منابع/برنامههای شما است، باید آنها را نه تنها نزدیک به کاربران نهایی خود قرار دهید، بلکه در نزدیکی تبادلهای اینترنتی بزرگ که دسترسی آسان کاربران به برنامه شما را حتی در حجمهای بالای ترافیک فراهم میکنند. علاوه بر این، برنامههای وب میتوانند با استفاده از شبکههای توزیع محتوا (CDN) و خدمات رزولوشن DNS هوشمند، لایهای اضافی از زیرساخت شبکه برای ارائه محتوا و رفع پرسوجوهای DNS از مکانهایی که اغلب به کاربران نهایی شما نزدیکتر هستند، فراهم کنند.
- ظرفیت سرور: اکثر حملات DDoS حملات حجمی هستند که منابع زیادی مصرف میکنند؛ بنابراین، مهم است که بتوانید بهسرعت منابع محاسباتی خود را مقیاسپذیر کنید یا کاهش دهید. میتوانید این کار را با اجرای منابع محاسباتی بزرگتر یا آنهایی که دارای ویژگیهایی مانند رابطهای شبکه گستردهتر یا شبکهسازی پیشرفته هستند که حجمهای بیشتری را پشتیبانی میکنند، انجام دهید. همچنین استفاده از تعادلسازهای بار برای نظارت مداوم و جابجایی بارها بین منابع برای جلوگیری از اضافهبار یک منبع خاص رایج است.
شناخت ترافیک عادی و غیرعادی
هرگاه سطح بالایی از ترافیک به یک میزبان شناسایی شود، خط پایه این است که فقط بتوانیم به همان اندازه ترافیک که میزبان میتواند بدون تأثیر بر دسترسیپذیری مدیریت کند، بپذیریم. این مفهوم به عنوان محدودسازی نرخ (Rate Limiting) شناخته میشود. تکنیکهای حفاظتی پیشرفتهتر میتوانند یک قدم جلوتر بروند و فقط ترافیک قانونی را با تجزیه و تحلیل بستههای جداگانه بپذیرند. برای این کار، باید ویژگیهای ترافیک خوب که هدف معمولاً دریافت میکند را درک کنید و بتوانید هر بسته را با این خط پایه مقایسه کنید.
استقرار فایروالها برای حملات پیچیده برنامهای
یک روش خوب استفاده از فایروال برنامه وب (WAF) در برابر حملاتی مانند تزریق SQL یا جعل درخواست بینسایتی است که سعی در بهرهبرداری از آسیبپذیری در خود برنامه دارند. علاوه بر این، به دلیل ماهیت منحصربهفرد این حملات، باید بتوانید بهراحتی اقدامات کاهش سفارشی در برابر درخواستهای غیرقانونی ایجاد کنید که ممکن است ویژگیهایی مانند مخفی شدن بهعنوان ترافیک خوب، آمدن از IPهای بد، جغرافیاهای غیرمنتظره و غیره داشته باشند. گاهی اوقات دریافت پشتیبانی باتجربه برای مطالعه الگوهای ترافیک و ایجاد حفاظتهای سفارشی در هنگام وقوع حملات نیز مفید است.