رفتن به محتوا
cloudhostمستندات
محصولات

فایروال

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

محافظت‌های همیشه روشن#

این‌ها برای همهٔ پروژه‌ها روشن‌اند، هزینه‌ای ندارند و خاموش نمی‌شوند:

محافظتکار
محافظت در برابر سیل درخواستهر آدرس می‌تواند چند صد درخواست در ثانیه به یک سرور بفرستد؛ بیشتر از آن برای لحظه‌ای پاسخ ۴۲۹ می‌گیرد.
درخواست‌های نادرستدرخواست‌هایی با هدر بیش از اندازه، مسیر نادرست یا پروتکل خراب پیش از هر قاعده‌ای رد می‌شوند.

وضعیت فایروال «عادی» است، یا «در حال مقابله» وقتی یکی از این محافظت‌ها در ده دقیقهٔ گذشته درخواستی را متوقف کرده باشد.

نوشتن قاعده#

هر قاعده یک نام، شرط‌ها و یک کار دارد. شرط‌ها در گروه‌اند: قاعده وقتی مطابق است که همهٔ شرط‌های دست‌کم یک گروه برقرار باشند (در هر گروه «و»، بین گروه‌ها «یا»).

فیلدعملگرهامقدار
ipinآدرسها یا بازه‌های CIDR (IPv4 و IPv6)
countryinکد دوحرفی کشور، مثلاً IR
methodinGET, POST, …
path, host, user_agenteq, starts, ends, contains, in, reمتن؛ re یک عبارت باقاعده است
header (name)همان‌ها و existsمقدار هدری که نامش را می‌دهید
  • هر شرط با neg: true (در خط فرمان not) برعکس می‌شود، مثلاً «هدر x-api-key نیست».
  • مقایسهٔ متن به بزرگی و کوچکی حروف حساس نیست، جز path. عبارت باقاعده نگاه به جلو و عقب و ارجاع برگشتی ندارد؛ با (?i) شروع کنید تا حروف یکسان شمرده شوند.
  • کشور از آدرس درخواست و با پایگاه دادهٔ کشورها روی خود سرور پیدا می‌شود؛ اگر پیدا نشود هیچ شرط کشوری مطابق نیست.
کارمعنی
denyپاسخ ۴۰۳؛ کد شما اجرا نمی‌شود
allowدرخواست بدون بررسی قاعده‌های بعدی می‌گذرد
logشمرده و ثبت می‌شود و قاعدهٔ بعدی بررسی می‌شود
rate_limitبیش از limit درخواست در window ثانیه برای هر کلید: ۴۲۹ (یا فقط ثبت، با then: log)

قاعده‌ها به ترتیب اجرا می‌شوند و اولین deny، allow یا محدودیت درخواستِ پرشده تصمیم می‌گیرد. ترتیب را با position هنگام ایجاد، با cloudhost firewall move یا با PUT …/firewall/order عوض کنید. قاعدهٔ خاموش در فهرست می‌ماند و اجرا نمی‌شود.

cloudhost firewall add --project my-api --name "Block admin" --action deny \
  --if "path starts /admin" --if "ip not in 10.0.0.0/8"
cloudhost firewall add --project my-api --name "Bots without a key" --action deny \
  --if "user_agent re (?i)bot" --or --if "header:x-api-key not exists" --if "method in POST,PUT"
cloudhost firewall add --project my-api --name "Allow the office" --action allow --if "ip in 203.0.113.0/24" --position 0
cloudhost firewall rules --project my-api
cloudhost firewall move fwr_abc123def456 0 --project my-api
cloudhost firewall disable fwr_abc123def456 --project my-api

در خط فرمان هر --if یک شرط است: "<فیلد>[:<نام هدر>] [not] <عملگر> [<مقدار>]". --ifهای پشت‌سرهم یک گروه‌اند و --or گروه بعدی را شروع می‌کند. برای in مقدارها با ویرگول جدا می‌شوند؛ برای بقیه همهٔ باقی‌مانده یک مقدار است.

