نکاتی در استفاده از نسخه جدید فایروال:

نحوه اعمال قوانین در فایروال از حالت اولویت بندی شده بر اساس اکشن، به حالت اولویت بندی شده بر اساس ترتیب قوانین تغییر پیدا خواهد کرد. قوانین فعلی به نحوی مهاجرت داده خواهند شد که عملکرد خروجی تغییری نکند.
پنل فایروال CDN تغییر خواهد کرد و تمامی رول های فایروال در قالب یک جدول ترتیب دار دیده میشوند.
شروط فایروال HttpVersion، Port و TLS حذف خواهند شد.
اکشن فایروال Bypass حذف شده و با Allow جایگزین خواهد شد.
نام قوانین فایروال در CDN فقط میتواند شامل حروف کوچک انگلیسی، اعداد و خط فاصله باشد و باید با حروف کوچک انگلیسی شروع شود. قوانین فایروالی که نام آنها مطابق این قوانین نیست، در هنگام ویرایش باید طوری تغییر کنند که مطابق با این قوانین باشند.

در صفحه مرتبط با تنظیمات فایروال می‌توانید قوانین، محدودیت‌ها و عملیات مدنظر خود را برای فایروال پیکربندی کنید. در این مستند به توضیح هر یک از محدودیت‌های قابل اعتماد خواهیم پرداخت.

نحوه ترکیب شرط‌های قوانین

قبل از پیکربندی قوانین و محدودیت‌ها (Constraint) بهتر است بدانید که عبارتی که در نهایت ارزیابی می‌شود، به صورت زیر خواهد بود و شما می‌توانید مجموعه‌ای محدودیت‌ها را با توجه به نحوه‌ی ترکیب قوانین که در زیر آورده شده است اعمال کنید:

(constraint1 && constraint2 && …) or (constraintN && constraintN+1 &&‌ …) or …

در واقع or تعدادی and است که منطق کامل نیست، ولی برای پیاده‌سازی اکثر حالات مدنظر می‌تواند مورد استفاده قرار گیرد.

محدودیت‌های قابل اعمال در درخواست HTTP

شما می‌توانید با انتخاب هر یک از مواردی که در زیر آورده شده است محدویت‌هایی را بر روی درخواست‌ها (request) اعمال کنید:

  • شماره سامانه خودمختار (ASN)
  • کوکی‌ها
  • کشور
  • IP
  • متد HTTP مثل GET و POST و…
  • URI
  • Path
  • Query Strings (Args)
  • HTTP Version
  • TLS (on/off)
  • Known Bots

در ادامه به‌توضیح هر یک از این ویژگی‌های قابل استفاده پرداخته خواهد شد.

شماره سامانه خودمختار (ASN)

هر آدرس IP متعلق به یک سامانه خودمختار یا سازمان است. سامانه‌های خودمختار در پروتکل IP، شماره مخصوص به خود را دارند که ASN یا Autonomous System Number نامیده می‌شود. با تنظیم کردن یک شرط بر روی این شماره در فایروال می‌توانید تمامی درخواست‌های ورودی از این شرکت را Allow کنید.

پارامترها:

  • Expected: لیست ASNهای مورد نظر
  • Operator: یکی از موارد equals ،lesser ،greater

کوکی‌ها (cookies)

کوکی‌ها اطلاعاتی هستند که با هر بار ارسال درخواست به یک سرور، همراه با درخواست ارسال می‌شوند. این اطلاعات می‌توانند از سمت سرور به کلاینت ارسال شوند (با هدر Set-Cookie در پاسخ) و کلاینت باید در درخواست‌های بعدی آن‌ها را (در هدر Cookie) به سرور ارسال کند.

شما می‌توانید قوانینی تعریف کنید و بر اساس محتویات Cookie‌های ارسالی برای سرنوشت درخواست تصمیم بگیرید.

پارامترها:

  • Name: نام کوکی مورد نظر
  • Expected: لیست مقادیر مورد نظر
  • Operator: یکی از موارد equals، contains، starts_with، ends_with، matches

کشور

می‌توانید بر اساس کشوری که درخواست از آن‌ صورت گرفته، برای ریکوئست تصمیم بگیرید.

پارامترها:

  • Expected: لیست کشورهای موردنظر
  • Operator: فقط equals

آدرس IP

می‌توانید آدرس IP درخواست را به صورت CIDR با هر IP Rangeی مورد بررسی قرار دهید و برای درخواست تصمیم‌گیری کنید. در حال حاضر فقط IPv4 پشتیبانی می‌شود. منظور از CIDR چیزی مانند 185.166.104.0/24 است که یک محدوده IP مشخص می‌کند. برای مشخص کردن تک IP از /32 استفاده کنید.

