Browse Ask a Question
 
Tools Add
Rss Categories

HTTP/HTTPS Protocol Constraints

Author: Partian Co Reference Number: AA-00326 Views: 3489 Created: 2017-08-16 09:34 Last Updated: 2017-09-18 13:00 0 Rating/ Voters
 HTTP/HTTPS Protocol Constraints

 Protocol Constraints ویژگی هایی از قبیل فیلد HTTP Header، طول HTML، طول XML را کنترل می کند. از Protocol Constraints جهت محافظت از وب سرور در برابر حملاتی از قبیل Buffer Overflows استفاده می شود. این نوع حمله در وب سرور ها و اپلیکیشن هایی که طول عناصر موجود در پروتکل HTTP را به طول هایی قابل قبول و مشخص محدود نمی کنند، اتفاق می افتد.

تنظیمات مربوط به یک HTTP Protocol Constraints

اگر تمایل به اضافه کردن یک لیست استثنا در HTTP Protocol Constraint را دارید، قبل از شروع تنظیمات لیست مورد نظر خود را پیکربندی کنید. در ادامه ی این آموزش تنظیمات مربوط به ایجاد Exception ها یا همن لیست استثنا را نیز مورد بررسی قرار خواهیم داد.

  • از منوی سمت چپ به مسیر Web Protection > Protocol رفته و از نوار بالای صفحه بر روی گزینه ی HTTP Protocol Constraints کلیک کرده و در ادامه گزینه ی Create New را انتخاب کنید.



نکته:

  • برای فیلد Name یک نام منحصر بفرد انتخاب کرده تا در دیگر بخش های تنظیمات بتوانید به راحتی از آن استفاده کنید. در انتخاب نام مورد نظر از Space یا کاراکتر های خاص استفاده نکنید. همچنین حداکثر طول این نام باید 63 کاراکتر باشد.
  • Exceptions Name: در صورتی که تمایل به استفاده از یک لیست استثنا را در تنظیمات خود دارید، توسط این فیلد، Exceptions هایی که از قبل ایجاد کرده اید را انتخاب کنید.

 در ادامه به بررسی دیگر آیتم های موجود در تنظیمات می پردازیم:

  • Content Length: این آیتم دارای دو گزینه می باشد.


نکته:

  1. Content Length: توسط این گزینه می توانید ماکزیمم طول قابل قبول Request Body را بر حسب بایت تعیین کنید. مقدار تعیین شده برای این گزینه با مقدار فیلد Content-Length در HTTP Header مقایسه خواهد شد.
  2. Illegal Content Length: جهت چک کردن اینکه آیا فیلد  Content-Length فقط شامل کاراکتر های عددی می باشد این گزینه را فعال کنید.

لازم به ذکر است با دبل کلیک بر روی هر گزینه می توانید تنظیمات Status - Length - Action - Period Block - Severity -Threat Weight - Trigger Action را برای گزینه ی مورد نظر انجام دهید. پس از بررسی کلیه ی آیتم ها، تنظیمات فوق را نیز مورد بررسی قرار خواهیم داد.

  • HTTP Header: این آیتم دارای شش گزینه می باشد:


نکته:

  1. Header Length: توسط این گزینه می توانید ماکزیمم سایز قابل قبول برای سطر های HTTP Header را بر حسب بایت مشخص کنید.
  2. Header Name Length: توسط این گزینه می توانید ماکزیمم سایز قابل قبول برای نام یک HTTP Header را بر حسب بایت مشخص کنید. مقدار پیش فرض برای این گزینه 50 بایت می باشد.
  3. Header Value Length: توسط این گزینه می توانید ماکزیمم سایز قابل قبول برای مقدار یک HTTP Header را بر حسب بایت مشخص کنید. مقدار پیش فرض برای این گزینه 4096 بایت می باشد.
  4. Illegal Character in Header Name: جهت چک کردن اینکه آیا نام HTTP Header شامل کاراکتر های غیر قانونی می باشد این گزینه را فعال کنید.
  5. Illegal Character in Header Value: جهت چک کردن اینکه آیا مقدار مربوط به HTTP Header شامل کاراکتر های غیر قانونی می باشد این گزینه را فعال کنید.
  6. Redundant HTTP Headers: جهت چک کردن اینکه آیا یک HTTP Request شامل چندین نمونه از فیلد های Content-Length, Content- Type و Host می باشد، این گزینه را فعال کنید.فیلد های فوق تنها برای یک بار در هر Request توسط RFC مورد تقاضا قرار می گیرند. HTTP Header های اضافی احتمالا مخرب می باشند.

