Skip to content

WAF features

Last updated on

This document details the core features and configurations available within the STACKIT Web Application Firewall (WAF).

The following table outlines which STACKIT WAF features are currently available and which are still being developed:

To use a STACKIT WAF it is necessary to have a STACKIT Content Delivery Network (CDN) in place as a base. It is tightly bundled with a CDN as it also works on the edge. Therefore, it is highly recommended to make use of STACKIT CDN features.

Before you can configure WAF properties, you must enable the WAF by setting the mode to ENABLED or LOG_ONLY. If the WAF is not enabled, most properties are not populated.

The operating mode determines how the WAF handles incoming traffic.

You can enable the Web Application Firewall (WAF) as an additional service within your CDN distribution. For detailed pricing information, see Billing and costs.

  • BASIC: Provides standard WAF features and basic rule sets.
  • PREMIUM: Unlocks additional premium-only rules and the ability to create custom rules (custom rules are planned for future release).

The paranoia level defines how aggressively the WAF actions requests. Higher levels are more effective at catching attacks but increase the chance of blocking legitimate traffic (false positives).

Available levels range from least strict to most strict:

  • L1 (Lowest chance of false positives)
  • L2
  • L3
  • L4 (Highest chance of false positives)

Whitelists restrict which requests the distribution accepts. The WAF blocks non-whitelisted requests before they reach the origin.

  • Allowed HTTP methods: Restricts accepted HTTP methods (e.g., GET, POST, PUT).
  • Allowed HTTP versions: Restricts the accepted HTTP protocol versions.
  • Allowed request content types: Restricts the accepted Content-Type headers in request bodies (e.g., application/json, multipart/form-data). Formats must be type/subtype without spaces.

You control rule behavior using nine properties divided into three specificity groups: collections, rule groups, and rules.

The rule levels, from broadest to most specific, are:

  1. Collections: Broad categories of rules. Currently, the available collections are @builtin/crs/response (response rules) and @builtin/crs/request (request rules).
  2. Rule groups: Sub-categories within collections. Call the ListWafCollections operation to view available rule groups.
  3. Rules: Individual, specific rules.

The precedence of these levels dictates how overlapping configurations are resolved. The order of precedence is (from highest to lowest):

  1. Rule
  2. Rule group
  3. Collection

This means that a more specific setting always overrides a broader one. For example, disabling a collection but activating a specific rule within it will deactivate every rule in that collection except for the explicitly activated one.

Use the following properties to enable, disable, or log rules at each hierarchy level:

The following log fields are added to the CDN Logs only when an enabled or logged rule is triggered: