جلوگیری از حملات DDoS
قابلیت مقابله با حملات منع سرویس توزیعشده یا DDoS Protection ابر آروان در چهار حالت با سطوح متفاوت از پیچیدگی، به شما کمک میکند تا بتوانید وبسایت خود را در مقابل حملات DDoS محافظت کنید.
برای بهکارگیری محصول DDoS Protection کافی است تا در پنل کاربری ابر آروان به قسمت CDN، بخش «جلوگیری از حملات DDoS» بروید.
محافظت از حملات DDoS لایه ۳ و ۴
در حالت پایه یا نخستین سطح جلوگیری از حملات DDoS ابر آروان، تمامی حملات لایههای ۳ و ۴ شبکه دفع میشوند و از وبسایت شما در مقابل این حملات محافظت میشود. اما این حالت از حملات لایه ۷ که از پیچیدگی بیشتری برخوردارند، جلوگیری نمیکند.
ابر آروان برای جلوگیری از این نوع حملات سه حالت عمومی، حرفهای و پیشرفته را ارایه میکند.
محافظت از حملات DDoS لایه ۷
این محافظت در لایهی اپلیکیشن و در سه سطح انجام میشود.
چالش Cookie
با فعالسازی چالش Cookie، در این حالت آروان در اولین درخواست هر کاربر یک پاسخ با کد وضعیت 307 ارسال میکند و از کاربر میخواهد که یک کوکی مشخص را در پاسخ اعمال و با همهی درخواستهای بعدی ارسال کند. در ادامه آروان این کوکی را بررسی میکند و در حالتی که معتبر باشد اجازهی دسترسی به سایت را میدهد. (چنانچه این Redirect موجب اختلال در APIهای شما میشود، میتوانید با ساخت قانونی در بخش «قوانین خاص» برای API مورد نظر این قابلیت را غیرفعال کنید). با اعمال این چالش، بیشتر باتهای ساده را میتوان شناسایی و مسدود کرد.
IPهای گوگل و موتورهای جستوجو از تمامی موارد اعمالی حفاظت از DDoS مستثنا هستند.
فعال سازی از طریق API
curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/ddos' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'accept-language: fa' \
--header 'authorization: APIKEY 1 2 3 4' \
--header 'cache-control: no-cache' \
--header 'content-type: application/json;charset=UTF-8' \
--header 'pragma: no-cache' \
--data-raw '{"protection_mode":"cookie"}'
چالش JS
با فعالسازی چالش JS، از نوعی عملیات رمزنگاری برای شناسایی کاربران عادی استفاده میشود تا از حملات باتهای پیشرفته نیز جلوگیری شود. در این روش، یک فایل جاوااسکریپت برای مرورگر کاربر ارسال شده و از او خواسته میشود یک چالش AES Encryption را انجام دهد. از آنجایی که این چالش نیازمند مصرف CPU و JavaScript Engine است، رباتها نمیتوانند از این چالش عبور کنند.
فعال سازی از طریق API
curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/ddos' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'accept-language: fa' \
--header 'authorization: APIKEY 1 2 3 4' \
--header 'cache-control: no-cache' \
--header 'content-type: application/json;charset=UTF-8' \
--header 'pragma: no-cache' \
--data-raw '{"protection_mode":" javascript"}'
چالش Captcha
در آخرین و پیشرفتهترین چالش، به کاربر یک کد امنیتی یا Captcha نمایش داده و از او خواسته میشود چند تصویر را بهدرستی تشخیص دهد. چون ترافیک نمایش این صفحات و پردازش آنها خارج از سرور شما انجام میشود، هیچ باری سمت سرور شما اضافه نخواهد شد.
در این حالت میتوانید با توجه به نیازتان، نوع کپچای چالش را مشخص کنید تا روی کل دامنه و در چالش DDoS از نوع مود ۳ (چالش کپچا) نوع کپچای استفادهشده چه چیزی باشد.
برای فعالسازی چالش Captcha، بستهی سرویس CDN شما باید حرفهای یا سازمانی باشد.
فعال سازی از طریق API
curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/ddos' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'accept-language: fa' \
--header 'authorization: APIKEY 1 2 3 4' \
--header 'cache-control: no-cache' \
--header 'content-type: application/json;charset=UTF-8' \
--header 'pragma: no-cache' \
--data-raw '{"protection_mode":"recaptcha"}
تغییر نوع کپچا با استفاده از API
curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/ddos' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'cache-control: no-cache' \
--header 'content-type: application/json' \
--data-raw '{"protection_mode":"captcha","captcha_service":"hcaptcha","ttl":0}'
پارامتر captcha_service
میتواند سه ورودی hCaptcha ،arCaptcha و reCAPTCHA داشته باشد که بسته به نوع سرویس انتخابی باید در درخواست API فرستاده شود.
در هر یک از چالشهای مقابله با DDoS میتوانید مدت زمان اعتبار چالش را بهازای هر کاربر تعیین کنید، به این معنا که بهازای تایید صلاحیت یک کاربر تا چه مدت زمانی کاربر مورد نظر نیازی به تایید مجدد نداشته باشد.
غیرفعالسازی محافظت DDoS برای یک مسیر خاص
اگر چالش DDoS برای مسیری از دامنهی شما باعث اختلال شده است (مانند سرویس API) باید آن مسیر (URL) را در آروان بهشکل Glob وارد کنید تا چالش DDoS روی آن اعمال نشود.
برای این کار در قسمت قوانین سفارشی روی افزودن قانون کلیک کنید.
حال میتوانید مسیر مورد نظر خود را همراه با لیست IPها و یا همهی IPها وارد و مشخص کنید که آیا چالش برای آنها اعمال شود یا خیر.
نکات استفاده از fetch
یا xhr
هنگام فعال بودن چالش
اگر در دامنهی شما (example.com) کد جاوا اسکریپتی وجود دارد که به یک زیردامنه مثل (sub.example.com) درخواست میزند، باید نکات زیر را رعایت کنید:
استفاده از fetch
اگر از fetch
برای درخواست زدن استفاده میکنید، باید داخل options
مقدار credentials
را include
قرار دهید. مثال:
fetch("https://sub.example.com", { credentials: 'include' });
استفاده از xhr
اگر از xhr
استفاده میکنید، باید مقدار withCredentials
کلاینت را برابر با true
تنظیم کنید. مثال:
let xhttp = new XMLHttpRequest();
xhttp.open("GET", "https://sub.example.com", true);
xhttp.withCredentials = true;
xhttp.send();
استفاده از ajax
اگر از ajax
استفاده میکنید، باید آپشن xhrFields.withCredentials
را برابر true
قرار دهید. مثال:
$.ajax("https://sub.example.com", { xhrFields: { withCredentials: true } })
مدیریت درخواست Preflight یا CORS
برای ارسال درخواست به یک زیردامنه حتمن باید Headerهای Preflight به گونهای (برای مثال با استفاده از قوانین صفحه) مدیریت شده باشند.
اگر نیازی به پاسخ درخواست ارسالی ندارید (درخواست opaque است) میتوانید mode
را روی no-cors
تنظیم کنید. مثال:
fetch("https://sub.example.com", { mode: 'no-cors', credentials: 'include' })