لازم به ذکر است با دبل کلیک بر روی هر گزینه می توانید تنظیمات Status - Length - Action - Period Block - Severity -Threat Weight - Trigger Action را برای گزینه ی مورد نظر انجام دهید. پس از بررسی کلیه ی آیتم ها، تنظیمات فوق را نیز مورد بررسی قرار خواهیم داد.

  • HTTP Parameter:  این آیتم دارای نه گزینه می باشد:


نکته:

  1. Total URL Parameters Length: توسط این گزینه می توانید ماکزیمم طول قابل قبول برای تمامی پارامتر ها  در یک URL را بر حسب بایت مشخص کنید. مقدار مربوطه شامل نام و مقدار تمامی پارامتر ها می شود. پارامتر ها در یک URL معمولا بعد از یک علامت سوال قرار می گیرند.
  2. Total Body Parameters Length: توسط این گزینه می توانید ماکزیمم طول قابل قبول برای تمامی پارامتر های موجود در HTTP Body که در هنگام HTTP POST Requests ایجاد می شوند را مشخص کنید.
  3. Number of URL Parameters:  توسط این گزینه می توانید ماکزیمم تعداد پارامتر های قابل قبول در یک URL را مشخص کنید. بالاترین تعداد پارامتر که می توانید در یک URL در نظر بگیرید 1024 می باشد. البته عددی که برای این گزینه در نظر می گیرید، تعداد پارامتر های موجود در HTTP Body که در هنگام HTTP POST Requests ایجاد می شوند را در بر نمی گیرید. مقدار پیش فرض برای این گزینه 128 می باشد.
  4. NULL Character in Parameter Name: جهت چک کردن Null Character ها در نام پارامتر، این گزینه را فعال کنید.
  5. NULL Character in Parameter Value: جهت چک کردن Null Character ها در مقدار مربوط به پارامتر، این گزینه را فعال کنید.
  6. Maximum URL Parameter Name Length: توسط این گزینه می توانید ماکزیمم طول قابل قبول برای نام هر پارامتر موجود در URL را بر حسب بایت مشخص کنید. مقدار پیش فرض برای این گزینه 4096 بایت می باشد.
  7. Maximum URL Parameter Value Length:   توسط این گزینه می توانید ماکزیمم طول قابل قبول برای مقدار مربوط به هر پارامتر موجود در URL را بر حسب بایت مشخص کنید. مقدار پیش فرض برای این گزینه 4096 بایت می باشد.
  8. Illegal Character in Parameter Name: جهت چک کردن اینکه آیا نام مربوط به یک پارامتر شامل کاراکتر هایی که توسط RFC غیر مجاز شناخته شده اند، می باشد، این گزینه را فعال کنید.
  9. Illegal Character in Parameter Value: جهت چک کردن اینکه آیا مقدار مربوط به یک پارامتر شامل کاراکتر هایی که توسط RFC غیر مجاز شناخته شده اند، می باشد، این گزینه را فعال کنید.

لازم به ذکر است با دبل کلیک بر روی هر گزینه می توانید تنظیمات Status - Length - Action - Period Block - Severity -Threat Weight - Trigger Action را برای گزینه ی مورد نظر انجام دهید.

  • HTTP Request: این آیتم دارای هشت گزینه می باشد:


