آموزش CDN و سرعت سایت

حمله DDoS چیست و CDN چگونه از سایت شما محافظت می‌کند؟

تهیه: کلودیفای (نگارش با کمک هوش مصنوعی) · انتشار: · زمان مطالعه: ۷ دقیقه

DDoSCDNآموزش CDN و سرعت سایتحمله DDoS چیست وCDN چگونه از سایت شمامحافظت می‌کند؟مجلهٔ کلودیفایclodify.net/blog
پاسخ کوتاه

حملهٔ DDoS یعنی سرازیر کردن حجم عظیمی از ترافیک یا درخواست از هزاران دستگاه آلوده به سمت سایت، تا منابع سرور یا ظرفیت شبکهٔ آن تمام شود و کاربران واقعی نتوانند وارد شوند. CDN با پخش ترافیک بین نودهای متعدد، جذب حملات حجمی در لبهٔ شبکه، پنهان کردن آی‌پی سرور اصلی و ابزارهایی مثل محدودیت نرخ و چالش مرورگر، بخش بزرگی از این حملات را پیش از رسیدن به سرور متوقف می‌کند.

DDoS به زبان ساده

تصور کنید یک فروشگاه کوچک دارید و ناگهان هزاران نفر بدون قصد خرید وارد می‌شوند، راهروها را پر می‌کنند و صف صندوق را می‌بندند. مشتریان واقعی نمی‌توانند وارد شوند. حملهٔ DDoS (Distributed Denial of Service یا حملهٔ منع سرویس توزیع‌شده) دقیقاً همین کار را با سایت شما می‌کند.

کلمهٔ «توزیع‌شده» کلیدی است: حمله از یک کامپیوتر نیست، بلکه از هزاران یا میلیون‌ها دستگاه آلوده در سراسر دنیا انجام می‌شود؛ کامپیوترها، سرورها، دوربین‌های مداربسته و روترهای خانگی که بدون اطلاع صاحبانشان در یک بات‌نت قرار گرفته‌اند. چون ترافیک از آی‌پی‌های بسیار متنوع می‌آید، مسدود کردن چند آی‌پی کمکی نمی‌کند.

حملهٔ DDoS بدون محافظت
ارسال هم‌زمانمستقیم به آی‌پیبدون پاسخبات‌نتهزاران دستگاه آلودهاینترنتسیل درخواست‌هاسرور شمامنابع و پورت اشباعکاربر واقعیسایت در دسترس نیستارسال هم‌زمانمستقیم به آی‌پیبدون پاسخبات‌نتهزاران دستگاه آلودهاینترنتسیل درخواست‌هاسرور شمامنابع و پورت اشباعکاربر واقعیسایت در دسترس نیست
شکل ۱ وقتی ترافیک حمله مستقیم به سرور می‌رسد، هیچ ظرفیتی برای کاربران واقعی باقی نمی‌ماند.

انواع حملات DDoS

۱. حملات حجمی (Volumetric)

هدف، پر کردن ظرفیت شبکه است. مهاجم آن‌قدر داده می‌فرستد که پورت سرور یا حتی لینک دیتاسنتر اشباع شود. حملات تقویتی (Amplification) از این نوع‌اند: مهاجم درخواست کوچکی با آی‌پی جعلی قربانی به سرویس‌های باز اینترنت (مثل DNS باز) می‌فرستد و آن‌ها پاسخ بسیار بزرگ‌تری به قربانی برمی‌گردانند. در برابر این حملات، هیچ تنظیمی روی خود سرور کمکی نمی‌کند؛ چون ترافیک پیش از رسیدن به سرور، لوله را پر کرده است.

۲. حملات پروتکلی

این حملات منابع سیستم‌عامل یا تجهیزات شبکه را هدف می‌گیرند. نمونهٔ معروف آن SYN Flood است: مهاجم میلیون‌ها درخواست شروع اتصال TCP می‌فرستد اما هیچ‌کدام را کامل نمی‌کند، تا جدول اتصال‌های سرور پر شود. برای آشنایی با TCP، مقالهٔ پورت شبکه چیست؟ مفید است.

۳. حملات لایهٔ برنامه (لایهٔ ۷)

پیچیده‌ترین نوع. مهاجم درخواست‌های HTTP کاملاً عادی‌نما می‌فرستد؛ مثلاً مدام صفحهٔ جست‌وجو یا صفحه‌ای سنگین را باز می‌کند. هر درخواست به PHP و دیتابیس فشار می‌آورد. حجم ترافیک ممکن است کم باشد اما سرور از پا درمی‌آید. تشخیص این حملات از کاربران واقعی سخت‌تر است.