محدودیت درخواست#

یک قاعدهٔ rate_limit درخواست‌هایی را که با شرط‌هایش مطابق‌اند برای هر کلید می‌شمارد: آدرس (ip، پیش‌فرض) یا مقدار یک هدر (header:<نام>، مثلاً کلید API مشتری‌تان). پنجره‌ها ۱۰، ۶۰، ۳۰۰، ۶۰۰ یا ۳۶۰۰ ثانیه‌اند.

شمارش بین همهٔ سرورهای پلتفرم مشترک است و در حدود یک ثانیه به هم می‌رسد؛ پس سقف برای کل پروژه است، نه برای هر سرور، و در یک ثانیهٔ اول ممکن است کمی بیشتر بگذرد.

cloudhost firewall add --project my-api --name "Login limit" --action rate_limit \
  --if "path eq /login" --if "method in POST" --limit 10 --window 60 --key ip --then deny
cloudhost firewall edit fwr_abc123def456 --project my-api --limit 20

آزمودن یک درخواست#

پیش از اعتماد به یک قاعده ببینید با یک درخواست چه می‌کند. چیزی به پروژه فرستاده نمی‌شود و محدودیت درخواست شمرده نمی‌شود (یک درخواست هیچ‌وقت از سقف نمی‌گذرد).

خط فرمان
cloudhost firewall check --project my-api --ip 203.0.113.7 --country DE --method POST --path /admin --header x-api-key=abc
# denied by rule fwr_abc123def456 "Block admin" → 403

شمارش‌ها، آدرسها و تاریخچه#

سرورها برای هر دقیقه می‌شمارند چند درخواست گذشت، رد شد، ثبت شد یا محدود شد و هر قاعده چند بار مطابق بود؛ برای ۱ ساعت، ۲۴ ساعت یا ۷ روز گذشته. آدرسها و کشورهایی که بیشترین درخواستِ متوقف‌شده را داشتند هم فهرست می‌شوند. شمارش‌ها ۳۱ روز نگه داشته می‌شوند.

هر تغییر قاعده (ایجاد، تغییر، روشن و خاموش، حذف، جابه‌جایی) با کننده، زمان و حالت پیش و پس در تاریخچهٔ فایروال ثبت می‌شود و در گزارش فعالیت تیم هم هست.

خط فرمان
cloudhost firewall --project my-api            # status, protections, rules, limits
cloudhost firewall metrics --project my-api --range 24h
cloudhost firewall audit --project my-api --limit 20

از دستیار هوش مصنوعی#

سرور MCP همین کارها را دارد: get_firewall، create_firewall_rule، update_firewall_rule، delete_firewall_rule، reorder_firewall_rules، check_firewall_request، firewall_metrics و firewall_audit. مثلاً: «برای my-api درخواست‌های POST به /login را به ده در دقیقه برای هر آدرس محدود کن».

سقف‌ها و هزینه#

سقف (برای هر برنامه یا فانکشن)رایگانحرفه‌ایسازمانی
قاعدهٔ سفارشی340200
که محدودیت درخواست باشند11050
شرط در هر قاعده52050
مقدار در هر شرط5010005000

بررسی فایروال رایگان است و شمرده نمی‌شود. درخواستی که رد یا محدود می‌شود کد شما را اجرا نمی‌کند، پس درخواست فانکشن حساب نمی‌شود و هزینه‌ای ندارد. GET /v1/pricing سقف قاعده‌ها را می‌دهد (firewall_custom_rules، firewall_rate_limit_rules).

سقف‌ها پیشنهادی‌اند و ممکن است پیش از راه‌اندازی تغییر کنند.

دادهٔ کشورها#

کشور هر آدرس از DB-IP می‌آید (IP to Country Lite، نوامبر ۲۰۲۶) با پروانهٔ CC BY 4.0. IP geolocation by DB-IP.