نکته:

  1. Illegal HTTP Request Method: جهت چک کردن متد های HTTP Request که بر اساس RFC 2616 یا RFC 4918 نامعتبر می باشند این گزینه را فعال کنید. هر روشی که در RFC های فوق تعریف نشده باشد نا معتبر در نظر گرفته می شود. مثلا غلط املایی در نوشتن یک متد. به عنوان مثال نوشتن GETT به جای GET
  2. HTTP Request Filename Length: توسط این گزینه می توانید ماکزیمم طول قابل قبول برای نام فایل HTTP Request را بر حسب بایت مشخص کنید.
  3. HTTP Request Length: توسط این گزینه می توانید ماکزیمم طول قابل قبول برای کل HTTP Request که شامل هر دوی Header و Body می شود را بر حسب بایت مشخص کنید. 
  4. Number of Header Lines in Request:  توسط این گزینه می توانید ماکزیمم تعداد سطر های قابل قبول در HTTP Header را مشخص کنید.
  5. Missing Content Type: جهت چک کردن اینکه آیا فیلد Content-Type در دسترس است، این گزینه را فعال کنید
  6. Null Character in URL: جهت چک کردن اینکه آیا URL در یک درخواست شامل Null Character می باشد این گزینه را فعال کنید. در URL،  بخشی که بین Host Prefix و پارامتر قرار می گیرد چک می شود. به عنوان مثال index.php/ در URL زیر: http://www.server.com/index.php?name=value HTTP 1.1
  7. Illegal Character in URL: جهت چک کردن اینکه آیا URL مربوط به یک درخواست، شامل کاراکتر هایی که توسط RFC غیر مجاز شناخته شده اند می باشد یا خیر، این گزینه را فعال کنید. در URL،  بخشی که بین Host Prefix و پارامتر قرار می گیرد چک می شود. به عنوان مثال index.php/ در URL روبرو: http://www.server.com/index.php?name=value HTTP 1.1
  8. Malformed URL: جهت چک کردن اینکه آیا URL از این قانون که با کاراکتر Slash شروع شود و یا این که کاراکتر Slash بعد از Protocol و Host قرار گیرد، پیروی می کند، این گزینه را فعال کنید. به عنوان مثال:

http://myserver.com/default.asp

لازم به ذکر است با دبل کلیک بر روی هر گزینه می توانید تنظیمات Status - Length - Action - Period Block - Severity -Threat Weight - Trigger Action را برای گزینه ی مورد نظر انجام دهید.

  • HTTP2 Frame: این آیتم دارای هشت گزینه می باشد:

نکته:

  1. Header Compression Table Size: توسط این گزینه می توانید ماکزیمم سایز قابل قبول برای جدول Header Compression را بر حسب بایت مشخص کنید. از این جدول جهت رمزگشایی Header Block ها استفاده می شود. مقدار پیش فرض برای این گزینه 65535 بایت می باشد.
  2. Number of Concurrent Streams: توسط این گزینه می توانید ماکزیمم تعداد Stream های قابل قبول که فرستنده به گیرند ه اجاز ه ی ایجاد آن ها را می دهد، را مشخص کنید. مقدار پیش فرض برای این گزینه 1000 می باشد.
  3. Initial Window Size: توسط این گزینه می توانید ماکزیمم سایز قابل قبول برای Initial Window مربوط به فرستنده را بر حسب بایت مشخص کنید. مقدار پیش فرض برای این گزینه 6291456 بایت می باشد.
  4. Frame Size : توسط این گزینه می توانید ماکزیمم سایز قابل قبول برای Frame Payload که فرستنده تمایل به دریافت آن را دراد، را بر حسب بایت مشخص کنید. مقدار پیش فرض برای این گزینه 16384 بایت می باشد.
  5. Header List Size: توسط این گزینه می توانید ماکزیمم سایز قابل قبول برای Header List ای که فرستنده آماده پذیرش آن است را بر حسب بایت مشخص کنید. مقدار پیش فرض برای این گزینه 65536 بایت می باشد.

لازم به ذکر است با دبل کلیک بر روی هر گزینه می توانید تنظیمات Status - Length - Action - Period Block - Severity -Threat Weight - Trigger Action را برای گزینه ی مورد نظر انجام دهید.

  •  Others:  این آیتم دارای هشت گزینه می باشد:


نکته:

Illegal Content Type: جهت چک کردن اینکه آیا مقدار Content Type از فرمت روبرو استفاده می کند، این گزینه را فعال کنید.  <type>/<subtype>

Illegal Response Code: جهت چک کردن اینکه آیا HTTP Response Code یک عدد سه رقمی است، این گزینه را فعال کنید.

Illegal Host Name: جهت چک کردن کاراکتر های غیر قانونی موجود در فیلد Host مربوط به یک HTTP Header این گزینه را فعال کنید.

Illegal HTTP Version: جهت چک کردن ورژن های نامعتبر HTTP این گزینه را فعال کنید. در حال حاضر تنها ورژن های معتبر HTTP/0.9 و HTTP/1.0 و HTTP/1.1 می باشند.

Body Length: توسط این گزینه می توانید ماکزیمم سایز قابل قبول برای HTTP Body را بر حسب بایت مشخص کنید.