نشانه‌های حمله

  • سایت ناگهان بسیار کند یا کاملاً از دسترس خارج می‌شود، بدون این‌که تغییری داده باشید.
  • ترافیک ورودی سرور یا تعداد درخواست‌ها به‌شکل غیرعادی بالا می‌رود.
  • در لاگ دسترسی، تعداد زیادی درخواست به یک آدرس خاص از آی‌پی‌های متنوع دیده می‌شود.
  • مصرف CPU سرور بالاست و پروسه‌های PHP یا وب‌سرور همه مشغول‌اند.
  • ارائه‌دهندهٔ سرور به‌خاطر ترافیک غیرعادی، آی‌پی را موقتاً از دسترس خارج می‌کند (Null Route).

با دستورهای ساده می‌توانید تصویر سریعی بگیرید:

ss -s
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head

دستور دوم پرتکرارترین آی‌پی‌ها و دستور سوم پرتکرارترین آدرس‌ها را نشان می‌دهد. اگر سایت پشت CDN است، ستون اول آی‌پی CDN خواهد بود مگر این‌که آی‌پی واقعی کاربر را تنظیم کرده باشید.

سه نوع حمله و پاسخ CDN
نوع حمله
  • حجمی: پر کردن ظرفیت شبکه
  • پروتکلی: مثل SYN Flood
  • لایهٔ ۷: درخواست‌های HTTP عادی‌نما
در برابر
پاسخ CDN
  • پخش و جذب در نودهای متعدد
  • فیلتر در لبه، فقط HTTP معتبر به مبدأ
  • کش، محدودیت نرخ، چالش و WAF
شکل ۲ هر نوع حمله ابزار دفاعی خودش را دارد؛ CDN برای هر سه لایه راهکار ارائه می‌دهد.

CDN چطور محافظت می‌کند؟

پخش ترافیک بین نودهای متعدد

CDN شبکه‌ای از نودها در مکان‌های مختلف با ظرفیت شبکهٔ بسیار بیشتر از یک سرور منفرد است. وقتی سایت پشت CDN قرار می‌گیرد، ترافیک حمله بین نودها پخش می‌شود و ظرفیت مجموعه، بسیار دیرتر از یک سرور تنها اشباع می‌شود.

پنهان کردن آی‌پی سرور اصلی

کاربران و مهاجمان فقط آی‌پی CDN را می‌بینند. اگر مهاجم آی‌پی سرور اصلی را نداند، نمی‌تواند مستقیم به آن حمله کند. اما این محافظت فقط وقتی کار می‌کند که آی‌پی اصلی لو نرود؛ پایین‌تر توضیح می‌دهیم چطور.

فیلتر در لبهٔ شبکه

حملات حجمی و پروتکلی معمولاً در لایهٔ شبکهٔ CDN شناسایی و دور ریخته می‌شوند و اصلاً به سرور شما نمی‌رسند. CDN فقط درخواست‌های HTTP معتبر را به سرور اصلی منتقل می‌کند.

کش

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

محدودیت نرخ و چالش

بسیاری از CDNها امکان محدودیت نرخ (Rate Limiting) دارند: مثلاً اگر یک آی‌پی بیش از تعداد مشخصی درخواست در دقیقه به صفحهٔ ورود بفرستد، مسدود شود. چالش مرورگر یا کپچا هم ربات‌های ساده را از کاربران واقعی جدا می‌کند. برخی CDNها دیوارهٔ آتش وب (WAF) هم دارند که درخواست‌های مخرب را از روی الگو تشخیص می‌دهد.

اشتباه‌هایی که محافظت CDN را بی‌اثر می‌کنند

  1. آی‌پی اصلی در رکوردهای DNS دیگر: اگر زیردامنه‌ای مثل mail یا ftp مستقیم به آی‌پی سرور اشاره کند، مهاجم آن را پیدا می‌کند.
  2. سابقهٔ DNS: سرویس‌هایی وجود دارند که رکوردهای قدیمی دامنه را نگه می‌دارند. اگر سایت پیش از CDN سال‌ها با همین آی‌پی کار کرده است، تغییر آی‌پی سرور پس از اتصال CDN را در نظر بگیرید.
  3. ایمیل‌های ارسالی از سرور: هدر ایمیل‌هایی که مستقیم از سرور فرستاده می‌شوند، آی‌پی آن را نشان می‌دهد.
  4. باز بودن پورت وب برای همه: سرور اصلی باید فقط از آی‌پی‌های CDN درخواست HTTP و HTTPS بپذیرد. با فایروال بقیه را ببندید؛ راهنمای UFW را ببینید.
آمادگی پیش از حمله
  1. اتصال به CDN

    همهٔ ترافیک وب از لبهٔ شبکه عبور کند.

  2. پنهان کردن آی‌پی اصلی

    هیچ رکورد DNS مستقیم به سرور اشاره نکند.

  3. فایروال سرور

    پورت‌های وب فقط برای آی‌پی‌های CDN باز باشند.

  4. کش و محدودیت نرخ

    صفحات عمومی کش و مسیرهای سنگین محدود شوند.

  5. پایش و برنامهٔ واکنش

    هشدار ترافیک غیرعادی و مراحل مکتوب.

شکل ۳ محافظت مؤثر ترکیبی از CDN و تنظیمات درست سرور است.

