فایروال برنامه وب و حفاظت در برابر حملات
خلاصه ای کوتاه
WAF/WAAP فیلتر و کنترل ترافیک HTTP (S )/WebSocket در سطح برنامه: بلوک بهره برداری از آسیب پذیری (OWASP بالا 10)، تلاش برای دور زدن احراز هویت، اسکن، ترافیک ربات خودکار و L7 DDoS. پشته مدرن توسط یک موتور ضد ربات، حفاظت API، محدود کردن نرخ، تکه های مجازی، و همچنین ادغام تنگ با CI/CD تکمیل شده است، به طوری که قوانین به عنوان امن به عنوان کد رول.
نقش و جایگاه در معماری
Edge/CDN WAF (ابر): تاخیر کم، شهرت جهانی/قوانین مدیریت شده، L7 DDoS.
WAF خود میزبان (on-prem/K8s): ادغام عمیق با شبکه های داخلی، تنظیم خوب.
رویکرد WAAP: توابع WAF + API-Gateway (اعتبار سنجی طرح، authZ)، ضد ربات، L7 DoS، mTLS.
طرح های گنجاندن: معکوس پروکسی قبل از برنامه ؛ کنترل کننده ورودی در K8s ؛ خدمات فیلترهای مش ؛ ماشین جانبی.
مدل حفاظت
امنیت منفی (امضا/CRS): پوشش سریع تکنیک های شناخته شده (SQLi/XSS/SSRF/RCE).
امنیت مثبت (allow-list): فقط درخواست های «معتبر» (روش ها/مسیرها/طرح ها/انواع محتوا) را مجاز می کند.
Virtual Patching: مسدود کردن آنلاین سوء استفاده به اصلاح کد.
زمینه: سیاست های مختلف برای محتوای استاتیک، API، مدیران، دانلود ها، وب سایت ها.
OWASP بالا 10: SQLi، XSS، IDOR/BOLA، SSRF، تزریق قالب، deserialization، اشتباه.
L7 DDoS: درخواست های آهسته/هدر، انفجار برای نقاط پایانی داغ → حفاظت: محدودیت نرخ، چالش، خودکار مسدود کردن.
رباتها/اسکرپرها: رفتار، فرکانس، الگوهای «غیر انسانی»، اثر انگشت دستگاه، نشانه های پویا.
پر کردن اعتبار/ATO: رهگیری/شمارش ورود → ناهنجاری توسط IP/ASN، قوانین سرعت، عوامل اضافی.
دانلودها: نوع/اندازه/آنتی ویروس multiscan، «فقط تصویر» در مناطق رسانه.
API/GraphQL: schema-validation, 'maxDepth '/' maxCost', ممنوعیت wildcards بدون مجازات, کنترل متدها و هدرها.
سیاست ها و طراحان قانون
اسکلت پایه برای هر برنامه:1. حمل و نقل: TLS 1. 2+/1. 3، HSTS، mTLS در پشت حساس.
2. روش ها: اجازه لیست ('GET، POST، PUT، DELETE، PATCH، OPTIONS') در هر منبع منحصر به فرد است.
3. مسیرها: ماسک های سخت/regexps ؛ admin/billing - به یک پیشوند/دامنه جداگانه.
4. عنوان ها: لیست های سفید، ممنوعیت خطرناک («X-Original-URL»، غیر استاندارد) غیر ضروری.
5. بدن: JSON-only/Multipart-only در طول مسیر ؛ محدودیت «محتوا طول»، بلوک باینری برای «ورود/جستجو».
6. محدودیت نرخ: در هر IP/ASN/کلید/سازمان ؛ محدودیت های جداگانه برای درخواست های «گران»
7. ضد ربات: به ثمر رساند رفتاری، «غیر تحریک کننده» چالش ها، هویت چسب (نشانه کوکی، FP JA3/TLS).
8. CRS/قوانین مدیریت: فعال, تنظیم تحت FP.
9. پچ های Wirth: مسدود کردن سریع پارامترهای شناخته شده/الگوهای حمله.
10. سیاههها/معیارها: فرمت یکنواخت، همبستگی با 'trace _ id'، گزارش FP/TP.
تمرین تنظیم: چگونه برای کاهش مثبت کاذب
اجرای قوانین جدید در Detect-only/Count-mode (سایه) با نمونه برداری ترافیک.
استثنائات را با متن ایجاد کنید ('path =/search'، 'param = q' اجازه می دهد کاراکترهای خاص).
منطقه را تقسیم کنید: «صفحات عمومی» در مقابل «عملیات حساس» (آستانه تهاجمی متفاوت است).
نوار نقاله: rule → staging → canary (1-5٪) → prod; بازگشت توسط معیارهای FP.
حفظ یک دایرکتوری از «غلط» payload برای آزمون رگرسیون.
ادغام در DevSecOps
CI: قوانین استاتیک در Git ؛ تست ها: درخواست های واقعی + synthetics را از دایرکتوری حمله پخش کنید.
CD: محاسبات قناری، پرچم های ویژگی ؛ نظارت «سیاسی» (تغییر قانون = تغییر).
RASP و SAST/DAST: مکمل های WAF اما اصلاح کد را جایگزین نمی کند.
- p95/99 تاخیر از طریق WAF ؛ نسبت مسدود شده/از دست رفته ؛ به اشتراک گذاری قوانین مدیریت در مقابل سفارشی ؛ «نرخ حمله»
- Anti-bot: سهم چالش ها/تغییر، FP/TP.
- L7 DDoS: رویدادهای کاهش سرعت، کاهش خودکار.
- نه بیشتر از 0. 5٪ FP در عملیات مجاز/روز"
- «P95 سربار WAF ≤ 10 мс».
- فهرست شهرهای بریتانیا «Virtual patch TTR ≤ 30 minutes».
- هشدارها: اسپایک 4xx/5xx پس از انتشار قوانین ؛ رشد FP ؛ قطره در عبور captcha ؛ کاهش اعتبار JWKS/mTLS.
تنظیمات نمونه
ModSecurity + OWASP CRS (Nginx)
nginx
Enabling ModSecurity modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main. conf;
'etc/nginx/modsec/main. conf ':
apache
SecRuleEngine On
Include /usr/local/owasp-modsecurity-crs/crs-setup. conf
Include /usr/local/owasp-modsecurity-crs/rules/.conf
Example of an exception for a search parameter
SecRule REQUEST_URI "@beginsWith /search" "id:900100,phase:1,pass,nolog,ctl:ruleRemoveByTag=attack-xss"
SecRule REQUEST_URI "@beginsWith /search" "id:900101,phase:2,pass,ctl:ruleRemoveTargetById=942100; ARGS:q"
AWS WAF (JSON، محدودیت نرخ + بلوک لیست کشور)
json
{
"Name": "prod-web-acl",
"Scope": "CLOUDFRONT",
"DefaultAction": { "Allow": {} },
"Rules": [
{
"Name": "BurstLogin",
"Priority": 1,
"Statement": {
"RateBasedStatement": {
"Limit": 100,
"AggregateKeyType": "IP",
"ScopeDownStatement": { "ByteMatchStatement": {
"SearchString": "/login",
"FieldToMatch": { "UriPath": {} },
"TextTransformations": [{ "Priority": 0, "Type": "NONE" }],
"PositionalConstraint": "CONTAINS"
}}
}
},
"Action": { "Block": {} },
"VisibilityConfig": { "MetricName": "BurstLogin", "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true }
}
]
}
Cloudflare (قوانین بیان)
(http. request. uri. path contains "/admin" and ip. geoip. country ne "UA")
or (http. request. uri. path eq "/login" and cf. threat_score > 10)
or (http. request. uri. path contains "/api" and not http. request. headers["authorization"][0] contains "Bearer ")
NGINX: روش ساده/قانون بدن
nginx location /api/withdraw {
limit_except POST { deny all; }
if ($request_method = POST) {
set $cl $http_content_length;
if ($ cl = "") {return 411;} # length is required if ($ cl> 1048576) {return 413;} # ≤ 1MB add_header X-Idempotency-Required "true";
}
}
GraphQL: پلیس
'maxDepth = 6', 'maxCost = 1000', ممنوعیت طرح __ 'در فروش, اجازه لیست عملیات, اعتبار سنجی هدر (' محتوا نوع: نرم افزار/json ').
چک های ضد ربات و دوستانه
چالش نامرئی (چالش های JS بدون captcha)، اثبات کار در مسیرهای «گران»، تجزیه و تحلیل رفتاری (حرکات/زمان بندی).
اثر انگشت TLS/JA3، شهرت IP/ASN، لیست پروکسی/VPN (در حد معقول).
تله ها (زمینه های honeypot) در فرم ها، نشانه های فرم/جلسه پویا.
حفاظت از حریم خصوصی: به حداقل رساندن ردیابی، سیاست های شفاف، گزینه های انتخاب کردن.
تمرکز API
Schema-first: OpenAPI/JSON Schema برای اعتبارسنجی ؛ ممنوعیت استفاده از فیلدهای اضافی
Auth: حامل اجباری JWT یا mTLS ؛ без «مجوز» را رد کنید.
نرخ/سهمیه بندی: در هر کلید/در هر سازمان ؛ اگر بیش از حد - «بلوک نرم «/کاهش.
Webhooks: امضای HMAC، «برچسب زمان + nonce»، پنجره پذیرش کوتاه.
GraphQL: محدودکنندهها را در بالا ببینید ؛ نام/برچسب عملیات را وارد کنید.
دانلودها و رسانه ها
محدودیت اندازه، لیست های سفید MIME/extensions، تغییر نام فایل ها ؛
اسکن AV (چند موتور)، سیاست ImageMagick (بدون رمزگشاهای خطرناک) ؛
سرویس انگشت شست در یک دامنه جداگانه، فقط خدمت تصاویر.
ایمنی مدیران و مناطق بحرانی
دامنه/مسیر جداگانه، mTLS/ممنوعیت از مشترک ASN/کشورها، محدودیت نرخ سخت، دسترسی JIT، IP اجازه لیست.
سیگنال های اضافی (وضعیت دستگاه، نمره خطر) → نیاز به بررسی دوم.
عملیات، حوادث و تکه های مجازی
Runbook: انتشار سریع قوانین بلوک، محدودیت TTL، اعلان فرمان.
معیارهای بازگشت: رشد 4xx/5xx> آستانه، FP> آستانه، p95 latency↑.
پس از مرگ: تست را به مجموعه قوانین رگرسیون اضافه کنید، هشدار SIGMA را به SIEM ارسال کنید.
رعایت و حفظ حریم خصوصی
حداقل ورود: مسیر/روش/کد/بلوک دلیل/شناسه ؛ اسرار PII/بدن را ذخیره نکنید.
دوره نگهداری ورود به سیستم سیاست ؛ دسترسی - توسط نقش ها ؛ رمزگذاری بر روی دیسک
ویژگی های برای iGaming/fintech
پرداخت/پرداخت/کیف پول: سهمیه هر سازمان, mTLS به PSP, سخت اجازه می دهد لیست از مسیرهای, HMAC برای PSP webhooks.
ATO/سوء استفاده پاداش: قوانین سرعت برای ورود/ثبت نام/کدهای تبلیغاتی، محدودیت های رفتاری و ضد ربات.
ارائه دهندگان محتوا/استودیوها: دامنه ها/سیاست های فردی، لیست مجوز IP/ASN، نظارت بر زمان به کیف پول/تبدیل در تاثیر WAF.
الزامات منطقه ای: سیاست های جغرافیایی (کشورها/مناطق)، شفافیت درمان برای GDPR.
نقشه راه پیاده سازی
1. موجودی مناطق (عمومی، API، پنل مدیریت، دانلود).
2. مشخصات پایه: TLS، روش ها/مسیرهای مجاز لیست، قوانین مدیریت شده/CRS.
3. محدودیت نرخ + ضد ربات در مسیرهای حساس.
4. پچ های مجازی و قوانین فوری (SLA ≤ 30 دقیقه).
5. CI/CD برای قوانین، staging/canary/shadow-mode.
6. تله متری، SLO، آزمون رگرسیون قوانین.
7. بررسی دوره ای استثنائات و «تمیز کردن» گذرگاه ها.
اشتباهات رایج
«تبدیل تمام CRS به حداکثر» → بهمن FP و فرسودگی شغلی تیم.
قوانین بدون قناری و حالت سایه
بدون تقسیم بندی: یک سیاست برای همه چیز
نادیده گرفتن ویژگی های API/GraphQL (طرح/محدودیت).
سیاهههای مربوط بدون همبستگی ('trace _ id') و بدون معیارهای کیفیت.
سوالات متداول
WAF جایگزین کد امن می شود ؟
نه، اينطور نيست این یک لایه کاهش و یک «پچ مجازی» است، اما بدهی فنی در کد باید حذف شود.
چگونه می توان فهمید که وقت آن است که بلوک های سخت را روشن کنیم ؟
هنگامی که گزارش حالت سایه FP کم را نشان می دهد و تست های رگرسیون قوانین وجود دارد.
آیا به یک WAF جداگانه برای API نیاز دارم ؟
WAAP بهتر/ادغام با دروازه API: طرح، محدودیت ها، احراز هویت، امضای webhook.
مجموع
WAF/WAAP کارآمد ترکیبی از قوانین اساسی CRS/مدیریت شده، مدل مثبت، ضد بوت، محدودیت ها و تکه های مجازی است که توسط فرآیندهای DevSecOps، تله متری و SLO های روشن پشتیبانی می شود. این رویکرد یک پاسخ سریع به آسیب پذیری ها، مقاومت در برابر حملات خودکار و تأثیر قابل پیش بینی در UX و عملکرد را فراهم می کند.