Number of Cookies In Request: توسط این گزینه می توانید ماکزیمم تعداد قابل قبول کوکی در یک HTTP Request را مشخص کنید.

Number of Ranges in Range Header: توسط این گزینه می توانید ماکزیمم تعداد قابل قبول خطوط فیلد Range در هر HTTP Header را مشخص کنید. مقدار پیش فرض برای این گزینه 5 می باشد.

Malformed Request: جهت بررسی یک درخواست در مواردی مانند Syntax Errors و یا پیشی گرفتن از ماکزیمم سایزی که برای بافر در نظر گرفته شده این گزینه را فعال کنید. Syntax Errors و Buffer Overflows می توانند باعث بروز مشکلاتی در وب سرور شوند که منجر به آسیب پذیری های امنیتی می گردد.

WebSocket Protocol: جهت شناسایی ترافیکی که از WebSocket TCP-Based Protocol استفاده می کند این گزینه را فعال کنید.

Illegal Connection Preface: جهت چک کردن اینکه آیا آغاز یک Connection از سمت کاربر با PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n شروع می شود این گزینه را فعال کنید.

Illegal Frame Type: جهت چک کردن اینکه آیا یک HTTP2 Request شامل نوعی از Frame، که در RFC7540 تعریف نگردیده، می شود یا خیر، این گزینه را فعال کنید.

Illegal Frame Flags: جهت چک کردن اینکه آیا یک HTTP2 Request شامل Frame Flag هایی، که در RFC7540 تعریف نگردیده، می شود یا خیر، این گزینه را فعال کنید.

Illegal Chunk Size: جهت چک کردن اینکه آیا مقدار مربوط به فیلد Chunk Size از نوع Hexadecimal است، این گزینه را فعال کنید. اگر مقدار فیلد فوق از نوعی دیگر بود یک Violation در نظر گرفته می شود.

  • لازم به ذکر است با دبل کلیک بر روی هر کدام از گزینه های موجود در آیتم های بالا می توانید تنظیمات Status - Length - Action - Period Block - Severity -Threat Weight - Trigger Action را برای گزینه ی مربوطه انجام دهید.


نکته:

  • Status: این فیلد برای فعال کردن گزینه های موجود در هر کدام از آیتم هایی که در بالا توضیح داده شد، بکار می رود.
  • Length: در فیلد Length برای هر کدام از گزینه ها ماکزیمم سایز یا طول مورد نظر خود را وارد کنید.
  • توسط فیلد Action می توانید تعیین کنید که دستگاه FortiWeb چه اقدامی را در هنگام تشخیص یک Violation انجام دهد. این فیلد دارای گزینه های زیر می باشد:
  1. Alert: با انتخاب این گزینه Request مربوطه Accept شده و یک Alert Email و یا Log Message تولید می شود.
  2. Alert & Deny:  با انتخاب این گزینه Request مربوطه Block شده و یک Alert Email و یا Log Message تولید می شود.
  3. Period Block: با انتخاب این گزینه Request های بعدی از سمت این Client برای مدت زمانی مشخص Block می شود. در این مورد شما باید فیلد Block Period را نیز مقدار دهی کنید.
  • برای فیلد Block Period باید مدت زمانی که Request های بعدی از سمت کاربر مربوطه Block می شود را تعیین کنید. این فیلد تنها در صورتی که گزینه ی Period Block را برای فیلد Action انتخاب کنید قابل مقدار دهی می باشد. مقدار مجاز برای این فیلد از 1 تا 3600 ثانیه می باشد. مقدار پیش فرض برای این فیلد 1ثانیه می باشد.
  • زمانی که یک Violation در Log ثبت می شود، هر Log Message شامل یک فیلد به نام Severity Level می شود. توسط گزینه ی Severity می توانید تعیین کنید که دستگاه FortiWeb کدام Severity Level را در زمان وقوع یک Violation استفاده خواهد کرد. گزینه های موجود برای Severity Level به قرار زیر می باشد:
  1.  Low
  2.  Medium
  3.  High
  • Threat Weight: اگر ویژگی Device Tracking در یک Web Protection Profile فعال شده باشد و یک Security Policy از HTTP Protocol Constraints استفاده کند شما می توانید Threat Weight را برای هر گزینه تنظیم کنید.
  • توسط فیلد Trigger Action مشخص خواهید کرد هنگامی که یک Log و یا Alert Email در رابطه با یک Violation ایجاد می شود، دستگاه FortiWeb از کدام Trigger استفاده کند. به عنوان مثال شما می توانید FortiAnalyzer را به عنوان Trigger  انتخاب کنید.

  •   در پایان بر روی گزینه ی OK کلیک کنید.
  • جهت اعمال پروفایل HTTP Protocol Constraint فوق آن را در یک Inline Protection Profile انتخاب کنید.