هنگام حمله چه کنیم؟

  1. آرام بمانید و اندازه بگیرید: نوع حمله (حجمی یا لایهٔ ۷) را با لاگ‌ها و نمودار ترافیک تشخیص دهید.
  2. اگر سایت پشت CDN نیست، اتصال آن را در اولویت بگذارید.
  3. حالت حفاظت سخت‌گیرانه یا چالش را در پنل CDN برای کل سایت یا مسیرهای هدف فعال کنید.
  4. محدودیت نرخ را برای مسیرهای سنگین مثل جست‌وجو، ورود و API تنظیم کنید.
  5. کش را گسترش دهید: صفحاتی که معمولاً کش نمی‌کنید، موقتاً برای مهمانان کش کنید.
  6. با پشتیبانی ارائه‌دهنده در تماس باشید؛ آن‌ها ابزارها و دید شبکه‌ای بیشتری دارند.

اگر پس از اتصال CDN خطاهای 5xx دیدید، ممکن است سرور اصلی زیر فشار باشد یا فایروال به اشتباه CDN را مسدود کرده باشد؛ خطاهای 5xx در CDN را بخوانید.

محافظت پیش از حمله

بهترین زمان برای آماده شدن، پیش از حمله است: سایت را پشت CDN ببرید، آی‌پی اصلی را پنهان و دسترسی مستقیم را با فایروال محدود کنید، کش را درست تنظیم کنید، پایش و هشدار داشته باشید و یک برنامهٔ واکنش مکتوب آماده کنید. همچنین چک‌لیست امنیت سرور جدید را برای جلوگیری از تبدیل شدن سرور خودتان به بخشی از یک بات‌نت دنبال کنید.

نقش ارائه‌دهندهٔ سرور در مقابله با حمله

لایهٔ دیگری از محافظت، در خود دیتاسنتر و شبکهٔ ارائه‌دهندهٔ سرور است. برخی ارائه‌دهندگان سیستم‌های تشخیص و پالایش حملات حجمی را در ورودی شبکهٔ خود دارند و ترافیک مخرب را پیش از رسیدن به سرور شما حذف می‌کنند. برخی دیگر در مواجهه با حملهٔ بزرگ، برای محافظت از بقیهٔ مشتریان، آی‌پی هدف را موقتاً از دسترس خارج می‌کنند. این کار سرور شما را نجات نمی‌دهد اما از آسیب به دیگران جلوگیری می‌کند.

پیش از انتخاب سرور برای سرویس‌های حساس، از ارائه‌دهنده بپرسید چه سطحی از محافظت در برابر حملات حجمی دارد و در زمان حمله چه رفتاری نشان می‌دهد. ترکیب محافظت شبکهٔ ارائه‌دهنده با CDN و تنظیمات درست سرور، چند لایهٔ دفاعی مستقل می‌سازد که هرکدام بخشی از حمله را مهار می‌کند.

هزینهٔ واقعی قطعی

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

یکی از واکنش‌های رایج به حملهٔ سنگین در ایران، ایران اکسس کردن آی‌پی هدف است؛ نشانه‌ها و راه‌های کم کردن احتمال آن را در ایران اکسس چیست ببینید.

سؤالات متداول

آیا CDN جلوی همهٔ حملات DDoS را می‌گیرد؟

CDN بخش بزرگی از حملات حجمی و پروتکلی را در لبهٔ شبکه جذب می‌کند و ابزارهایی برای حملات لایهٔ ۷ دارد، اما هیچ راهکاری محافظت مطلق نیست. تنظیم درست کش، محدودیت نرخ و پنهان ماندن آی‌پی اصلی اثر آن را چند برابر می‌کند.

چرا با وجود CDN باز هم سرورم زیر حمله است؟

احتمالاً آی‌پی اصلی سرور لو رفته است و مهاجم مستقیم به آن حمله می‌کند. رکوردهای DNS را بررسی کنید، فقط آی‌پی‌های CDN را در فایروال مجاز کنید و در صورت لزوم آی‌پی سرور را عوض کنید.

فرق DoS و DDoS چیست؟

در DoS حمله از یک منبع یا تعداد کمی منبع انجام می‌شود و معمولاً با مسدود کردن آی‌پی مهاجم مهار می‌شود. در DDoS حمله از هزاران دستگاه توزیع‌شده است و مسدود کردن تک‌تک آی‌پی‌ها عملی نیست.

آیا سرور کوچک بیشتر در معرض DDoS است؟

اندازهٔ سرور تعیین نمی‌کند که هدف قرار بگیرید، اما سرور کوچک‌تر زودتر از پا درمی‌آید. به همین دلیل محافظت در لبهٔ شبکه با CDN برای سایت‌های کوچک و متوسط اهمیت بیشتری دارد.

آماده‌اید؟ سرورتان را بسازید.

از ۱٬۲۰۰ تومان در ساعت · پرداخت ریالی

سرورتان را همین حالا بسازید.

ساعتی بپردازید. هر وقت خواستید حذف کنید.