شما می توانید از وب سرور در برابر حملات گسترده Denial of Service - DoS محافظت کنید. ویژگی های DoS بر اساس این که از کدام لایه مدل OSI جهت اعمال اRate Limit استفاده می کنند، سازماندهی می شوند. DoS بدین منظور از لایه های زیر استفاده می کند:
- Application Layer (HTTP or HTTPS)
- Network and Transport Layer (TCP/IP)
بررسی چگونگی محافظت از وب سرور در مقابل حملات DoS در لایه ی اپلیکیشن
با استفاده از منوی تنظیمات و رفتن به مسیر DoS Protection > Application قادر خواهید بود تنظیمات مربوط به حفاظت از وب سرور در برابر حملات DoS را در لایه ی اپلیکیشن انجام دهید.
دستگاه FortiWeb از Session Management جهت دنبال کردن درخواست ها جهت محافظت از وب سرور در برابر حملات DoS استفاده می کند.
زمانی که دستگاه FortiWeb اولین درخواست را از سمت کاربر دریافت می کند، به پاسخی که از سمت وب سرور فرستاده می شود یک Session Cookie جهت دنبال کردن Session اضافه می کند. تمامی درخواست های بعدی از سمت این کاربر، شامل این Cookie خواهند بود. اگر کاربر درخواست دیگری را قبل از اتمام زمان Session بفرستد دستگاه FortiWeb به بررسی Session Cookie مربوط به درخواست می پردازد:
اگر Cookie یافت نشد و یا مقدار آن تغییر یافته بود دستگاها FortiWeb این درخواست را Drop می کند.
اگر Cookie مشابه یافت شد درخواست پردازش شده و دستگاه FortiWeb یکی به تعداد دفعات اتصال یا درخواست های مربوط به کاربر اضافه می کند. اگر نرخ مربوط به اتصال یا درخواست از حد مشخص شده عبور کرد دستگاه FortiWeb اتصال یا درخواست های اضافی را Drop می کند.
محدود کردن نرخ HTTP Request از سمت یک IP Address
شما می توانید تعداد درخواست هایی که در هر ثانیه فرستاده می شود را به ازای هر IP Address محدود کنید. دستگاه FortiWeb بدون در نظر گرفتن HTTP Method به بررسی و دنبال کردن نرخ مربوط به درخواست های فرستاده شده از سمت هر IP Address، می پردازد. اگر نرخ مربوط به هر درخواست از حد مجاز پیشی گرفت دستگاه FortiWeb یک Action مناسب را اجرا می کند.
تنظیمات مربوط به HTTP Request Rate Limit
قبل از انجام تنظیمات مربوط به Rate Limit باید تنظیمات مربوط به فعال کردن Detection of Shared IP Addresses را انجام دهید. این تنظیمات به شناسایی تک تک IP Address هایی که بوسیله ی چند کاربر استفاده می شوند می پردازد. جهت تنظیمات Shared IP از منوی سمت چپ به مسیر System > Config > Advanced بروید.
از منوی سمت چپ به مسیر DoS Protection > Application > HTTP Access Limit رفته و از نوار بالای صفحه گزینه ی Create New را انتخاب کنید.
نکته:
- برای فیلد Name یک نام منحصر بفرد انتخاب کرده تا در دیگر بخش های تنظیمات بتوانید به راحتی از آن استفاده کنید. در انتخاب نام مورد نظر از Space یا کاراکتر های خاص استفاده نکنید. همچنین حداکثر طول این نام باید 35 کاراکتر باشد.
- HTTP Request Limit/sec (Standalone IP): برای این فیلد یک Rate Limit در نظر بگیرید. این Rate Limit ماکزیمم تعداد درخواست در هر ثانیه از سمت هر IP Address را مشخص می کند. برای مثال اگر بارگیری و بالا آمدن یک صفحه ی وب شامل موارد زیر شود، مقدار Rate Limit باید حد اقل 5 در نظر گرفته شود. و یا اینکه ضریبی از 5 در نظر گرفته شود. به عنوان مثال جهت این که 2 صفحه در ثانیه برای هر کاربر باز شود عدد10 را در نظر بگیرید. یا جهت اینکه 3 صفحه در ثانیه برای هر کاربر باز شود عدد 15 را در نظر بگیرید.
- یک فایل HTML Request
- یک فایل External JavaScript Request
- سه عدد Image Requests
جهت نتیجه گیری بهتر مقدار این فیلد باید حداقل مساوی تعداد درخواست هایی که جهت Load شدن URL به صورت نرمال مورد نیاز است، باشد.
- HTTP Request Limit/sec (Shared IP) : برای این فیلد یک rate limit در نظر بگیرید. این rate limit برای ماکزیمم تعداد HTTP request در هر ثانیه از سمت هر IP address که توسط چندین کاربر share شده در نظر گرفته می شود. معمولا مقدار این فیلد باید بزرکتر از مقدار فیلد HTTP Request Limit/sec (Standalone IP) باشد.
- Real Browser Enforcement: اگر می خواهید یک JavaScript به سمت کار بر فرستاده شود این گزینه را فعال کنید. این JavaScript جهت تست این که درخواست فرستاده شده از سمت یک کاربر یا یک ربات است، در زمانی که Rate Limit از حد مجاز عبور می کند به سمت کاربر فرستاده می شود. اگر تست فوق از سمت کاربر با خطا روبرو شد یا جواب تست قبل از اتمام زمان مجاز فرستاده نشد، دستگاه FortiWeb یک Action مناسب را اعمال می کند.
- Validation Timeout: برای این فیلد ماکزیمم مدت زمان مجاز که دستگاه FortiWeb جهت پاسخگویی کاربر به تست منتظر می ماند را وارد کنید.
- توسط فیلد Action می توانید تعیین کنید که دستگاه FortiWeb چه اقدامی را در هنگام تشخیص یک Violation انجام دهد. این فیلد دارای گزینه های زیر می باشد:
- Alert: با انتخاب این گزینه درخواست مربوطه Accept شده و یک Alert Email و یا Log Message تولید می شود.
- Alert & Deny: با انتخاب این گزینه درخواست مربوطه Block شده و یک Alert Email و یا Log Message تولید می شود.
- Period Block: با انتخاب این گزینه درخواست های بعدی از سمت این کاربر برای مدت زمانی مشخص Block می شود. در این مورد شما باید فیلد Block Period را نیز مقدار دهی کنید.
- برای فیلد Block Period باید مدت زمانی که درخواست های بعدی از سمت کاربر مربوطه Block می شود را تعیین کنید. این فیلد تنها در صورتی که گزینه ی Period Block را برای فیلد Action انتخاب کنید قابل مقدار دهی می باشد. مقدار مجاز برای این فیلد از 1 تا 10000 ثانیه می باشد. مقدار پیش فرض برای این فیلد 60 ثانیه می باشد. این گزینه در مقابه با حملات DDoS کارایی بهتری دارد. توجه شود که هنگام استفاده از این گزینه اگر دستگاه FortiWeb پشت یک NAT Load Balancer قرار داشت، باید یک X-Header که به IP Address اصلی کاربر اشاره می کند، نیز تعریف کنید.
- زمانی که یک Violation در Log ثبت می شود، هر Log Message شامل یک فیلد به نام Severity Level می شود. توسط گزینه ی Severity می توانید تعیین کنید که دستگاه FortiWeb کدام Severity Level را در زمان وقوع یک Violation استفاده خواهد کرد. گزینه های موجود برای Severity Level به قرار زیر می باشد:
- Low
- Medium
- High
مقدار پیش فرض برای این گزینه High می باشد.
- توسط فیلد Trigger Action مشخص خواهید کرد هنگامی که یک Log و یا Alert Email در رابطه با یک Violation ایجاد می شود، دستگاه FortiWeb از کدام Trigger استفاده کند. به عنوان مثال شما می توانید FortiAnalyzer را به عنوان Trigger انتخاب کنید.
Rule فوق را در یک DoS Protection Policy گروهبندی کنید.
گزینه ی Session Management را در Protection Profile فعال کنید.
ایجاد محدودیت در تعداد Connection های TCP برای هر IP Address بوسیله ی Session Cookie
شما می توانید یک محدودیت برای تعداد TCP Connection در هر HTTP Session ایجاد کنید. این امر می تواند از افزایش بی اندازه ی تعداد TCP Connection از سمت کاربران غیر مجاز که از Shared IP استفاده می کنند، ممانعت به عمل آورد.
تنظیمات مربوط به ایجاد محدودیت تعداد اتصالات TCP در هر Session
از منوی سمت چپ به مسیر DoS Protection > Application > Malicious IPs رفته و از نوار بالای صفحه گزینه ی Create New را انتخاب کنید.
نکته:
- برای فیلد Name یک نام منحصر بفرد انتخاب کرده تا در دیگر بخش های تنظیمات بتوانید به راحتی از آن استفاده کنید. در انتخاب نام مورد نظر از Space یا کاراکتر های خاص استفاده نکنید. همچنین حداکثر طول این نام باید 35 کاراکتر باشد.
- TCP Connection Number: برای این فیلد ماکزیمم تعداد TCP connection که برای هر کاربر مجاز می باشد را وارد کنید. این فیلدرا می توانید از 1 تا 1024مقدار دهی کنید. مقدار پیش فرض این فیلد 1 می باشد. Fortinet مقدار 100 را برای این فیلد پیشنهاد می دهد.
- توسط فیلد Action می توانید تعیین کنید که دستگاه FortiWeb چه اقدامی را در هنگام تشخیص یک Violation انجام دهد. این فیلد دارای گزینه های زیر می باشد:
- Alert: با انتخاب این گزینه Request مربوطه Accept شده و یک Alert Email و یا Log Message تولید می شود.
- Alert & Deny: با انتخاب این گزینه درخواست مربوطه Block شده و یک Alert Email و یا Log Message تولید می شود.
- Period Block: با انتخاب این گزینه درخواست های بعدی از سمت این کاربر برای مدت زمانی مشخص Block می شود. در این مورد شما باید فیلد Block Period را نیز مقدار دهی کنید.
- برای فیلد Block Period باید مدت زمانی که درخواست های بعدی از سمت کاربر مربوطه Block می شود را تعیین کنید. این فیلد تنها در صورتی که گزینه ی Period Block را برای فیلد Action انتخاب کنید قابل مقدار دهی می باشد. مقدار مجاز برای این فیلد از 1 تا 3600 ثانیه می باشد. مقدار پیش فرض برای این فیلد 60 ثانیه می باشد. این گزینه در مقابه با حملات DDoS کارایی بهتری دارد. توجه شود که هنگام استفاده از این گزینه اگر دستگاه FortiWeb پشت یک NAT Load Balancer قرار داشت، باید یک X-Header که به IP Address اصلی کاربر اشاره می کند نیز تعریف کنید.
- زمانی که یک Violation در Log ثبت می شود، هر Log Message شامل یک فیلد به نام Severity Level می شود. توسط گزینه ی Severity می توانید تعیین کنید که دستگاه FortiWeb کدام Severity Level را در زمان وقوع یک Violation استفاده خواهد کرد. گزینه های موجود برای Severity Level به قرار زیر می باشد:
مقدار پیش فرض برای این گزینه High می باشد.
- توسط فیلد Trigger Action مشخص خواهید کرد هنگامی که یک Log و یا Alert Email در رابطه با یک Violation ایجاد می شود، دستگاه FortiWeb از کدام Trigger استفاده کند. به عنوان مثال شما می توانید FortiAnalyzer را به عنوان Trigger انتخاب کنید.
Rule فوق را در یک DoS Protection Policy گروهبندی کنید.
گزینه ی Session Management را در Protection Profile فعال کنید.
ممانعت از یک HTTP Request Flood
شما می توانید برای تعداد درخواست از نوع HTTP در هر ثانیه، در هر Session، یا در هر URL محدودیت ایجاد کنید. این امر بطور موثر از HTTP Request Floods ممانعت خواهد کرد.
تنظیمات مربوط به ممانعت از ایجاد HTTP Flood
از منوی سمت چپ به مسیر DoS Protection > Application > HTTP Flood Prevention رفته و از نوار بالای صفحه گزینه ی Create New را انتخاب کنید.
نکته:
- برای فیلد Name یک نام منحصر بفرد انتخاب کرده تا در دیگر بخش های تنظیمات بتوانید به راحتی از آن استفاده کنید. در انتخاب نام مورد نظر از Space یا کاراکتر های خاص استفاده نکنید. همچنین حداکثر طول این نام باید 35 کاراکتر باشد.
- TCP Connection Number Limit: برای این فیلد ماکزیمم تعداد TCP connection که برای هر کاربر مجاز می باشد را وارد کنید. این فیلدرا می توانید از 1 تا 4096 مقدار دهی کنید. مقدار پیش فرض این فیلد 0 می باشد. Fortinet مقدار 500 را برای این فیلد پیشنهاد می دهد.
- Real Browser Enforcement: اگر می خواهید یک JavaScript به سمت کار بر فرستاده شود این گزینه را فعال کنید. این JavaScript جهت تست این که درخواست فرستاده شده از سمت یک کاربر یا یک ربات است، در زمانی که Rate Limit از حد مجاز عبور می کند به سمت کاربر فرستاده می شود. اگر تست فوق از سمت کاربر با خطا روبرو شد یا جواب تست قبل از اتمام زمان مجاز فرستاده نشد دستگاه FortiWeb یک Action مناسب را اعمال می کند.
- Validation Timeout: برای این فیلد ماکزیمم مدت زمان مجاز که دستگاه FortiWeb جهت پاسخگویی کاربر به تست منتظر می ماند را وارد کنید.
- توسط فیلد Action می توانید تعیین کنید که دستگاه FortiWeb چه اقدامی را در هنگام تشخیص یک Violation انجام دهد. این فیلد دارای گزینه های زیر می باشد:
- Alert: با انتخاب این گزینه درخواست مربوطه Accept شده و یک Alert Email و یا Log Message تولید می شود.
- Alert & Deny: با انتخاب این گزینه درخواست مربوطه Block شده و یک Alert Email و یا Log Message تولید می شود.
- Period Block: با انتخاب این گزینه درخواست های بعدی از سمت این کاربر برای مدت زمانی مشخص Block می شود. در این مورد شما باید فیلد Block Period را نیز مقدار دهی کنید.
- برای فیلد Block Period باید مدت زمانی که درخواست های بعدی از سمت کاربر مربوطه Block می شود را تعیین کنید. این فیلد تنها در صورتی که گزینه ی Period Block را برای فیلد Action انتخاب کنید قابل مقدار دهی می باشد. مقدار مجاز برای این فیلد از 1 تا 3600 ثانیه می باشد. مقدار پیش فرض برای این فیلد 60 ثانیه می باشد. این گزینه در مقابه با حملات DDoS کارایی بهتری دارد. توجه شود که هنگام استفاده از این گزینه اگر دستگاه FortiWeb پشت یک NAT load balancer قرار داشت، باید یک X-header که به IP Address اصلی کاربر اشاره می کند نیز تعریف کنید.
- زمانی که یک Violation در Log ثبت می شود، هر Log Message شامل یک فیلد به نام Severity Level می شود. توسط گزینه ی Severity می توانید تعیین کنید که دستگاه FortiWeb کدام Severity Level را در زمان وقوع یک Violation استفاده خواهد کرد. گزینه های موجود برای Severity Level به قرار زیر می باشد:
- Low
- Medium
- High
مقدار پیش فرض برای این گزینه High می باشد.
- توسط فیلد Trigger Action مشخص خواهید کرد هنگامی که یک Log و یا Alert Email در رابطه با یک Violation ایجاد می شود، دستگاه FortiWeb از کدام Trigger استفاده کند. به عنوان مثال شما می توانید FortiAnalyzer را به عنوان Trigger انتخاب کنید.
Rule فوق را در یک DoS Protection Policy گروهبندی کنید.
DoS Protection Policy را در یک Protection Profile انتخاب کنید.
گزینه ی Session Management را در Protection Profile فعال کنید.
بررسی چگونگی محافظت از وب سرور در مقابل حملات DoS در لایه ی Network
با استفاده از منوی تنظیمات و رفتن به مسیر DoS Protection > Network قادر خواهید بود تنظیمات مربوط به محافظت وب سرور در برابر حملات DoS در لایه ی Network را انجام دهید.
ایجاد محدودیت در تعداد Connection های TCP برای هر IP Address
شما می توانید برای تعداد اتصالات TCP برای هر IP Address محدودیت ایجاد کنید. این امر بطور موثر از حملات TCP Flood-Style Denial-of-Service DoS ممانعت خواهد کرد. دستگاه FortiWeb تعداد اتصالات TCP را شمرده و اگر یک از تعداد مجاز عبور کند دستگاه FortiWeb یک Action مناسب را برای آن کاربر اجرا می کند.
تنظیمات مربوط به ایجاد محدودیت در TCP Connection Flood
- از منوی سمت چپ به مسیر DoS Protection > Network > TCP Flood Prevention رفته و از نوار بالای صفحه گزینه ی Create New را انتخاب کنید.
نکته:
- برای فیلد Name یک نام منحصر بفرد انتخاب کرده تا در دیگر بخش های تنظیمات بتوانید به راحتی از آن استفاده کنید. در انتخاب نام مورد نظر از Space یا کاراکتر های خاص استفاده نکنید. همچنین حداکثر طول این نام باید 35 کاراکتر باشد.
- TCP Connection Number Limit: برای این فیلد ماکزیمم تعداد TCP connection که برای هر کاربر مجاز می باشد را وارد کنید. این فیلدرا می توانید از 1 تا 65535 مقدار دهی کنید. مقدار پیش فرض این فیلد 0 می باشد.
- توسط فیلد Action می توانید تعیین کنید که دستگاه FortiWeb چه اقدامی را در هنگام تشخیص یک Violation انجام دهد. این فیلد دارای گزینه های زیر می باشد:
- Alert: با انتخاب این گزینه درخواست مربوطه Accept شده و یک Alert Email و یا Log Message تولید می شود.
- Alert & Deny: با انتخاب این گزینه درخواست مربوطه Block شده و یک Alert Email و یا Log Message تولید می شود.
- Period Block: با انتخاب این گزینه درخواست های بعدی از سمت این کاربر برای مدت زمانی مشخص Block می شود. در این مورد شما باید فیلد Block Period را نیز مقدار دهی کنید.
- برای فیلد Block Period باید مدت زمانی که درخواست های بعدی از سمت کاربر مربوطه Block می شود را تعیین کنید. این فیلد تنها در صورتی که گزینه ی Period Block را برای فیلد Action انتخاب کنید قابل مقدار دهی می باشد. مقدار مجاز برای این فیلد از 1 تا 3600 ثانیه می باشد. مقدار پیش فرض برای این فیلد 60 ثانیه می باشد. این گزینه در مقابه با حملات DDoS کارایی بهتری دارد. توجه شود که هنگام استفاده از این گزینه اگر دستگاه FortiWeb پشت یک NAT Load Balancer قرار داشت، باید یک X-Header که به IP Address اصلی کاربر اشاره می کند نیز تعریف کنید.
- زمانی که یک Violation در Log ثبت می شود، هر Log Message شامل یک فیلد به نام Severity Level می شود. توسط گزینه ی Severity می توانید تعیین کنید که دستگاه FortiWeb کدام Severity Level را در زمان وقوع یک Violation استفاده خواهد کرد. گزینه های موجود برای Severity Level به قرار زیر می باشد:
- Low
- Medium
- High
مقدار پیش فرض برای این گزینه Medium می باشد.
- توسط فیلد Trigger Action مشخص خواهید کرد هنگامی که یک Log و یا Alert Email در رابطه با یک Violation ایجاد می شود، دستگاه FortiWeb از کدام Trigger استفاده کند. به عنوان مثال شما می توانید FortiAnalyzer را به عنوان Trigger انتخاب کنید.
Rule فوق را در یک DoS Protection Policy گروهبندی کنید.
گروهبندی Rule های DoS Protection
قبل از اعمال DoS Protection از طریق Protection Profile در یک Server Policy، باید Rule های DoS Prevention را گروهبندی کنید.
تنظیمات یک DoS Protection Policy
- قبل از این که شما بتوانید یک DoS protection policy را پیکربندی کنید، ابتدا باید Rule هایی که قصد دارید در یک گروه قرار بگیرند را پیکربندی کنید. Rule های فوق به قرار زیر می باشند:
- HTTP Request Flood Prevention
- HTTP Request Rate Limit
- TCP Connections per Session
- TCP Connection Flood Prevention
پیکر بندی Rule های فوق در همین آموزش مورد بررسی قرار گرفت.
- از منوی سمت چپ به مسیر DoS Protection > DoS Protection Policy رفته و از نوار بالای صفحه گزینه ی Create New را انتخاب کنید.
نکته:
- برای فیلد Name یک نام منحصر بفرد انتخاب کرده تا در دیگر بخش های تنظیمات بتوانید به راحتی از آن استفاده کنید. در انتخاب نام مورد نظر از Space یا کاراکتر های خاص استفاده نکنید. همچنین حداکثر طول این نام باید 35 کاراکتر باشد.
- اگر قصد اعمال ویژگی هایی که از Session Cookie استفاده می کنند را دارید، گزینه ی HTTP Session Based Prevention را فعال کنید:
- برای فیلد HTTP Flood Prevention یک Rule که ماکزیمم تعداد درخواست در هر ثانیه را برای یک URL مشخص می کند، را انتخاب کنید.
- برای فیلد Malicious IPs یک Rule که تعداد Connection های TCP از سمت یک کاربر را محدود می کند، را انتخاب کنید.
- اگر می خواهید برای ترافیک بر اساس تعداد درخواست یا تعداد اتصال، محدودیت ایجاد کنید گزینه ی HTTP DoS Prevention را فعال کنید:
- برای فیلد HTTP Access Limit باید Rule مربوطه که در مراحل قبل ایجاد کردید را انتخاب کنید.
- برای فیلد TCP Flood Prevention باید Rule مربوطه که در مراحل قبل ایجاد کردید را انتخاب کنید.
جهت اعمال Policy فوق باید آن را در یک Inline Protection Profile انتخاب کنید.
گزینه ی Session Management را در Protection Profile فعال کنید.