Bot Mitigation در FortiWeb
Bot Mitigation در FortiWeb یکی از لایههای مهم دفاع در برابر ترافیک خودکار و رفتارهای مشکوک است. این قابلیت با Threshold، رفتارشناسی، Deception، مدیریت Known Botها و در سناریوهای پیشرفته با ML کمک میکند تا بین کاربر واقعی و Bot تفاوت ایجاد شود.
خلاصه تخصصی مقاله
Bot Mitigation در FortiWeb یکی از لایههای مهم دفاع در برابر ترافیک خودکار و رفتارهای مشکوک است. این قابلیت با Threshold، رفتارشناسی، Deception، مدیریت Known Botها و در سناریوهای پیشرفته با ML کمک میکند تا بین کاربر واقعی و Bot تفاوت ایجاد شود.
موضوعات اصلی: set، Bot، Mitigation، enable، edit، next
Bot Mitigation در FortiWeb چیست و چطور در FortiWeb 7.6 کانفیگ میشود؟
Bot Mitigation در FortiWeb مجموعهای از قابلیتها برای شناسایی، کنترل و کاهش ترافیک Bot است. این ترافیک میتواند از نوعCrawler، Scanner، Credential Stuffing، Content Scraping، Slow Attack، DoS Bot، Spam Bot یا حتی Search Engineهای قانونی باشد.نکته مهم این است که همه Botها بد نیستند؛ بعضی مثل Search Engineها برای کسبوکار مفیدند، اما Botهای مخرب میتوانند باعثمصرف منابع، جمعآوری داده، تست آسیبپذیری، حمله به صفحه Login و خراب شدن تجربه کاربرشوند.
این مقاله بر اساسFortiWeb 7.6و با تمرکز روی پیادهسازی عملیاتی نوشته شده است. هدف این است که ادمین FortiWeb بتواند قبل از فعالسازی Bot Mitigation بفهمد این قابلیت برای سناریوی او مناسب است یا نه، سپس مرحلهبهمرحله Ruleها را بسازد، آنها را در Bot Mitigation Policy تجمیع کند، Policy را به Web Protection Profile وصل کند و در نهایت Log و False Positive را بررسی کند.
مروری بر این مقاله
- Bot Mitigation در FortiWeb دقیقاً چه کاری انجام میدهد؟
- چه زمانی باید از Bot Mitigation استفاده کنیم؟
- اجزای اصلی Bot Mitigation در FortiWeb
- پیشنیازهای پیادهسازی
- طراحی مرحلهای پیشنهادی برای Production
- Known Bots را چطور تنظیم کنیم؟
- Threshold Based Detection را چطور تنظیم کنیم؟
- Biometrics Based Detection را چطور تنظیم کنیم؟
- Bot Deception را چطور تنظیم کنیم؟
- Exception Policy برای جلوگیری از False Positive
- ساخت Bot Mitigation Policy و اتصال به Protection Profile
- نمونه CLI کامل برای شروع
- سناریوهای کاربردی
- لاگ، مانیتورینگ و عیبیابی
- جدول مقایسه قابلیتها
- چکلیست پیادهسازی
1. Bot Mitigation در FortiWeb دقیقاً چه کاری انجام میدهد؟
FortiWeb برای مقابله با Botها فقط به یک روش تکی وابسته نیست. در مستندات Fortinet، Bot Mitigation شامل چند لایه مثلBiometrics-Based Bot DetectionThreshold-Based Bot DetectionBot DeceptionKnown BotsMachine Learning Based Bot DetectionوAdvanced Bot Protectionمعرفی شده است. هرکدام از این بخشها یک نوع رفتار Bot را پوشش میدهد و باید بر اساس سناریوی سایت انتخاب شود.
در عمل، Bot Mitigation به FortiWeb کمک میکند رفتارهایی مثلتعداد زیاد درخواست، اسکن URLهای غیرواقعی، دریافت مکرر صفحات، نبود رفتار انسانی در مرورگر، دنبال کردن لینک مخفی، استفاده از User-Agentهای شناختهشده مخرب یا حملهبه صفحه Login را شناسایی کند. سپس بسته به Action تعریفشده، FortiWeb میتواند فقط Alert بدهد، درخواست را Deny کند، برای مدتی Client را Block کند، CAPTCHA یا Real Browser Enforcement اعمال کند یا درخواست را به صفحه خاصی Redirect کند.
2. چه زمانی باید از Bot Mitigation استفاده کنیم؟
Bot Mitigation برای هر سایتی لازم نیست با یک سطح سختگیرانه فعال شود. قبل از پیادهسازی باید مشخص کنید مشکل شما چیست. اگر مشکل اصلی Search Engine نیست و فقط میخواهید Google و Bing را مدیریت کنید، Known Bots کافی است. اگر مشکل Scraper، Scanner یا Credential Stuffing دارید، باید Threshold و Biometrics را جدیتر تنظیم کنید. اگر هدف کشف Crawlerهای ساده و Botهایی است که همه لینکها را دنبال میکنند، Bot Deception مفید است.
| نشانه در لاگ یا رفتار سایت | قابلیت پیشنهادی | Action شروع |
|---|---|---|
| تعداد زیاد404یا تست مسیرهای غیرواقعی مثل/adminو/.env | Threshold Based Detection - Vulnerability Scanning | Alert سپس Alert & Deny |
| درخواستهای پشتسرهم برای صفحات محصول، لیست قیمت یا Search | Threshold Based Detection - Content Scraping | Alert سپس Block Period |
| حمله به صفحه Login یا تست پسورد | Biometrics + Threshold + CAPTCHA | Real Browser Enforcement یا CAPTCHA |
| رباتهایی که همه لینکها حتی لینکهای مخفی را دنبال میکنند | Bot Deception | Alert & Deny |
| Search Engineهای قانونی که نباید Block شوند | Known Bots | Bypass یا Alert |
| API یا Mobile App بدون تعامل انسانی | Threshold + Exception دقیق | Monitor اول، سپس کنترل مرحلهای |
3. اجزای اصلی Bot Mitigation در FortiWeb
Known Bots
Known Bots برای شناسایی Botهای شناختهشده استفاده میشود. در CLI Reference نسخه 7.6.7، Fortinet توضیح میدهد که این قابلیت هم Botهای مخرب مثل DoS، Spam و Crawler را پوشش میدهد و هم known good bots مثل Search Engineها را بدون اختلال در ترافیک مهم مدیریت میکند. این بخش برای جلوگیری از Block اشتباه Search Engineهای قانونی بسیار مهم است.
Threshold Based Detection
Threshold Based Detection رفتارهای مشکوک را بر اساس تعداد رخداد در یک بازه زمانی بررسی میکند. در CLI Reference نسخه 7.6.7 رفتارهایی مثل Crawler، Vulnerability Scanning، Slow Attack، Content Scraping و Illegal User Scan برای این بخش ذکر شدهاند. این قابلیت برای سناریوهایی که Bot با سرعت بالا یا الگوی غیرعادی کار میکند بسیار کاربردی است.
Biometrics Based Detection
Biometrics Based Detection تلاش میکند رفتار Client را از نظر رویدادهای انسانی بررسی کند؛ مثل Mouse Movement، Click، Keyboard، Screen Touch، Scroll و Page Focus. Fortinet در مستندات اشاره میکند که FortiWeb از رویدادهای Client استفاده میکند تا تشخیص دهد درخواست از انسان آمده یا Bot. این روش برای صفحات وب تعاملی و Login مفید است، اما برای API یا Mobile App باید با احتیاط استفاده شود.
Bot Deception
Bot Deception با اضافه کردن یک لینک مخفی به صفحه HTML کار میکند. کاربر واقعی آن لینک را نمیبیند و کلیک نمیکند، اما Bot یا Crawler ممکن است لینک را دنبال کند و همین رفتار به FortiWeb نشان میدهد که Client احتمالاً Bot است. برای سایتهایی که HTML کامل دارند و Crawler مشکل اصلی است، این روش ساده و مؤثر است.
ML Based Bot Detection و Advanced Bot Protection
ML Based Bot Detection در FortiWeb رفتار Clientها را در چند بعد یاد میگیرد و با الگوریتم SVM رفتارهای غیرعادی را تشخیص میدهد. Advanced Bot Protection هم سرویس SaaS Fortinet برای Botهای پیشرفتهتر است و طبق مستندات، ترافیک Client برای تحلیل Bot Behavior به سرویس FortiGuard ABP هدایت میشود. این دو بخش برای سناریوهای بزرگتر یا Botهای پیچیدهتر مناسباند، اما مقاله حاضر تمرکز عملیاتی را روی Bot Mitigation Policy داخلی قرار میدهد.
4. پیشنیازهای پیادهسازی
- FortiWeb باید در Modeای باشد که بتواند ترافیک HTTP/HTTPS را بهدرستی ببیند؛ در بیشتر پروژهها Reverse Proxy بهترین انتخاب است.
- برای HTTPS، Certificate و SSL Inspection/Offload باید درست پیادهسازی شده باشد.
- Attack Log و Traffic Log باید فعال باشد تا بتوان False Positive را بررسی کرد.
- برای صفحات حساس مثل Login، Register، Search و API، URLها باید دقیق شناسایی شوند.
- اگر سایت API یا Mobile App دارد، نباید Biometrics را کورکورانه روی همه مسیرها فعال کرد.
- قبل از Block، بهتر است حداقل چند روز Alert/Monitor انجام شود.
5. طراحی مرحلهای پیشنهادی برای Production
برای محیط عملیاتی، پیشنهاد میشود Bot Mitigation را مرحلهای فعال کنید. مرحله اول فقط Alert است؛ مرحله دوم بررسی لاگ و ساخت Exception؛ مرحله سوم اعمال Block روی رفتارهای واضحاً مخرب؛ و مرحله چهارم سختگیری روی صفحات حساس مثل Login یا Search.
6. Known Bots را چطور تنظیم کنیم؟
از مسیر زیر وارد شوید
یک Rule جدید بسازید. برای شروع، پیشنهاد عملیاتی این است که Known Good Bots را روی Bypass یا Alert بگذارید و Botهای مخرب مثل Crawler، Scanner، Spam، DoS و Trojan را ابتدا Alert و بعد از بررسی روی Alert & Deny یا Block Period قرار دهید.
| نوع Bot | پیشنهاد شروع | پیشنهاد بعد از بررسی لاگ |
|---|---|---|
| Known Search Engines | Bypass یا Alert | Bypass برای Botهای معتبر |
| Crawler مشکوک | Alert | Block Period |
| Scanner | Alert | Alert & Deny |
| DoS Bot | Alert | Block Period |
| Spam Bot | Alert | Alert & Deny |
نمونه CLI پایه
config waf known-bots edit "KB-Production" set known-engines-status enable set known-engines-action bypass set known-engines-severity Info set crawler-status enable set crawler-action alert set crawler-severity Medium set scanner-status enable set scanner-action alert_deny set scanner-severity High set spam-status enable set spam-action alert_deny set spam-severity Medium set dos-status enable set dos-action block_period set dos-block-period 300 set dos-severity High next end
برای مشاهده Syntax دقیق همان نسخه
config waf known-bots edit "KB-Production" ?
7. Threshold Based Detection را چطور تنظیم کنیم؟
از مسیر زیر وارد شوید
در این بخش باید مشخص کنید FortiWeb کدام رفتارهای مشکوک را بررسی کند. مهمترین رفتارها عبارتاند از Crawler، Vulnerability Scanning، Slow Attack، Content Scraping و Illegal User Scan. برای شروع، عددها را خیلی سختگیرانه نگذارید. اول Alert بگیرید، سپس بر اساس لاگ واقعی سایت مقدارها را کم یا زیاد کنید.
پیشنهاد برای سایت عمومی
- Crawler Detection: فعال، ابتدا Alert
- Scanner Detection: فعال، Action روی Alert & Deny بعد از تست
- Content Scraping: فعال روی صفحات لیستی، نه کل سایت
- Slow Attack: فعال برای محافظت از منابع سرور
- Bot Recognition: برای صفحات حساس Real Browser Enforcement یا CAPTCHA
نمونه CLI شروع محافظهکارانه
config waf threshold-based-detection edit "TBD-Production-Monitor" set bot-recognition real-browser-enforcement set validation-timeout 20 set max-attempt-times 3 set crawler-detection enable set crawler-action alert set crawler-severity Medium set crawler-occurrence-num 80 set crawler-within 60 set scanner-detection enable set scanner-action alert_deny set scanner-severity High set scanner-occurrence-num 20 set scanner-within 60 set slow-attack-detection enable set slow-attack-action alert set slow-attack-severity Medium set slow-attack-occurrence-num 10 set slow-attack-within 60 set slow-attack-HTTP-transaction-timeout 30 set slow-attack-packet-interval-timeout 10 set content-scraping-detection enable set content-scraping-action alert set content-scraping-severity Medium set content-scraping-occurrence-num 120 set content-scraping-within 60 next end
8. Biometrics Based Detection را چطور تنظیم کنیم؟
از مسیر زیر وارد شوید
در این بخش FortiWeb از Client Eventها استفاده میکند. پیشفرضهای مهم شامل Mouse Movement، Click و Keyboard هستند. برای صفحه Login، Register و فرمهای مهم، این قابلیت ارزشمند است. برای API، Webhook و Mobile App ممکن است باعث False Positive شود؛ چون آنها الزاماً Mouse یا Keyboard ندارند.
نمونه GUI پیشنهادی برای صفحه Login
| گزینه | مقدار پیشنهادی | توضیح |
|---|---|---|
| Mouse Movement | Enable | برای تشخیص رفتار انسانی |
| Click | Enable | برای فرمها و دکمهها |
| Keyboard | Enable | برای Login و Search |
| Screen Touch | Enable در صورت وجود Mobile Web | برای کاربران |
| Bot Traits | Enable | لایه اضافه برای Headless Browser و Scriptها |
| URL List | محدود به Login/Register | فعالسازی روی کل سایت توصیه نمیشود |
نمونه CLI
config waf biometrics-based-detection edit "BBD-Login" set mouse-movement enable set click enable set keyboard enable set screen-touch enable set scroll disable set page-focus enable set bot-traits enable set bot-traits-num 5 set event-collection-time 15 set bot-effective-time 5 set action alert set severity medium set bot-access-rate 5 config url-list edit 1 set host-status enable set host "www.example.com" set type simple-string set url "/login" next edit 2 set host-status enable set host "www.example.com" set type simple-string set url "/register" next end next end
9. Bot Deception را چطور تنظیم کنیم؟
از مسیر زیر وارد شوید
یک Deception URL تعریف کنید؛ یعنی URLای که برای کاربر عادی قابل مشاهده نیست و فقط داخل HTML بهصورت مخفی تزریق میشود. اگر Bot آن URL را درخواست کند، FortiWeb آن را بهعنوان رفتار Bot تشخیص میدهد. برای نام URL از مسیر واقعی، مهم یا قابل حدس استفاده نکنید. بهتر است اسم آن طبیعی ولی غیرواقعی باشد.
نمونههای خوب برای Deception URL
/assets/cache/customer-map.js /static/report/health-check.html /resource/legacy/catalog-sync.php
نمونه CLI
config waf bot-deception edit "BD-General" set deception-url "/assets/cache/customer-map.js" set action alert_deny config url-list edit 1 set url "/" next edit 2 set url "/products" next edit 3 set url "/blog" next end next end
10. Exception Policy برای جلوگیری از False Positive
Exception Policy زمانی لازم است که یک مسیر، IP، Host یا پارامتر خاص در حالت عادی باعث Trigger شدن Bot Mitigation میشود. برای مثال Monitoring داخلی، Scanner مجاز، Health Check، API Gateway، سرویس پرداخت، Callback بانک، CDN یا مسیرهای Mobile App ممکن است رفتار انسانی نداشته باشند و باید از بعضی چکها مستثنی شوند.
از مسیر زیر وارد شوید
نمونه CLI برای Exception یک IP مانیتورینگ و یک URI
config waf bot-mitigate-exception edit "BOT-EXC-Internal-Monitoring" config exception-element-list edit 1 set match-target CLIENT_IP set operator EQ set ip-range "192.168.10.50" set concatenate-type OR next edit 2 set match-target URI set operator STRING_MATCH set value "/health" set concatenate-type OR next end next end
11. ساخت Bot Mitigation Policy و اتصال به Protection Profile
بعد از اینکه Known Bots، Threshold، Biometrics، Bot Deception و Exception را ساختید، باید همه را در Bot Mitigation Policy انتخاب کنید. Fortinet در مستندات توضیح میدهد که Bot Mitigation Policy این بخشها را تجمیع میکند و سپس در Web Protection Profile اعمال میشود.
مسیر GUI ساخت Policy
سپس این Policy را در Web Protection Profile انتخاب کنید
نمونه CLI برای تجمیع Ruleها
config waf bot-mitigate-policy edit "BMP-Production" set known-bots "KB-Production" set threshold-based-detection "TBD-Production-Monitor" set biometrics-based-detection "BBD-Login" set bot-deception "BD-General" next end
نمونه اتصال به Web Protection Profile
config waf web-protection-profile inline-protection edit "WPP-Production" set bot-mitigation-policy "BMP-Production" next end
12. نمونه CLI کامل برای شروع
نمونه زیر یک سناریوی پایه برای سایت Production است. این نمونه برای شروع طراحی است، نه نسخه نهایی همه سایتها. قبل از اعمال در Production، نام Host، URLها، Thresholdها، Actionها و Exceptionها باید با ترافیک واقعی سازمان تطبیق داده شوند.
config waf known-bots edit "KB-Production" set known-engines-status enable set known-engines-action bypass set crawler-status enable set crawler-action alert set scanner-status enable set scanner-action alert_deny set dos-status enable set dos-action block_period set dos-block-period 300 next end config waf threshold-based-detection edit "TBD-Production-Monitor" set bot-recognition real-browser-enforcement set validation-timeout 20 set max-attempt-times 3 set crawler-detection enable set crawler-action alert set crawler-occurrence-num 80 set crawler-within 60 set scanner-detection enable set scanner-action alert_deny set scanner-occurrence-num 20 set scanner-within 60 set content-scraping-detection enable set content-scraping-action alert set content-scraping-occurrence-num 120 set content-scraping-within 60 next end config waf biometrics-based-detection edit "BBD-Login" set mouse-movement enable set click enable set keyboard enable set screen-touch enable set bot-traits enable set bot-traits-num 5 set event-collection-time 15 set action alert config url-list edit 1 set host-status enable set host "www.example.com" set type simple-string set url "/login" next end next end config waf bot-deception edit "BD-General" set deception-url "/assets/cache/customer-map.js" set action alert_deny config url-list edit 1 set url "/" next edit 2 set url "/products" next end next end config waf bot-mitigate-policy edit "BMP-Production" set known-bots "KB-Production" set threshold-based-detection "TBD-Production-Monitor" set biometrics-based-detection "BBD-Login" set bot-deception "BD-General" next end config waf web-protection-profile inline-protection edit "WPP-Production" set bot-mitigation-policy "BMP-Production" next end
13. سناریوهای کاربردی
سناریوی فروشگاه اینترنتی
در فروشگاه اینترنتی معمولاً مشکل اصلی Scraping قیمت، Product Enumeration، Search Abuse و Credential Stuffing است. برای این سناریو، Threshold روی Product Listing و Search فعال شود، Biometrics فقط روی Login و Register فعال شود، Known Good Bots بایپس شوند و Bot Deception روی صفحات HTML عمومی قرار بگیرد.
سناریوی پرتال سازمانی
در پرتال سازمانی، تمرکز روی Login، Session، اسکن مسیرهای مدیریتی و جلوگیری از Password Guessing است. Biometrics و Real Browser Enforcement برای Login مفید است. Scanner Detection باید سریعتر سختگیرانه شود، اما Health Checkها و مانیتورینگ داخلی باید Exception شوند.
سناریوی API یا ESB
برای API، Biometrics معمولاً انتخاب خوبی نیست چون Clientها مرورگر انسانی نیستند. در این سناریو بیشتر روی Threshold، Rate/DoS Protection، Signature، API Protection، Client Certificate، JWT یا Authentication بیرونی تمرکز کنید. Bot Mitigation میتواند کمک کند، اما باید URLها و Exceptionها دقیق باشد.
سناریوی سایت خبری یا محتوایی
مشکل اصلی معمولاً Crawler و Scraper است. Bot Deception و Content Scraping Detection مفید هستند. Known Good Bots باید با دقت Bypass شوند تا SEO آسیب نبیند.
14. لاگ، مانیتورینگ و عیبیابی
برای بررسی رخدادها از مسیرهای زیر استفاده کنید
دستورهای مفید برای بررسی Config
show waf known-bots show waf threshold-based-detection show waf biometrics-based-detection show waf bot-deception show waf bot-mitigate-policy show waf web-protection-profile inline-protection
اگر Bot Mitigation کار نمیکند، این موارد را بررسی کنید
- Bot Mitigation Policy ساخته شده اما به Web Protection Profile وصل نشده است.
- Web Protection Profile به Server Policy درست متصل نیست.
- ترافیک HTTPS Decrypt نمیشود و FortiWeb رفتار HTTP را کامل نمیبیند.
- URL List در Biometrics یا Bot Deception با مسیر واقعی سایت Match نمیشود.
- Action روی Alert است و انتظار Block دارید.
- Exception Policy بیش از حد گسترده نوشته شده و همه چیز را مستثنی کرده است.
- برای API از Biometrics استفاده شده و False Positive ایجاد شده است.
- Known Good Bots اشتباه Block شدهاند و SEO یا Indexing آسیب دیده است.
15. جدول مقایسه قابلیتها
| قابلیت | مناسب برای | نامناسب یا پرریسک برای | Action پیشنهادی شروع | نکته مهم |
|---|---|---|---|---|
| Known Bots | تفکیک Bot خوب و بد | زمانی که دیتابیس/Update در دسترس نیست | Good Bots: Bypass، Bad Bots: Alert | برای SEO حیاتی است |
| Threshold Based Detection | Scanner، Scraper، Slow Attack، Crawler | سایتهایی با Burst طبیعی زیاد بدون تیونینگ | Alert | Threshold باید با لاگ واقعی تنظیم شود |
| Biometrics Based Detection | Login، Register، فرمهای تعاملی | API، Webhook، Mobile App بدون Browser Event | Alert یا Real Browser | روی کل سایت فعال نشود |
| Bot Deception | Crawlerهای ساده و Scraperهای HTML | API و مسیرهای غیر HTML | Alert & Deny بعد از تست | Deception URL نباید واقعی باشد |
| ML Based Bot Detection | ترافیک زیاد و الگوهای پیچیده | سایت کمترافیک یا تازه راهاندازیشده | Learning سپس Monitor | به زمان یادگیری نیاز دارد |
| Advanced Bot Protection | Botهای حرفهای و سناریوهای Enterprise | محیطهای آفلاین یا بدون امکان ارتباط Cloud | Sample Collection سپس Enforce | سرویس SaaS و نیازمند طراحی جداست |
برای ارزیابی پایداری، امنیت و نگهداری این زیرساخت، راهنمای پشتیبانی شبکه را نیز مطالعه کنید.