پارامترها:

  • Expected: لیست محدوده‌های IP مورد نظر به فرمت CIDR
  • Operator: فقط ip_matches

متد HTTP

می‌توانید بر اساس متد درخواست HTTP نیز برای قوانین شرط تعریف کنید.

پارامترها:

  • Exptected: یکی از GET، POST، PURGE، PUT، HEAD، OPTIONS، DELETE، PATCH
  • Operator: فقط equals

URI

منظور از URI در اینجا هر چیزی است که بعد از نام دامنه در URL می‌آید. برای مثال در URL زیر

https://example.com/path/to/a/file?q=p&t=s

منظور از URI قسمت زیر است:

/path/to/a/file?q=p&t=s

پارامترها:

  • Expected: لیست مقادیر مورد نظر
  • Operator: یکی از equals، contains، starts_with، ends_with، matches

مسیر (path)

منظور از Path آن قسمت از URI است که قبل از ? می‌آید، در مثال قبلی منظور از Path قسمت زیر است:

/path/to/a/file

پارامترها:

  • Expected: لیست مقادیر مورد نظر
  • Operator: یکی از equals، contains، starts_with، ends_with، matches

Query String

منظور از query string آن قسمت از URI است که بعد از ? می‌آید و شامل مقادیری به فرمت key=value است. در مثال قبلی:

q=p&t=s

پارامترها:

  • Name: نام query مورد نظر
  • Expected: لیست مقادیر مورد نظر
  • Operator: یکی از موارد equals، contains، starts_with، ends_with، matches

نسخه HTTP

HTTP Version شماره نسخه پروتکل HTTP درخواست است:

پارامترها:

  • Expected: یکی از موارد HTTP/1.0 HTTP/1.1 HTTP/1.2 HTTP/2 HTTP/3
  • Operator: فقط equals

فعال/غیرفعال بودن TLS

می‌توانید شرطی را فقط برای درخواست‌های با/بدون TLS تعریف کنید

پارامترها:

  • Expected: True/False
  • Operator: equals

ربات‌های شناخته شده (known bots)

با استفاده از این قابلیت می‌توانید درخواست‌ها را فقط برای ربات‌های خوب شناخته شده مثل Google Bot، ‌Bingbot و … عبور دهید و برای سایر درخواست‌ها تصمیم دیگری بگیرید.

پارامترها:

  • Expected: True/False
  • Operator: equals

پورت هاست (Host port)

می‌توانید بر اساس پورتی که کاربر برای دسترسی استفاده می‌کند (۸۰ یا ۴۴۳) ، برای در خواست تصمیم بگیرید.

پارامترها:

Operator: فقط equals

Expected: یکی از مقادیر ۸۰ یا ۴۴۳

پس از انتخاب هریک از این ویژگی‌ها و در واقع ایجاد ترکیبی از شرط‌ها که قوانینی که می‌خواهید را تشکیل می‌دهند، لازم است انتخاب کنید که براساس این قوانین چه کاری انجام شود. به این کارها عملیات گفته می‌شود. برای اطلاعات بیشتر در مورد عملیات به مستند انواع عملیات برای قوانین فایروال مراجعه کنید.

تنظیمات Glob

قوانین فایروال شبکه توزیع محتوای ستون از روش GLOB استفاده می‌کند. بخشی از موارد تحت پشتیبانی این مدل در زیر آمده است.

مواردی که پشتیبانی می‌شود

مدلورودیشرط برقراریشرط عدم برقراری
List {a,b,c}/{static,build/public}/*.jsas their directories are included in the group /static/file.js/build/public/file.jsas the ‘src’ directory is not in the group /src/file.js
Range [abc]/[abc]-xyz/*.jsas they are in the range provided /a-xyz/file.js/b-xyz/file.js/c-xyz/file.jsas ‘d’ is not in the range ‘[abc]’ /d-xyz/file.js
Not in Range [!abc]/[!abc]-xyz/*.jsas they are not in the given range /d-xyz/file.js/e-xyz/file.jsas they are within the excluded range /a-xyz/file.js/b-xyz/file.js/c-xyz/file.js
One Char ??.jsas they are a single character ending with ‘.js’ a.jsb.jsit is more than one character before ‘.js’ file.js
Zero or More Chars **.jsas they end with ‘.js’ one.jstwo.jsthree.jsas it doesn’t end with ‘.js’ four.md

مواردی که پشتیبانی نمی‌شود

مدلورودی
Recursive (globstar) **/**/*.js
Not Patterns !(a|b)/!(src|build)/*.js
Zero or One Pattern ?(a|b)file?(.min|.umd).js
Zero or More Patterns *(a|b)file*(.min|.umd).js
One or More Patterns +(a|b)file+(.min|.umd).js
Exactly One Pattern @(a|b)file@(.min|.umd).js