تنظیمات مربوط به ایجاد HTTP Protocol Constraint Exceptions

شما می توانید استثناهایی را هنگام استفاده از ویژگی HTTP Protocol Constraint ایجاد کنید. بدین منظور مراحل زیر را انجام دهید:

  • از منوی سمت چپ به مسیر Web Protection > Protocol رفته و از نوار بالای صفحه بر روی گزینه ی HTTP Constraints Exceptions کلیک کرده و در ادامه گزینه ی Create New را انتخاب کنید.


نکته:

  • برای فیلد Name یک نام منحصر بفرد انتخاب کرده تا در دیگر بخش های تنظیمات بتوانید به راحتی از آن استفاده کنید. در انتخاب نام مورد نظر از Space یا کاراکتر های خاص استفاده نکنید. همچنین حداکثر طول این نام باید 63 کاراکتر باشد.
  •  در ادامه بر روی گزینه ی OK کلیک کرده و گزینه ی Create New را انتخاب کنید.


نکته:

  • Host Status: اگر قصد دارید این Exception  تنها بر روی HTTP Request هایی که به سمت یک Host خاص فرستاده می شوند، اعمال شود این گزینه را فعال کنید.
  • Host: برای این فیلد نام یک Host تحت حفاظت را وارد کنید. این نام با مقدار فیلد Host مربوط به یک HTTP Request مقایسه و در صورت Match شدن Exception   اجرا می شود. این فیلد تنها در صورتی که گزینه ی Host Status فعال باشد قابل تنظیم می باشد.
  • Source IP: اگر قصد دارید این Exception  تنها بر روی HTTP Request هایی که از سمت یک Host با IP Address مشخص فرستاده می شوند، اعمال شود این گزینه را فعال کنید.
  • IPv4/IPv6/IP Range: برای این فیلد IP Address یک Host تحت حفاظت را وارد کنید. این IP Address با IP Address مربوط به یک HTTP Request مقایسه و در صورت Match شدن Exception   اجرا می شود. این فیلد تنها در صورتی که گزینه  Source IP فعال باشد قابل تنظیم می باشد.
  • Request Type: توسط این گزینه الگوی مورد نظر خود را برای فیلد URL Pattern مشخص خواهید کرد. در صورت انتخاب Simple String باید URL را به صورت کامل یا قسمتی از آن را عینا وارد کنید و در صورت انتخاب Regular Expression باید یک الگو را در فیلد URL Pattern وارد کنید. در واقع Regular Expression ترکیبی از  علامت ها و کاراکتر ها می باشد که الگویی را جهت جستجوی URL فراهم می کند. در نتیجه اگر قسمتی از URL شامل این الگو شود عملیات Match شدن انجام و Rule فوق بر روی Request اعمال می شود. به عنوان مثال با انتخاب گزینه ی Simple String شما می توانید الگوی cart.php/ را به عنوان URL Pattern و یا با انتخاب گزینه ی Regular Expression شما می توانید الگوی ^/*.php را به عنوان URL Pattern در نظر بگیرید. توجه شود که که در صورت انتخاب گزینه ی Simple String الگویی که در نظر می گیرید باید با کاراکتر / شروع شود.
  • گزینه های موجود در آیتم های Content Length - HTTP Header - HTTP Parameter - HTTP Request - Others در همین آموزش مورد بررسی قرار گرفت. هر کدام از گزینه هایی که تمایل دارید در لیست استثنا قرار گیرد را فعال کنید.

  •  در ادامه می توانید در تنظیمات مربوط به ایجاد HTTP Protocol Constraints که در ابتدای آموزش توضیح داده شد، Exception فوق را اعمال کنید.





.


 



Rss Comments
  • There are no comments for this article.
Info Add Comment
Nickname: Your Email: Subject: Comment:
Enter the code below:
Info Ask a Question