diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 3d6f1daf8..e8c87d6db 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -22,7 +22,7 @@ # NGINX Agent content/nginx/nms/agent/* @nginx/nginx-agent -# NGINX App Protect DoS +# F5 DoS for NGINX content/nap-dos/* @nginx/dos-docs-approvers # NGINX App Protect WAF diff --git a/_banners/waf-oss-usage.md b/_banners/waf-oss-usage.md new file mode 100644 index 000000000..abec9f383 --- /dev/null +++ b/_banners/waf-oss-usage.md @@ -0,0 +1,7 @@ +{{< banner "warning" "NGINX Open Source availability" >}} + +The guidance in this section is **only** applicable to F5 WAF for NGINX v5. + +For NGINX v4, you must use an [NGINX Plus]({{< ref "/waf/install/plus" >}}) deployment. + +{{< /banner >}} \ No newline at end of file diff --git a/cloudcannon.config.yml b/cloudcannon.config.yml index 8aa064275..e6b2aa94a 100644 --- a/cloudcannon.config.yml +++ b/cloudcannon.config.yml @@ -88,8 +88,8 @@ collections_config: nap_dos: path: content/nap-dos output: true - name: NGINX App Protect DoS - description: Documentation for NGINX App Protect DoS + name: F5 DoS for NGINX + description: Documentation for F5 DoS for NGINX parse_branch_index: false icon: notes preview: diff --git a/content/includes/nic/configuration/security.md b/content/includes/nic/configuration/security.md index 4ade6e0cf..c7aae8062 100644 --- a/content/includes/nic/configuration/security.md +++ b/content/includes/nic/configuration/security.md @@ -34,7 +34,7 @@ By default, the ServiceAccount has access to all Secret resources in the cluster ### Configure root filesystem as read-only {{< call-out "caution" >}} - This feature is compatible with [NGINX App Protect WAFv5](https://docs.nginx.com/nginx-app-protect-waf/v5/). It is not compatible with [NGINX App Protect WAFv4](https://docs.nginx.com/nginx-app-protect-waf/v4/) or [NGINX App Protect DoS](https://docs.nginx.com/nginx-app-protect-dos/). + This feature is compatible with [NGINX App Protect WAFv5](https://docs.nginx.com/nginx-app-protect-waf/v5/). It is not compatible with [NGINX App Protect WAFv4](https://docs.nginx.com/nginx-app-protect-waf/v4/) or [F5 DoS for NGINX](https://docs.nginx.com/nginx-app-protect-dos/). {{< /call-out >}} NGINX Ingress Controller is designed to be resilient against attacks in various ways, such as running the service as non-root to avoid changes to files. We recommend setting filesystems on all containers to read-only, this includes `nginx-ingress-controller`, though also includes `waf-enforcer` and `waf-config-mgr` when NGINX App Protect WAFv5 is in use. This is so that the attack surface is further reduced by limiting changes to binaries and libraries. diff --git a/content/includes/nic/rbac/set-up-rbac.md b/content/includes/nic/rbac/set-up-rbac.md index eaf9a6c6f..03a7727f7 100644 --- a/content/includes/nic/rbac/set-up-rbac.md +++ b/content/includes/nic/rbac/set-up-rbac.md @@ -18,7 +18,7 @@ nd-docs: DOCS-1468
-If you're planning to use NGINX App Protect or NGINX App Protect DoS, additional roles and bindings are needed. +If you're planning to use NGINX App Protect or F5 DoS for NGINX, additional roles and bindings are needed. 1. (NGINX App Protect only) Create the *App Protect* role and binding: @@ -26,7 +26,7 @@ If you're planning to use NGINX App Protect or NGINX App Protect DoS, additional kubectl apply -f deployments/rbac/ap-rbac.yaml ``` -2. (NGINX App Protect DoS only) Create the *App Protect DoS* role and binding: +2. (F5 DoS for NGINX only) Create the *App Protect DoS* role and binding: ```shell kubectl apply -f deployments/rbac/apdos-rbac.yaml diff --git a/content/includes/waf/default-conf-localhost.md b/content/includes/waf/default-conf-localhost.md new file mode 100644 index 000000000..ca94c6513 --- /dev/null +++ b/content/includes/waf/default-conf-localhost.md @@ -0,0 +1,39 @@ +--- +nd-docs: +--- + +```nginx +server { + listen 80; + server_name domain.com; + + proxy_http_version 1.1; + + location / { + + # NGINX App Protect WAF + app_protect_enable on; + + client_max_body_size 0; + default_type text/html; + proxy_pass http://127.0.0.1:8080/; + } +} + +server { + listen 8080; + server_name localhost; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} +``` diff --git a/content/includes/waf/nginx-conf-localhost.md b/content/includes/waf/nginx-conf-localhost.md new file mode 100644 index 000000000..587ff5b01 --- /dev/null +++ b/content/includes/waf/nginx-conf-localhost.md @@ -0,0 +1,41 @@ +--- +nd-docs: +--- + +```nginx +user nginx; +worker_processes auto; + +# NGINX App Protect WAF +load_module modules/ngx_http_app_protect_module.so; + +error_log /var/log/nginx/error.log notice; +pid /var/run/nginx.pid; + +events { + worker_connections 1024; +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + keepalive_timeout 65; + + #gzip on; + + # NGINX App Protect WAF + app_protect_enforcer_address 127.0.0.1:50000; + + include /etc/nginx/conf.d/*.conf; +} +``` diff --git a/content/includes/waf/policy.html b/content/includes/waf/policy.html new file mode 100644 index 000000000..a3c8e9a88 --- /dev/null +++ b/content/includes/waf/policy.html @@ -0,0 +1,6788 @@ + + +

policy

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameReferenceTypeDescriptionAllowed Values
access-profilesYesarray of objects
applicationLanguageNostringThe character encoding for the application. The character encoding determines how the policy processes the character sets. The default is utf-8.
    +
  • big5
  • +
  • euc-jp
  • +
  • euc-kr
  • +
  • gb18030
  • +
  • gb2312
  • +
  • gbk
  • +
  • iso-8859-1
  • +
  • iso-8859-10
  • +
  • iso-8859-13
  • +
  • iso-8859-15
  • +
  • iso-8859-16
  • +
  • iso-8859-2
  • +
  • iso-8859-3
  • +
  • iso-8859-4
  • +
  • iso-8859-5
  • +
  • iso-8859-6
  • +
  • iso-8859-7
  • +
  • iso-8859-8
  • +
  • iso-8859-9
  • +
  • koi8-r
  • +
  • shift_jis
  • +
  • utf-8
  • +
  • windows-1250
  • +
  • windows-1251
  • +
  • windows-1252
  • +
  • windows-1253
  • +
  • windows-1255
  • +
  • windows-1256
  • +
  • windows-1257
  • +
  • windows-874
  • +
blocking-settingsYesobjectThis section defines policy block/alarm behaviors.
bot-defenseYesobjectThis section defines the properties of the bot defense feature.
browser-definitionsYesarray of objects
brute-force-attack-preventionsYesarray of objectsDefines configuration for Brute Force Protection feature. There is default configuration (one with bruteForceProtectionForAllLoginPages flag and without url) that applies to all configured login URLs unless there exists another brute force configuration for a specific login page.
caseInsensitiveNobooleanSpecifies whether the security policy treats microservice URLs, file types, URLs, and parameters as case sensitive or not. When this setting is enabled, the system stores these security policy elements in lowercase in the security policy configuration.
character-setsYesarray of objects
cookie-settingsYesobjectThe maximum length of a cookie header name and value that the system processes. The system calculates and enforces a cookie header length based on the sum of the length of the cookie header name and value.

cookies

Yes

array of objects

This section defines Cookie entities for your policy. You can specify the cookies that you want to allow, and the ones you want to enforce in a security policy:

+
+
    +
  • Allowed cookies: The system allows these cookies and clients can change them.
  • +
  • Enforced cookies: The system enforces the cookies in the list (not allowing clients to change them) and allows clients to change all others.
  • +
+
csrf-protectionYesobject
csrf-urlsYesarray of objects
data-guardYesobjectData Guard feature can prevent responses from exposing sensitive information by masking the data.
descriptionNostringSpecifies the description of the policy.
disallowed-geolocationsYesarray of objectsSpecifies a list of countries that may not access the web application.
enforcementModeNostring
+
How the system processes a request that triggers a security policy violation.
+
    +
  • Blocking: When the enforcement mode is set to blocking, traffic is blocked if it causes a violation (configured for blocking).
  • +
  • Transparent: When the enforcement mode is set to transparent, traffic is not blocked even if a violation is triggered.
  • +
+
+
    +
  • blocking
  • +
  • transparent
  • +
enforcer-settingsYesobjectThis section contains all enforcer settings.

filetypes

Yes

array of objects

File types are categorization of the URLs in the request by the extension appearing past the last dot at the end of the URL. For example, the file type of /index.php is "php". Other well known file types are html, aspx, png, jpeg and many more. A special case is the "empty" file type called "no-ext" meaning, no extension in which the URL has no dot at its last segment as in /foo_no_dot

+

File types usually imply the expected content type in the response. For example, html and php return HTML content, while jpeg, png and gif return images, each in its respective format. File types also imply the server technology deployed for rendering the page. For example, php (PHP), aspx (ASP) and many others.

+

The security policy uses file types for several purposes:

+

1. Ability to define which file types are allowed and which are disallowed. By including the pure wildcard "*" file type and a list of disallowed file types you have a file type denylist. By having a list of explicit file type without the pure wildcard "*" you have a file type allowlist.

+
    +
  1. Each file type implies maximum length restrictions for the requests of that file type. The checked lengths are per the URL, Query String, total request length, and payload (POST data).
  2. +
  3. Each file type determines whether to detect response signatures for requests of that file type. Typically, one would never check signatures for image file types.
  4. +
fullPathNostringThe full name of the policy including partition.
generalYesobjectThis section includes several advanced policy configuration settings.
graphql-profilesYesarray of objects
grpc-profilesYesarray of objects
header-settingsYesobjectThe maximum length of an HTTP header name and value that the system processes. The system calculates and enforces the HTTP header length based on the sum of the length of the HTTP header name and value.
headersYesarray of objectsThis section defines Header entities for your policy.
host-namesYesarray of objects
idl-filesYesarray of objects
ip-address-listsYesarray of objectsAn IP address list is a list of IP addresses that you want the system to treat in a specific way for a security policy.
ip-intelligenceYesobject
json-profilesYesarray of objects
json-validation-filesYesarray of objects
login-enforcementYesobject
login-pagesYesarray of objectsA login page is a URL in a web application that requests must pass through to get to the authenticated URLs. Use login pages, for example, to prevent forceful browsing of restricted parts of the web application, by defining access permissions for users. Login pages also allow session tracking of user sessions.
methodsYesarray of objects
nameNostringThe unique user-given name of the policy. Policy names cannot contain spaces or special characters. Allowed characters are a-z, A-Z, 0-9, dot, dash (-), colon (:) and underscore (_).
open-api-filesYesarray of objects
override-rulesYesarray of objectsThis section defines policy override rules.
parametersYesarray of objectsThis section defines parameters that the security policy permits in requests.
performStagingNobooleanDetermines staging handling for all applicable entities in the policy, such as signatures, URLs, parameters, and cookies. If disabled, all entities will be enforced and any violations triggered will be considered illegal.
response-pagesYesarray of objectsThe Security Policy has a default blocking response page that it returns to the client when the client request, or the web server response, is blocked by the security policy. You can change the way the system responds to blocked requests. All default response pages contain a variable, <%TS.request.ID()%>, that the system replaces with a support ID number when it issues the page.
sensitive-parametersYesarray of objectsThis section defines sensitive parameters. The contents of these parameters are not visible in logs nor in the user interfaces. Instead of actual values a string of asterisks is shown for these parameters. Use these parameters to protect sensitive user input, such as a password or a credit card number, in a validated request. A parameter name of "password" is always defined as sensitive by default.
server-technologiesYesarray of objectsThe server technology is a server-side application, framework, web server or operating system type that is configured in the policy in order to adapt the policy to the checks needed for the respective technology.
signature-requirementsYesarray of objects
signature-setsYesarray of objectsDefines behavior when signatures found within a signature-set are detected in a request. Settings are culmulative, so if a signature is found in any set with block enabled, that signature will have block enabled.
signature-settingsYesobject
signaturesYesarray of objectsThis section defines the properties of a signature on the policy.
templateYesobjectSpecifies the template to populate the default attributes of a new policy.
threat-campaignsYesarray of objectsThis section defines the enforcement state for the threat campaigns in the security policy.
urlsYesarray of objectsIn a security policy, you can manually specify the HTTP URLs that are allowed (or disallowed) in traffic to the web application being protected. When you create a security policy, wildcard URLs of * (representing all HTTP URLs) are added to the Allowed HTTP URLs lists.
wafEngineVersionNostring
xml-profilesYesarray of objects
+

open-api-files

+ ++++++ + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
linkstring
+

template

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
derivedFromstring
namestringSpecifies the name of the template used for the policy creation.
    +
  • POLICY_TEMPLATE_NGINX_BASE
  • +
+

access-profiles

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
descriptionstring
enforceMaximumLengthboolean
enforceValidityPeriodboolean
keyFilesarray of objects
locationobject
maximumLengthinteger
namestring
typestring
    +
  • jwt
  • +
usernameExtractionobject
verifyDigitalSignatureboolean
+

keyFiles

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
contentsstring
fileNamestring
+

location

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
instring
    +
  • header
  • +
  • query
  • +
namestring
+

usernameExtraction

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
claimPropertyNamestring
enabledboolean
isMandatoryboolean
+

blocking-settings

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameReferenceTypeDescriptionAllowed Values
evasionsYesarray of objectsThis section defines behavior of 'Evasion technique detected' (VIOL_EVASION) violation sub-violations. User can control which sub-violations are enabled (alarmed/blocked). Behavior of sub-violations depends on the block/alarm settings of 'Evasion technique detected' violation, defined in /policy/blocking-settings/violations section: - If both alarm and block are disabled - enable flag becomes irrelevant, since there will be no block/alarm for all sub-violations
http-protocolsYesarray of objectsThis section defines behavior of 'HTTP protocol compliance failed' (VIOL_HTTP_PROTOCOL) violation sub-violations. User can control which sub-violations are enabled (alarmed/blocked). Behavior of sub-violations depends on the block/alarm settings of 'HTTP protocol compliance failed' violation, - If both alarm and block are disabled - enable flag becomes irrelevant, since there will be no block/alarm for all sub-violations
violationsYesarray of objects
+

bot-defense

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameReferenceTypeDescriptionAllowed Values
mitigationsYesobjectThis section defines the mitigation to each class or signature.
settingsYesobjectThis section contains all bot defense settings.
+

browser-definitions

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
isUserDefinedboolean
matchRegexstring
matchStringstring
namestring
+

brute-force-attack-preventions

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
bruteForceProtectionForAllLoginPagesbooleanWhen enabled, enables Brute Force Protection for all configured login URLs. When disabled, only brute force configurations for specific login pages are applied in case they exist.
loginAttemptsFromTheSameIpobjectSpecifies configuration for detecting brute force attacks from IP Address.
loginAttemptsFromTheSameUserobjectSpecifies configuration for detecting brute force attacks for Username.
reEnableLoginAfterinteger minimum: 60 maximum: 90000Defines prevention period (measured in seconds) for source-based brute force attacks.
sourceBasedProtectionDetectionPeriodinteger minimum: 60 maximum: 90000Defines detection period (measured in seconds) for source-based brute force attacks.
urlobjectReference to the URL used in login URL configuration (policy/login-pages). This login URL is protected by Brute Force Protection feature.
+

loginAttemptsFromTheSameIp

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values

action

string

Specifies action that is applied when defined threshold is reached.

+
+
    +
  • alarm: The system will log the login attempt.
  • +
  • alarm-and-blocking-page: The system will log the login attempt, block the request and send the Blocking page.
  • +
  • alarm-and-captcha: The system determines whether the client is a legal browser operated by a human user by sending a CAPTCHA challenge. A login attempt is logged if the client successfully passes the CAPTCHA challenge.
  • +
  • alarm-and-client-side-integrity: The system determines whether the client is a legal browser or a bot by sending a page containing JavaScript code and waiting for a response. Legal browsers are able to execute JavaScript and produce a valid response, whereas bots cannot. A login attempt is logged if the client successfully passes the Client Side Integrity challenge.
  • +
  • alarm-and-drop: The system will log the login attempt and reset the TCP connection.
  • +
  • alarm-and-honeypot-page: The system will log the login attempt, block the request and send the Honeypot page. The Honeypot page is used for attacker deception. The page should look like an application failed login page. Unlike with the Blocking page, when the Honeypot page is sent an attacker is not able to distinguish a failed login response from a mitigation. As a result, the attacker will not change identity (Source IP or Device ID) and the brute force attack will be rendered ineffective. The Honeypot page is recommended when mitigation is request blocking.
  • +
+
    +
  • alarm
  • +
  • alarm-and-blocking-page
  • +
enabledbooleanWhen enabled, the system counts failed login attempts from IP Address.
thresholdinteger minimum: 1 maximum: 1000After configured threshold (number of failed login attempts from IP Address) defined action will be applied for the next login attempt.
+

loginAttemptsFromTheSameUser

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values

action

string

Specifies action that is applied when defined threshold is reached.

+
+
    +
  • alarm: The system will log the login attempt.
  • +
  • alarm-and-captcha: The system determines whether the client is a legal browser operated by a human user by sending a CAPTCHA challenge. A login attempt is logged if the client successfully passes the CAPTCHA challenge.
  • +
  • alarm-and-client-side-integrity: The system determines whether the client is a legal browser or a bot by sending a page containing JavaScript code and waiting for a response. Legal browsers are able to execute JavaScript and produce a valid response, whereas bots cannot. A login attempt is logged if the client successfully passes the Client Side Integrity challenge.
  • +
+
    +
  • alarm
  • +
enabledbooleanWhen enabled, the system counts failed login attempts for each Username.
thresholdinteger minimum: 1 maximum: 100After configured threshold (number of failed login attempts for each Username) defined action will be applied for the next login attempt.
+

character-sets

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
characterSetarray of objects
characterSetTypestring
    +
  • header
  • +
  • url
  • +
  • parameter-name
  • +
  • parameter-value
  • +
  • xml-content
  • +
  • json-content
  • +
+

characterSet

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
isAllowedboolean
metacharstring
+

cookie-settings

+ ++++++ + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
maximumCookieHeaderLength
    +
  • integer minimum: 1 maximum: 65536
  • +
  • string
  • +
Maximum Cookie Header Length must be greater than 0 and less than 65536 bytes (64K). Note: if 0 or any are set, then no restriction on the cookie header length is applied.
    +
  • Integer values
  • +
  • "any"
  • +
+

cookies

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
accessibleOnlyThroughTheHttpProtocolbooleanSpecifies, when true, that the system adds the HttpOnly attribute to the domain cookie's response header. This is done to expose the cookie to only HTTP and HTTPS entities. This prevents the cookie from being modified, or intercepted even if it is not modified, by unwanted third parties that run scripts on the web page. +
+
Notes:
+
    +
  • The system does not validate that the cookie has not been modified or intercepted.
  • +
  • The feature covers all security policy cookies, both enforced and allowed, explicit and wildcard.
  • +
+
+
attackSignaturesCheckbooleanSpecifies, when true, that you want attack signatures and threat campaigns to be detected on this cookie and possibly override the security policy settings of an attack signature or threat campaign specifically for this cookie. After you enable this setting, the system displays a list of attack signatures and threat campaigns.

decodeValueAsBase64

string

Specifies whether the the system should detect or require values to be Base64 encoded:

+
+
    +
  • disabled: the value will not be decoded as Base64 content.
  • +
  • enabled: the value will be checked whether it can be decoded as Base64 and, if so, security checks will be performed on the decoded value.
  • +
  • required: the value must be decoded as Base64, and security checks will be performed on the decoded value.
  • +
+

Note: This setting is only relevant if the Cookie Enforcement Type is set to Allowed.

+
    +
  • disabled
  • +
  • enabled
  • +
  • required
  • +

enforcementType

string

Specifies how the system treats this cookie.

+
+
    +
  • enforced: Specifies that according to the security policy, this cookie may not be changed by the client.
  • +
  • allowed: Specifies that according to the security policy, this cookie may be changed by the client. The system ignores this cookie.
  • +
+
    +
  • allow
  • +
  • enforce
  • +

insertSameSiteAttribute

string

The introduction of the SameSite http attribute (defined in [RFC6265bis](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-same-site-00)) allows you to declare if your cookie should be restricted to a first-party or same-site context. Introducing the SameSite attribute on a cookie provides three different ways of controlling same-site vs. cross-site cookie sending:

+
+
    +
  • strict: Cookie will only be sent in a first-party context. In user terms, the cookie will only be sent if the site for the cookie matches the site currently shown in the browser's URL bar.
  • +
  • lax: Cookies will be sent with top level navigation
  • +
  • none-value: Cookies will be sent in a third-party context.
  • +
+
    +
  • lax
  • +
  • none
  • +
  • none-value
  • +
  • strict
  • +
maskValueInLogsbooleanSpecifies, when true, that the cookie's value will be masked in the request log.

name

string

Specifies the cookie name as appearing in the http cookie header. The cookie name length is limited to 500 characters.

+

Names can be one of the following according to the type attribute:

+
+
    +
  • explicit: Specifies that the cookie has a specific name and is not a wildcard entity. Type the name of a cookie exactly as you expect it to appear in the request.
  • +
  • wildcard: Specifies that any cookie that matches the listed wildcard expression should be treated according to the wildcard attributes. Type a wildcard expression that matches the expected cookie. For example, the wildcard expression cookie_12* of type Enforced specifies that the security policy should not allow modified domain cookies for all cookies which match cookie_12*.
  • +
+
+

The syntax for wildcard entities is based on shell-style wildcard characters. The list below describes the wildcard characters that you can use so that the entity name can match multiple objects.

+
+
    +
  • *: Matches all characters
  • +
  • ?: Matches any single character
  • +
  • [abcde]: Matches exactly one of the characters listed
  • +
  • [!abcde]: Matches any character not listed
  • +
  • [a-e]: Matches exactly one character in the range
  • +
  • [!a-e]: Matches any character not in the range
  • +
+
+

Note: Wildcards do not match regular expressions. Do not use a regular expression as a wildcard.

securedOverHttpsConnectionbooleanSpecifies, when true, that the system adds the Secure attribute to the domain cookie's response header. This is done to ensure that the cookies are returned to the server only over SSL (by using the HTTPS protocol). This prevents the cookie from being intercepted, but does not guarantee its integrity. +
+
Notes:
+
    +
  • The system does not validate that the cookie was received over SSL.
  • +
  • The feature covers all security policy cookies, both enforced and allowed, explicit and wildcard.
  • +
+
+
signatureOverridesarray of objectsArray of signature overrides. Specifies attack signatures whose security policy settings are overridden for this cookie, and which action the security policy takes when it discovers a request for this cookie that matches these attack signatures.
typestringDetermines the type of the name attribute. Only when setting the type to wildcard will the special wildcard characters in the name be interpreted as such.
    +
  • explicit
  • +
  • wildcard
  • +
wildcardOrderintegerSpecifies the order index for wildcard cookies matching. Wildcard cookies with lower wildcard order will get checked for a match prior to cookies with higher wildcard order.
+

signatureOverrides

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
enabledbooleanSpecifies, when true, that the overridden signature is enforced
namestringThe signature name which, along with the signature tag, identifies the signature.
signatureIdintegerThe signature ID which identifies the signature.
tagstringThe signature tag which, along with the signature name, identifies the signature.
+

csrf-protection

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
enabledboolean
expirationTimeInSeconds
    +
  • integer
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "disabled"
  • +
sslOnlyboolean
+

csrf-urls

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
enforcementActionstring
    +
  • none
  • +
  • verify-origin
  • +
methodstring
    +
  • GET
  • +
  • POST
  • +
  • any
  • +
urlstring
wildcardOrderinteger
+

data-guard

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
creditCardNumbersbooleanIf true the system considers credit card numbers as sensitive data.
customPatternsbooleanIf true the system recognizes customized patterns as sensitive data.
customPatternsListarray of stringsList of PCRE regular expressions that specify the sensitive data patterns.
enabledbooleanIf true the system protects sensitive data.

enforcementMode

string

Specifies the URLs for which the system enforces data guard protection.

+
+
    +
  • ignore-urls-in-list: Specifies that the system enforces data guard protection for all URLs except for those URLs in the Enforcement Mode list.
  • +
  • enforce-urls-in-list: Specifies that the system enforces data guard protection only for those URLs in the Enforcement Mode list
  • +
+
    +
  • enforce-urls-in-list
  • +
  • ignore-urls-in-list
  • +
enforcementUrlsarray of stringsList of URLS to be enforced based on enforcement mode of data guard protection.
firstCustomCharactersToExposeinteger minimum: 0 maximum: 255Specifies the number of first alphanumeric characters in Custom patterns that are exposed.
lastCustomCharactersToExposeinteger minimum: 0 maximum: 255Specifies the number of last alphanumeric characters in Custom patterns that are exposed.
maskDatabooleanIf true the system intercepts the returned responses to mask sensitive data.
usSocialSecurityNumbersbooleanIf true the system considers U.S Social Security numbers as sensitive data.
+

disallowed-geolocations

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
countryCodestringSpecifies the ISO country code of the selected country.
countryNamestringSpecifies the name of the country.
    +
  • Afghanistan
  • +
  • Aland Islands
  • +
  • Albania
  • +
  • Algeria
  • +
  • American Samoa
  • +
  • Andorra
  • +
  • Angola
  • +
  • Anguilla
  • +
  • Anonymous Proxy
  • +
  • Antarctica
  • +
  • Antigua and Barbuda
  • +
  • Argentina
  • +
  • Armenia
  • +
  • Aruba
  • +
  • Australia
  • +
  • Austria
  • +
  • Azerbaijan
  • +
  • Bahamas
  • +
  • Bahrain
  • +
  • Bangladesh
  • +
  • Barbados
  • +
  • Belarus
  • +
  • Belgium
  • +
  • Belize
  • +
  • Benin
  • +
  • Bermuda
  • +
  • Bhutan
  • +
  • Bolivia
  • +
  • Bosnia and Herzegovina
  • +
  • Botswana
  • +
  • Bouvet Island
  • +
  • Brazil
  • +
  • British Indian Ocean Territory
  • +
  • Brunei Darussalam
  • +
  • Bulgaria
  • +
  • Burkina Faso
  • +
  • Burundi
  • +
  • Cambodia
  • +
  • Cameroon
  • +
  • Canada
  • +
  • Cape Verde
  • +
  • Cayman Islands
  • +
  • Central African Republic
  • +
  • Chad
  • +
  • Chile
  • +
  • China
  • +
  • Christmas Island
  • +
  • Cocos (Keeling) Islands
  • +
  • Colombia
  • +
  • Comoros
  • +
  • Congo
  • +
  • Congo, The Democratic Republic of the
  • +
  • Cook Islands
  • +
  • Costa Rica
  • +
  • Cote D'Ivoire
  • +
  • Croatia
  • +
  • Cuba
  • +
  • Cyprus
  • +
  • Czech Republic
  • +
  • Denmark
  • +
  • Djibouti
  • +
  • Dominica
  • +
  • Dominican Republic
  • +
  • Ecuador
  • +
  • Egypt
  • +
  • El Salvador
  • +
  • Equatorial Guinea
  • +
  • Eritrea
  • +
  • Estonia
  • +
  • Ethiopia
  • +
  • Falkland Islands (Malvinas)
  • +
  • Faroe Islands
  • +
  • Fiji
  • +
  • Finland
  • +
  • France
  • +
  • France, Metropolitan
  • +
  • French Guiana
  • +
  • French Polynesia
  • +
  • French Southern Territories
  • +
  • Gabon
  • +
  • Gambia
  • +
  • Georgia
  • +
  • Germany
  • +
  • Ghana
  • +
  • Gibraltar
  • +
  • Greece
  • +
  • Greenland
  • +
  • Grenada
  • +
  • Guadeloupe
  • +
  • Guam
  • +
  • Guatemala
  • +
  • Guernsey
  • +
  • Guinea
  • +
  • Guinea-Bissau
  • +
  • Guyana
  • +
  • Haiti
  • +
  • Heard Island and McDonald Islands
  • +
  • Holy See (Vatican City State)
  • +
  • Honduras
  • +
  • Hong Kong
  • +
  • Hungary
  • +
  • Iceland
  • +
  • India
  • +
  • Indonesia
  • +
  • Iran, Islamic Republic of
  • +
  • Iraq
  • +
  • Ireland
  • +
  • Isle of Man
  • +
  • Israel
  • +
  • Italy
  • +
  • Jamaica
  • +
  • Japan
  • +
  • Jersey
  • +
  • Jordan
  • +
  • Kazakhstan
  • +
  • Kenya
  • +
  • Kiribati
  • +
  • Korea, Democratic People's Republic of
  • +
  • Korea, Republic of
  • +
  • Kuwait
  • +
  • Kyrgyzstan
  • +
  • Lao People's Democratic Republic
  • +
  • Latvia
  • +
  • Lebanon
  • +
  • Lesotho
  • +
  • Liberia
  • +
  • Libyan Arab Jamahiriya
  • +
  • Liechtenstein
  • +
  • Lithuania
  • +
  • Luxembourg
  • +
  • Macau
  • +
  • Macedonia
  • +
  • Madagascar
  • +
  • Malawi
  • +
  • Malaysia
  • +
  • Maldives
  • +
  • Mali
  • +
  • Malta
  • +
  • Marshall Islands
  • +
  • Martinique
  • +
  • Mauritania
  • +
  • Mauritius
  • +
  • Mayotte
  • +
  • Mexico
  • +
  • Micronesia, Federated States of
  • +
  • Moldova, Republic of
  • +
  • Monaco
  • +
  • Mongolia
  • +
  • Montenegro
  • +
  • Montserrat
  • +
  • Morocco
  • +
  • Mozambique
  • +
  • Myanmar
  • +
  • N/A
  • +
  • Namibia
  • +
  • Nauru
  • +
  • Nepal
  • +
  • Netherlands
  • +
  • Netherlands Antilles
  • +
  • New Caledonia
  • +
  • New Zealand
  • +
  • Nicaragua
  • +
  • Niger
  • +
  • Nigeria
  • +
  • Niue
  • +
  • Norfolk Island
  • +
  • Northern Mariana Islands
  • +
  • Norway
  • +
  • Oman
  • +
  • Other
  • +
  • Pakistan
  • +
  • Palau
  • +
  • Palestinian Territory
  • +
  • Panama
  • +
  • Papua New Guinea
  • +
  • Paraguay
  • +
  • Peru
  • +
  • Philippines
  • +
  • Pitcairn Islands
  • +
  • Poland
  • +
  • Portugal
  • +
  • Puerto Rico
  • +
  • Qatar
  • +
  • Reunion
  • +
  • Romania
  • +
  • Russian Federation
  • +
  • Rwanda
  • +
  • Saint Barthelemy
  • +
  • Saint Helena
  • +
  • Saint Kitts and Nevis
  • +
  • Saint Lucia
  • +
  • Saint Martin
  • +
  • Saint Pierre and Miquelon
  • +
  • Saint Vincent and the Grenadines
  • +
  • Samoa
  • +
  • San Marino
  • +
  • Sao Tome and Principe
  • +
  • Satellite Provider
  • +
  • Saudi Arabia
  • +
  • Senegal
  • +
  • Serbia
  • +
  • Seychelles
  • +
  • Sierra Leone
  • +
  • Singapore
  • +
  • Slovakia
  • +
  • Slovenia
  • +
  • Solomon Islands
  • +
  • Somalia
  • +
  • South Africa
  • +
  • South Georgia and the South Sandwich Islands
  • +
  • Spain
  • +
  • Sri Lanka
  • +
  • Sudan
  • +
  • Suriname
  • +
  • Svalbard and Jan Mayen
  • +
  • Swaziland
  • +
  • Sweden
  • +
  • Switzerland
  • +
  • Syrian Arab Republic
  • +
  • Taiwan
  • +
  • Tajikistan
  • +
  • Tanzania, United Republic of
  • +
  • Thailand
  • +
  • Timor-Leste
  • +
  • Togo
  • +
  • Tokelau
  • +
  • Tonga
  • +
  • Trinidad and Tobago
  • +
  • Tunisia
  • +
  • Turkey
  • +
  • Turkmenistan
  • +
  • Turks and Caicos Islands
  • +
  • Tuvalu
  • +
  • Uganda
  • +
  • Ukraine
  • +
  • United Arab Emirates
  • +
  • United Kingdom
  • +
  • United States
  • +
  • United States Minor Outlying Islands
  • +
  • Uruguay
  • +
  • Uzbekistan
  • +
  • Vanuatu
  • +
  • Venezuela
  • +
  • Vietnam
  • +
  • Virgin Islands, British
  • +
  • Virgin Islands, U.S.
  • +
  • Wallis and Futuna
  • +
  • Western Sahara
  • +
  • Yemen
  • +
  • Zambia
  • +
  • Zimbabwe
  • +
+

enforcer-settings

+ ++++++ + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
enforcerStateCookiesobjectThis section defines the properties of the enforcer state cookies.
+

enforcerStateCookies

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
httpOnlyAttributebooleanSpecifies, when true, that the system adds the state cookie HttpOnly attribute.

sameSiteAttribute

string

The value for the state cookie SameSite attribute:

+
+
    +
  • none: The SameSite attribute is never added to the state cookie.
  • +
  • strict: Cookie will only be sent in a first-party context. In user terms, the cookie will only be sent if the site for the cookie matches the site currently shown in the browser's URL bar.
  • +
  • lax: Cookies will be sent with top level navigation
  • +
  • none-value: Cookies will be sent in a third-party context.
  • +
+
    +
  • lax
  • +
  • none
  • +
  • none-value
  • +
  • strict
  • +

secureAttribute

string

The value for the state cookie Secure attribute:

+
+
    +
  • always: Always add the Secure attribute to the state cookie.
  • +
  • never: The Secure attribute is never added to the state cookie.
  • +
+
    +
  • always
  • +
  • never
  • +
+

filetypes

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
allowedbooleanDetermines whether the file type is allowed or disallowed. In either of these cases the VIOL_FILETYPE violation is issued (if enabled) for an incoming request- +
    +
  1. No allowed file type matched the file type of the request.
  2. +
  3. The file type of the request matched a disallowed file type.
  4. +
checkPostDataLengthbooleanDetermines whether to enforce maximum length restriction for the body, a.k.a. "POST data" part of the requests that match the respective file type. The maximum length is determined by postDataLength attribute. Although named "POST data", this applies to any content type and not restricted to POST requests, e.g. PUT requests are also checked. This attribute is relevant only to allowed file types.
checkQueryStringLengthbooleanDetermines whether to enforce maximum length restriction for the query string of the requests that match the respective file type. The maximum length is determined by queryStringLength attribute. This attribute is relevant only to allowed file types.
checkRequestLengthbooleanDetermines whether to enforce maximum length restriction for the total length of requests that match the respective file type. The maximum length is determined by requestLength attribute. This attribute is relevant only to allowed file types.
checkUrlLengthbooleanDetermines whether to enforce maximum length restriction for the URL of the requests that match the respective file type. The URL does not include the query string, past the &. The maximum length is determined by urlLength attribute. This attribute is relevant only to allowed file types.

name

string

Specifies the file type name as appearing in the URL extension. Names can be one of the following according to the type attribute:

+
+
    +
  • Explicit - Specifies that the name is the literal file extension to which the file type refers. The type attribute has to be "explicit".
  • +
  • No Extension - Specifies the empty file type, lacking file extension. For this the reserved string no_ext should be used. The type attribute has to be "explicit".
  • +
  • Wildcard - Specifies that any file extension that matches the wildcard expression is matched to this file type in the policy. The type attribute has to be "wildcard".
  • +
+
+

The syntax for wildcard entities is based on shell-style wildcard characters. The list below describes the wildcard characters that you can use so that the entity name can match multiple objects.

+
+
    +
  • *: Matches all characters
  • +
  • ?: Matches any single character
  • +
  • [abcde]: Matches exactly one of the characters listed
  • +
  • [!abcde]: Matches any character not listed
  • +
  • [a-e]: Matches exactly one character in the range
  • +
  • [!a-e]: Matches any character not in the range
  • +
+
+

Note: Wildcards do not match regular expressions. Do not use a regular expression as a wildcard.

postDataLengthinteger minimum: 0The maximum length in bytes of the body (POST data) of the request matching the file type. Enforced only if checkPostDataLength is set to true. If the value is exceeded then VIOL_POST_DATA_LENGTH violation is issued. This attribute is relevant only to allowed file types.
queryStringLengthinteger minimum: 0The maximum length in bytes of the query string of the request matching the file type. Enforced only if checkQueryStringLength is set to true. If the value is exceeded then VIOL_QUERY_STRING_LENGTH violation is issued. This attribute is relevant only to allowed file types.
requestLengthinteger minimum: 0The maximum total length in bytes of the request matching the file type. Enforced only if checkRequestLength is set to true. If the value is exceeded then VIOL_REQUEST_LENGTH violation is issued. This attribute is relevant only to allowed file types.
responseCheckbooleanDetermines whether the responses to requests that match the respective file types are inspected for attack signature detection. This attribute is relevant only to allowed file types.
responseCheckLengthinteger minimum: 0 maximum: 10000000000Determines how much of the response body will be checked for signatures. When value is set to 0, only the header will be checked. This attribute is relevant only to allowed file types.
typestringDetermines the type of the name attribute. Only when setting the type to wildcard will the special wildcard characters in the name be interpreted as such.
    +
  • explicit
  • +
  • wildcard
  • +
urlLengthinteger minimum: 0The maximum length in bytes of the URL of the request matching the file type, excluding the query string. Enforced only if checkUrlLength is set to true. If the value is exceeded then VIOL_URL_LENGTH violation is issued. This attribute is relevant only to allowed file types.
wildcardOrderinteger
+

general

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
allowedResponseCodesarray of integersYou can specify which responses a security policy permits. By default, the system accepts all response codes from 100 to 399 as valid responses. Response codes from 400 to 599 are considered invalid unless added to the Allowed Response Status Codes list. By default, 400, 401, 404, 407, 417, and 503 are on the list as allowed HTTP response status codes.
customXffHeadersarray of stringsIf you require the system to trust a server further than one hop toward the client (the last proxy traversed), you can use the Custom XFF Headers setting to define a specific header that is inserted closer to, or at the client, that the system will trust. Additionally, if you require the system to trust a proxy server that uses a different header name than the X-Forwarded-For header name, you can add the desired header name to the Custom XFF Headers setting. When adding a custom header, the X-Forwarded-For header is not trusted anymore. In case the X-Forwarded-For header is to be trusted along with other headers, you must add it to the custom headers list.

maskCreditCardNumbersInRequest

boolean

When enabled, the security policy masks credit card numbers that appear in any part of requests. The system does not mask the information in the actual requests, but rather in various logs:

+
    +
  • Credit card numbers appearing in entity names are masked in the requests of the Requests log.
  • +
+

* Credit card numbers appearing in entity values are masked wherever requests can be viewed: the Requests log, and violation details within that log. This setting is enabled by default, and exists in addition to masking parameters defined as containing sensitive information.

trustXff

boolean

When enabled, the system has confidence in an XFF (X-Forwarded-For) header in the request. When disabled, that the system does not have confidence in an XFF header in the request. The default setting is disabled.

+

Select this option if the system is deployed behind an internal or other trusted proxy. Then, the system uses the IP address that initiated the connection to the proxy instead of the internal proxy's IP address.

+

Leave this option disabled if you think the HTTP header may be spoofed, or crafted, by a malicious client. With this setting disabled, if the system is deployed behind an internal proxy, the system uses the internal proxy's IP address instead of the client's IP address.

+

graphql-profiles

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
attackSignaturesCheckboolean
defenseAttributesobject
descriptionstring
hasIdlFilesboolean
idlFilesarray of objects
metacharElementCheckboolean
metacharOverridesarray of objects
namestring
responseEnforcementobject
sensitiveDataarray of objects
signatureOverridesarray of objects
+

defenseAttributes

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
allowIntrospectionQueriesboolean
maximumBatchedQueries
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
maximumQueryCost
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
maximumStructureDepth
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
maximumTotalLength
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
maximumValueLength
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
tolerateParsingWarningsboolean
+

idlFiles

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
idlFileobject
isPrimaryboolean
+

idlFile

+ ++++++ + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
+

metacharOverrides

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
isAllowedboolean
metacharstring
+

responseEnforcement

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
blockDisallowedPatternsboolean
disallowedPatternsarray of strings
+

sensitiveData

+ ++++++ + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
parameterNamestring
+

signatureOverrides

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
enabledboolean
namestring
signatureIdinteger
tagstring
+

grpc-profiles

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
associateUrlsboolean
attackSignaturesCheckboolean
decodeStringValuesAsBase64string
    +
  • disabled
  • +
  • enabled
  • +
defenseAttributesobject
descriptionstring
hasIdlFilesboolean
idlFilesarray of objects
metacharElementCheckboolean
namestring
signatureOverridesarray of objects
+

defenseAttributes

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
allowUnknownFieldsboolean
maximumDataLength
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
+

idlFiles

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
idlFileobject
importUrlstring
isPrimaryboolean
primaryIdlFileNamestring
+

idlFile

+ ++++++ + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
+

signatureOverrides

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
enabledboolean
namestring
signatureIdinteger
tagstring
+

header-settings

+ ++++++ + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
maximumHttpHeaderLength
    +
  • integer minimum: 1 maximum: 65536
  • +
  • string
  • +
Maximum HTTP Header Length must be greater than 0 and less than 65536 bytes (64K). Note: if 0 or any are set, then no restriction on the HTTP header length is applied.
    +
  • Integer values
  • +
  • "any"
  • +
+

headers

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
allowEmptyValueboolean
allowRepeatedOccurrencesboolean
autoDetectBinaryValueboolean
checkSignaturesboolean

decodeValueAsBase64

string

Specifies whether the the system should detect or require values to be Base64 encoded:

+
+
    +
  • disabled: the value will not be decoded as Base64 content.
  • +
  • enabled: the value will be checked whether it can be decoded as Base64 and, if so, security checks will be performed on the decoded value.
  • +
  • required: the value must be decoded as Base64, and security checks will be performed on the decoded value.
  • +
+
    +
  • disabled
  • +
  • enabled
  • +
  • required
  • +
htmlNormalizationboolean
mandatoryboolean
maskValueInLogsbooleanSpecifies, when true, that the headers's value will be masked in the request log.

name

string

Specifies the HTTP header name. The header name length is limited to 254 characters.

+

Names can be one of the following according to the type attribute:

+
+
    +
  • explicit: Specifies that the header has a specific name and is not a wildcard entity. The name of the header exactly as you expect it to appear in the request.
  • +
  • wildcard: Specifies that any header that matches the listed wildcard expression should be treated according to the wildcard attributes.
  • +
+
+

The syntax for wildcard entities is based on shell-style wildcard characters. The list below describes the wildcard characters that you can use so that the entity name can match multiple objects.

+
+
    +
  • *: Matches all characters
  • +
  • ?: Matches any single character
  • +
  • [abcde]: Matches exactly one of the characters listed
  • +
  • [!abcde]: Matches any character not listed
  • +
  • [a-e]: Matches exactly one character in the range
  • +
  • [!a-e]: Matches any character not in the range
  • +
+
+

Note: Wildcards do not match regular expressions. Do not use a regular expression as a wildcard.

normalizationViolationsboolean
percentDecodingboolean
signatureOverridesarray of objectsArray of signature overrides. Specifies attack signatures whose security policy settings are overridden for this header, and which action the security policy takes when it discovers a request for this header that matches these attack signatures.
typestringDetermines the type of the name attribute. Only when setting the type to wildcard will the special wildcard characters in the name be interpreted as such.
    +
  • explicit
  • +
  • wildcard
  • +
urlNormalizationboolean
wildcardOrderintegerSpecifies the order index for wildcard header matching. Wildcard headers with lower wildcard order will get checked for a match prior to headers with higher wildcard order.
+

signatureOverrides

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
enabledbooleanSpecifies, when true, that the overridden signature is enforced
namestringThe signature name which, along with the signature tag, identifies the signature.
signatureIdintegerThe signature ID which identifies the signature.
tagstringThe signature tag which, along with the signature name, identifies the signature.
+

host-names

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
includeSubdomainsboolean
namestring
+

idl-files

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
contentsstring
fileNamestring
isBase64boolean
+

ip-address-lists

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values

blockRequests

string

+
Specifies how the system responds to blocking requests sent from this IP address list.
+
    +
  • Policy Default: Specifies that the policy enforcementMode will be used for requests from this IP address list.
  • +
  • Never Block: Specifies that the system does not block requests sent from this IP address list, even if your security policy is configured to block all traffic.
  • +
  • Always Block: Specifies that the system blocks requests sent from this IP address list.
  • +
+
+
+

Optional, if absent Policy Default is used.

    +
  • always
  • +
  • never
  • +
  • policy-default
  • +
descriptionstringSpecifies a brief description of the IP address list. Optional
ipAddressesarray of objectsSpecifies the IP addresses. Use CIDR notation for subnet definition.
matchOrderintegerSpecifies the order matching index between different IP Address Lists. If unspecified, the order is implicitly as the lists appear in the policy. IP Address Lists with a lower matchOrder will be checked for a match prior to items with higher matchOrder.
namestringSpecifies the name of ip address list.
neverLogRequestsbooleanSpecifies when enabled that the system does not log requests or responses sent from this IP address list, even if the traffic is illegal, and even if your security policy is configured to log all traffic. Optional, if absent default value is false.
setGeolocationstringSpecifies a geolocation to be associated for this IP address list. This will force the IP addresses in the list to be considered as though they are in that geolocation. This applies to blocking via "disallowed-geolocations" and to logging. Optional
+

ipAddresses

+ ++++++ + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
ipAddressstringSpecifies the IP address. Use CIDR notation for subnet definition.
+

ip-intelligence

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
enabledboolean
ipIntelligenceCategoriesarray of objects
+

ipIntelligenceCategories

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
alarmboolean
blockboolean
categorystring
    +
  • Anonymous Proxy
  • +
  • BotNets
  • +
  • Cloud-based Services
  • +
  • Denial of Service
  • +
  • Infected Sources
  • +
  • Mobile Threats
  • +
  • Phishing Proxies
  • +
  • Scanners
  • +
  • Spam Sources
  • +
  • Tor Proxies
  • +
  • Web Attacks
  • +
  • Windows Exploits
  • +
+

json-profiles

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
attackSignaturesCheckboolean
defenseAttributesobject
descriptionstring
handleJsonValuesAsParametersboolean
hasValidationFilesboolean
metacharElementCheckboolean
metacharOverridesarray of objects
namestring
signatureOverridesarray of objects
validationFilesarray of objects
+

defenseAttributes

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
maximumArrayLength
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
maximumStructureDepth
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
maximumTotalLengthOfJSONData
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
maximumValueLength
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
tolerateJSONParsingWarningsboolean
+

metacharOverrides

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
isAllowedboolean
metacharstring
+

signatureOverrides

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
enabledboolean
namestring
signatureIdinteger
tagstring
+

validationFiles

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
importUrlstring
isPrimaryboolean
jsonValidationFileobject
+

jsonValidationFile

+ ++++++ + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
+

json-validation-files

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
contentsstring
fileNamestring
isBase64boolean
+

login-enforcement

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
authenticatedUrlsarray of strings
expirationTimePeriod
    +
  • integer minimum: 0 maximum: 99999
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "disabled"
  • +
logoutUrlsarray of objects
+

logoutUrls

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
requestContainsstring
requestOmitsstring
urlobject
+

login-pages

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
accessValidationobjectAccess Validation define validation criteria for the login page response. If you define more than one validation criteria, the response must meet all the criteria before the system allows the user to access the application login URL.

authenticationType

string

Authentication Type is method the web server uses to authenticate the login URL's credentials with a web user.

+
+
    +
  • none: The web server does not authenticate users trying to access the web application through the login URL. This is the default setting.
  • +
  • form: The web application uses a form to collect and authenticate user credentials. If using this option, you also need to type the user name and password parameters written in the code of the HTML form.
  • +
  • http-basic: The user name and password are transmitted in Base64 and stored on the server in plain text.
  • +
  • http-digest: The web server performs the authentication; user names and passwords are not transmitted over the network, nor are they stored in plain text.
  • +
  • ntlm: Microsoft LAN Manager authentication (also called Integrated Windows Authentication) does not transmit credentials in plain text, but requires a continuous TCP connection between the server and client.
  • +
  • ajax-or-json-request: The web server uses JSON and AJAX requests to authenticate users trying to access the web application through the login URL. For this option, you also need to type the name of the JSON element containing the user name and password.
  • +
  • request-body: The web server uses the request body to authenticate users trying to access the web application through the login URL. This allows brute force login detection using, for example, SAML authentication used on Microsoft Federation Services for SSO which uses SOAP API to login.
  • +
+
    +
  • ajax-or-json-request
  • +
  • form
  • +
  • http-basic
  • +
  • http-digest
  • +
  • none
  • +
  • ntlm
  • +
  • request-body
  • +
passwordParameterNamestringA name of parameter which will contain password string.
passwordRegexstringPCRE regular expression for capturing the password. The regular expression must include exactly one capturing group (in rounded parentheses) for the value of the password. For example: "pwd=(w+)". The entered expression is validated and any invalid code is noted and must be corrected. Note: This setting is only relevant if authenticationType is request-body.
urlobjectURL string used for login page.
usernameParameterNamestringA name of parameter which will contain username string.
usernameRegexstringPCRE regular expression for capturing the username. The regular expression must include exactly one capturing group (in rounded parentheses) for the value of the username. For example: "user_id=(w+)". The entered expression is validated and any invalid code is noted and must be corrected. Note: This setting is only relevant if authenticationType is request-body.
+

accessValidation

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
cookieContainsstringA defined domain cookie name that the response to the login URL must match to permit user access to the authenticated URL.
headerContainsstringA header name and value that the response to the login URL must match to permit user access to the authenticated URL.
headerContainsMatchConditionstring
    +
  • exact
  • +
  • regex
  • +
headerOmitsstringA header name and value that indicates a failed login attempt and prohibits user access to the authenticated URL.
headerOmitsMatchConditionstring
    +
  • exact
  • +
  • regex
  • +
parameterContainsstringA parameter that must exist in the login URL's HTML body to allow access to the authenticated URL.
responseContainsstringA string that must appear in the response for the system to allow the user to access the authenticated URL; for example, "Successful Login".
responseHttpStatusstringAn HTTP response code that the server must return to the user to allow access to the authenticated URL; for example, "200".
responseHttpStatusOmitsarray of stringsAn HTTP response code that indicates a failed login attempt and prohibits user access to the authenticated URL.
responseOmitsstringA string that indicates a failed login attempt and prohibits user access to the authenticated URL; for example, "Authentication failed".
+

methods

+ ++++++ + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
namestring
+

override-rules

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values

actionType

string

The action to take when the override rule is matched. Possible values are:

+
+
    +
  • extend-policy: The override policy inherits the containing policy settings, allowing only the required settings to be overridden.
  • +
  • replace-policy: The override policy must be a valid declarative policy that includes a name, template and all necessary settings.
  • +
  • violation: The request is blocked and a the VIOL_RULE is logged based on the provided violation settings.
  • +
+
    +
  • extend-policy
  • +
  • replace-policy
  • +
  • violation
  • +

condition

string

Specifies the condition under which the override rule should be applied.

+

Example: "clientIp != '10.0.0.5' and userAgent.lower().contains('WebRobot')"

+

Condition Syntax:

+
+
    +
  • The condition consists of one or more clauses separated by and or or.
  • +
+

Example: "clientIp == '10.0.0.5' and (host.startsWith('internal') or uri.contains('api'))"

+
    +
  • Each clause can optionally start with not - to negate the expression.
  • +
+

Example: "not clientIp == '127.0.0.1'"

+
    +
  • not can also be used to negate a parenthesized expression.
  • +
+

Example: "not (method == 'GET' or method == 'PUT')"

+
    +
  • A clause can be a simple comparison between two value expressions, or a boolean function applied to a literal value.
  • +
+
+

Supported comparison operators:

+
+
    +
  • == - Checks for equality between two value expressions.
  • +
  • != - Checks for inequality between two value expressions.
  • +
+

Example: "clientIp != '10.0.0.5'" (equivalent to "not clientIp == '10.0.0.5'")

+
+

Supported boolean functions:

+
+
    +
  • matches: Performs an exact match of a value expression, equivalent to ==.
  • +
  • startsWith: Checks if a value expression starts with a specific substring.
  • +
  • contains: Checks if a value expression contains a specific substring.
  • +
+

Example: "uri.startsWith('/api')"

+
+

Note: Functions "startsWith" and "contains" are not applicable to the "clientIp" attribute. Regular expressions are not supported.

+
+
    +
  • Value expressions can be a request attribute, literal value, or a value function.
  • +
  • A literal can be a string value enclosed in single quotes, or can be the keyword "null" without quotes.
  • +
+

Example: "userAgent == null"

+
+

Supported value functions:

+
+
    +
  • lower: Any boolean function applied on the resulting string will be case insensitive. Applicable to ANSI characters only.
  • +
+

Example: "uri.lower().contains('BaR')" will match the URI "/Foo/bAr"

+
+

Request Attributes:

+
+
    +
  • clientIp: Client IP address in canonical IPv4 or IPv6 format or ip-address-list. Use CIDR notation for subnet definition. Example: 192.168.1.2 or fd00:1::/48. If trustXff (X-Forwarded-For) is enabled in the containing policy, then the value is taken from the configured header (XFF or other). The only supported boolean function for the clientIP attribute is matches.
  • +
  • host: The value of the Host header
  • +
  • method: The HTTP method in the request
  • +
  • uri: The URI (path part) of the request
  • +
  • userAgent: The value of the User-Agent header, or null (without quotes) if not present
  • +
  • geolocation: The geolocation of the client IP address. The value is the ISO 3166 two-letter code of the respective country.
  • +
  • parameters['<name>']: (map-type) The value of the specified parameter name (limited to query string parameters). Example: "parameters['id'] == '11'"
  • +
  • cookies['<name>']: (map-type) The value of the specified cookie name. Example: "cookies['Path'].contains('product')"
  • +
  • headers['<name>']: (map-type) The value of the specified header name. Example: "headers['Accept'].startsWith('application')"
  • +
+
+
+
Note:
+
    +
  • The "headers['<name>']" attribute does not support 'Cookie' as a header name.
  • +
  • Attribute "clientIp" supports using "ipAddressLists" in condition: "clientIp.matches(ipAddressLists['<name>'])"
  • +
+
+
namestringThe unique name of the override rule. Cannot contain spaces or special characters.
overridestringThe overriding security policy definition.
violationobjectContains the details of the raised VIOL_RULE violation. Mandatory if action-type is violation.
+

violation

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
alarmbooleanWhether the violation should be marked in the security log and cause the request to be classified as "illegal".
attackTypeobjectThe attack type associated with the violation in the present rule. This is reflected in the security log. Mandatory.
blockbooleanWhether the violation should cause the request to be blocked. On other words: the block flag of the VIOL_RULE for the present rule.
descriptionstringTextual description of the violation in the present rule. Limited to 200 characters. Not Mandatory.
ratinginteger minimum: 3 maximum: 5The violation rating that the present rule violation will induce. In other words, the violation rating of the request will be the maximum between this value and the calculated value based on the other violations in the request. If not specified and there is no other violation, then the VR is 3.
+

attackType

+ ++++++ + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
namestringThe name of the attack type. Mandatory.
+

parameters

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
allowEmptyValuebooleanDetermines whether an empty value is allowed for a parameter.
allowRepeatedParameterNamebooleanDetermines whether multiple parameter instances with the same name are allowed in one request.

arraySerializationFormat

string

Specifies type of serialization for array of primitives parameter. Serialization defines how multiple values are delimited - format that can be transmitted and reconstructed later:

+
+
    +
  • pipe: pipe-separated values. Array color=["blue","black"] -> color=blue|black.
  • +
  • form: ampersand-separated values. Array color=["blue","black"] -> color=blue,black.
  • +
  • matrix: semicolon-prefixed values. Array color=["blue","black"] -> ;color=blue,black.
  • +
  • tsv: tab-separated values. Array color=["blue","black"] -> color=bluetblack.
  • +
  • csv: comma-separated values. Array color=["blue","black"] -> color=blue,black.
  • +
  • label: dot-prefixed values. Array color=["blue","black"] -> .blue.black.
  • +
  • multi: multiple parameter instances rather than multiple values. Array color=["blue","black"] -> color=blue&color=black.
  • +
  • ssv: space-separated values. Array color=["blue","black"] -> color=blue black.
  • +
  • multipart: defines array of files.
  • +
+
+

Notes:

+
+
    +
  • This attribute is relevant only for parameters with array valueType.
  • +
  • multi and form serializations can be defined for parameter with query, form-data or cookie locations only.
  • +
  • multipart serialization can be defined for parameter with form-data location only.
  • +
  • matrix and label serializations can be defined for parameter with path location only.
  • +
+
    +
  • csv
  • +
  • form
  • +
  • label
  • +
  • matrix
  • +
  • multi
  • +
  • multipart
  • +
  • pipe
  • +
  • ssv
  • +
  • tsv
  • +
arrayUniqueItemsCheckbooleanDetermines whether items in an array parameter must be unique. This attribute is relevant only for parameters with array valueType.
attackSignaturesCheckbooleanDetermines whether attack signatures and threat campaigns must be detected in a parameter's value. This attribute is relevant only for parameters with alpha-numeric or binary dataType.
checkMaxItemsInArraybooleanDetermines whether an array parameter has a restricted maximum number of items. This attribute is relevant only for parameters with array valueType.
checkMaxValuebooleanDetermines whether the parameter has a restricted maximum value. This attribute is relevant only for parameters with integer or decimal dataType.
checkMaxValueLengthbooleanDetermines whether a parameter has a restricted maximum length for value.
checkMetacharsbooleanDetermines whether disallowed metacharacters must be detected in a parameter's name. This attribute is relevant only for wildcard parameters with alpha-numeric dataType.
checkMinItemsInArraybooleanDetermines whether an array parameter has a restricted minimum number of items. This attribute is relevant only for parameters with array valueType.
checkMinValuebooleanDetermines whether a parameter has a restricted minimum value. This attribute is relevant only for parameters with integer or decimal dataType.
checkMinValueLengthbooleanDetermines whether a parameter has a restricted minimum length for value.
checkMultipleOfValuebooleanDetermines whether a parameter's value is a multiple of a number defined in multipleOf. This attribute is relevant only for parameters with integer or decimal dataType.
contentProfileobject

dataType

string

Specifies data type of parameter's value:

+
+
    +
  • alpha-numeric: specifies that the value of parameter can be any text consisting of letters, digits, and the underscore character.
  • +
  • binary: specifies there is no text limit for the value of a parameter (length checks only).
  • +
  • phone: specifies that the value of a parameter can be text in telephone number format only.
  • +
  • email: specifies that the value of a parameter must be text in email format only.
  • +
  • boolean: specifies that the value of a parameter must be boolean (only true and false values are allowed).
  • +
  • integer: specifies that the value of a parameter must be whole numbers only (no decimals).
  • +
  • decimal: specifies that the value of a parameter is numbers only and can include decimals.
  • +
+
+
+
Notes:
+
    +
  • This attribute is relevant for parameters with array or user-input valueType only.
  • +
+
+
    +
  • alpha-numeric
  • +
  • binary
  • +
  • phone
  • +
  • email
  • +
  • boolean
  • +
  • integer
  • +
  • decimal
  • +

decodeValueAsBase64

string

Specifies whether the the system should detect or require values to be Base64 encoded:

+
+
    +
  • disabled: the value will not be decoded as Base64 content.
  • +
  • enabled: the value will be checked whether it can be decoded as Base64 and, if so, security checks will be performed on the decoded value.
  • +
  • required: the value must be decoded as Base64. Security checks will be performed on the decoded value.
  • +
+
+
+
Notes:
+
    +
  • This attribute is relevant for parameters with binary, auto-detect, or user-input valueType only.
  • +
+
+
    +
  • disabled
  • +
  • enabled
  • +
  • required
  • +
disallowFileUploadOfExecutablesbooleanDetermines whether a parameter's value cannot have binary executable content. This attribute is relevant only for parameters with binary dataType.
enableRegularExpressionbooleanDetermines whether the parameter value includes the pattern defined in regularExpression. This attribute is relevant only for parameters with alpha-numeric dataType.
exclusiveMaxbooleanDetermines whether the maximum value defined in maximumValue attribute is exclusive. This attribute is relevant only if checkMaxValue is set to true.
exclusiveMinbooleanDetermines whether a minimum value defined in minimumValue attribute is exclusive. This attribute is relevant only if checkMinValue is set to true.
explodeObjectSerializationbooleanSpecifies whether an array or object parameters should have separate values for each array item or object property. This attribute is relevant only if objectSerializationStyle is defined. +
+
Notes:
+
    +
  • This attribute is not relevant for parameters with deep-object, space-delimited or pipe-delimited objectSerializationStyle.
  • +
+
+
hostNameRepresentationstring
    +
  • any
  • +
  • domain-name
  • +
  • ip-address
  • +
isCookiebooleanDetermines whether a parameter is located in the value of Cookie header. parameterLocation attribute is ignored if isCookie is set to true.
isHeaderbooleanDetermines whether a parameter is located in headers as one of the headers. parameterLocation attribute is ignored if isHeader is set to true.
levelstringSpecifies whether the parameter is associated with a URL, a flow, or neither.
    +
  • global
  • +
  • url
  • +
mandatorybooleanDetermines whether a parameter must exist in the request.
maxItemsInArrayinteger minimum: 0Determines the restriction for the maximum number of items in an array parameter. This attribute is relevant only if checkMaxItemsInArray is set to true.
maximumLengthinteger minimum: 0Determines the restriction for the maximum length of parameter's value. This attribute is relevant only if checkMaxValueLength is set to true.
maximumValuenumberDetermines the restriction for the maximum value of parameter. This attribute is relevant only if checkMaxValue is set to true.
metacharsOnParameterValueCheckbooleanDetermines whether disallowed metacharacters must be detected in a parameter's value. This attribute is relevant only for parameters with alpha-numeric dataType.
minItemsInArrayinteger minimum: 0Determines the restriction for the minimum number of items in an array parameter. This attribute is relevant only if checkMinItemsInArray is set to true.
minimumLengthinteger minimum: 0Determines the restriction for the minimum length of parameter's value. This attribute is relevant only if checkMinValueLength is set to true.
minimumValuenumberDetermines the restriction for the minimum value of a parameter. This attribute is relevant only if checkMinValue is set to true.
multipleOfnumberDetermines the number by which a parameter's value is divisible without remainder. This number must be positive and it may be a floating-point number. This attribute is relevant only if checkMultipleOfValue is set to true.

name

string

Specifies the name of a parameter which must be permitted in requests. Format of parameter name attribute differs depending on type attribute: - explicit type: name of permitted parameter in request should literally match. - wildcard type: name of permitted parameter in request should match wildcard expression.

+

The syntax for wildcard entities is based on shell-style wildcard characters. The list below describes the wildcard characters that you can use so that the entity name can match multiple objects.

+
+
    +
  • *: Matches all characters
  • +
  • ?: Matches any single character
  • +
  • [abcde]: Matches exactly one of the characters listed
  • +
  • [!abcde]: Matches any character not listed
  • +
  • [a-e]: Matches exactly one character in the range
  • +
  • [!a-e]: Matches any character not in the range
  • +
+
+
+
Notes:
+
    +
  • Wildcards do not match regular expressions. Do not use a regular expression as a wildcard.
  • +
  • Empty parameter name is allowed for explicit type
  • +
+
+
nameMetacharOverridesarray of objectsDetermines metacharacters whose security policy settings are overridden for this parameter, and which action the security policy takes when it discovers a request for this parameter that has these metacharacters in the name. This attribute is relevant only if checkMetachars is set to true.

objectSerializationStyle

string

Specifies the type of serialization for an object or complex array parameter. Serialization defines how multiple values are delimited - format that can be transmitted and reconstructed later:

+
+
    +
  • pipe-delimited: pipe-separated values. Object color={"R":100,"G":200} -> color=RG|200.
  • +
  • form: ampersand-separated values. Object color={"R":100,"G":200} -> color=R,100,G,200 if explodeObjectSerialization set to false or -> R=100&G=200 if explodeObjectSerialization set to true.
  • +
  • space-delimited: space-separated values. Object color={"R":100,"G":200} -> color=R 100 G 200.
  • +
  • deep-object: rendering nested objects. Object color={"R":100,"G":200} -> color[R]=100&color[G]=200.
  • +
  • matrix: semicolon-prefixed values. Object color={"R":100,"G":200} -> ;color=R,100,G,200 if explodeObjectSerialization set to false or -> ;R=100;G=200 if explodeObjectSerialization set to true.
  • +
  • simple: comma-separated values. Object color={"R":100,"G":200} -> R,100,G,200 if explodeObjectSerialization set to false or -> R=100,G=200 if explodeObjectSerialization set to true.
  • +
  • label: dot-prefixed values. Object color={"R":100,"G":200} -> .R.100.G.200 if explodeObjectSerialization set to false or -> .R=100.G=200 if explodeObjectSerialization set to true.
  • +
+
+

Notes:

+
+
    +
  • This attribute is relevant only for parameters with object or openapi-array valueType.
  • +
  • form serialization can be defined for a parameter with query, form-data or cookie locations only.
  • +
  • matrix and label serializations can be defined for an array parameter with path location only.
  • +
  • simple serializations can be defined for a parameter with path and header locations only.
  • +
  • deep-object serialization can be defined for a parameter with query or form-data locations only.
  • +
+
    +
  • deep-object
  • +
  • form
  • +
  • label
  • +
  • matrix
  • +
  • pipe-delimited
  • +
  • simple
  • +
  • space-delimited
  • +
parameterEnumValuesarray of stringsDetermines the set of possible parameter's values. This attribute is not relevant for parameters with phone, email or binary dataType.

parameterLocation

string

Specifies location of parameter in request:

+
+
    +
  • any: in query string, in POST data (body) or in URL path.
  • +
  • query: in query string.
  • +
  • form-data: in POST data (body).
  • +
  • cookie: in value of Cookie header.
  • +
  • path: in URL path.
  • +
  • header: in request headers.
  • +
+
+
+
Notes:
+
    +
  • path location can be defined for parameter with global level only.
  • +
  • path, header and cookie location can be defined for parameter with explicit type only.
  • +
  • header and cookie location cannot be defined for parameter with empty name.
  • +
+
+
    +
  • any
  • +
  • cookie
  • +
  • form-data
  • +
  • header
  • +
  • path
  • +
  • query
  • +
regularExpressionstringDetermines a positive regular expression (PCRE) for a parameter's value. This attribute is relevant only if enableRegularExpression is set to true. +
+
Notes:
+
    +
  • The length of a regular expression is limited to 254 characters.
  • +
+
+
sensitiveParameterbooleanDetermines whether a parameter is sensitive and must be not visible in logs nor in the user interface. Instead of the actual value, a string of asterisks is shown for this parameter. Use it to protect sensitive user input, such as a password or a credit card number, in a validated request.
signatureOverridesarray of objectsDetermines attack signatures whose security policy settings are overridden for this parameter, and which action the security policy takes when it discovers a request for this parameter that matches these attack signatures. This attribute is relevant only if signatureOverrides is set to true.
staticValuesarray of stringsDetermines the set of possible parameter's values. This attribute is relevant for parameters with static-content valueType only.
typestringSpecifies the type of the name attribute.
    +
  • explicit
  • +
  • wildcard
  • +
urlobject
valueMetacharOverridesarray of objectsDetermines metacharacters whose security policy settings are overridden for this parameter, and which action the security policy takes when it discovers a request parameter that has these metacharacters in its value. This attribute is relevant only if metacharsOnParameterValueCheck is set to true.

valueType

string

Specifies type of parameter's value:

+
+
    +
  • object: the parameter's value is complex object defined by JSON schema.
  • +
  • dynamic-content: the parameter's content changes dynamically.
  • +
  • openapi-array: the parameter's value is complex array defined by JSON schema.
  • +
  • ignore: the system does not perform validity checks on the value of the parameter.
  • +
  • static-content: the parameter has a static, or pre-defined, value(s).
  • +
  • json: the parameter's value is JSON data.
  • +
  • array: the parameter's value is array of primitives.
  • +
  • user-input: the parameter's value is provided by user-input.
  • +
  • xml: the parameter's value is XML data.
  • +
  • auto-detect: the parameter's value can be user-input, XML data or JSON data. The system automatically classifies the type of value.
  • +
  • dynamic-parameter-name: the parameter's name changes dynamically.
  • +
+
+
+
Notes:
+
    +
  • dynamic-parameter-name value type can be defined for a parameter with flow level and explicit type only.
  • +
  • dynamic-content value type can be defined for a parameter with explicit type only.
  • +
+
+
    +
  • array
  • +
  • auto-detect
  • +
  • ignore
  • +
  • json
  • +
  • object
  • +
  • openapi-array
  • +
  • static-content
  • +
  • user-input
  • +
  • xml
  • +
wildcardOrderintegerSpecifies the order in which wildcard entities are organized. Matching of an enforced parameter with a defined wildcard parameter happens based on order from smaller to larger.
+

contentProfile

+ ++++++ + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
contentProfileobject
+

contentProfile

+ ++++++ + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
namestring
+

nameMetacharOverrides

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
isAllowedbooleanSpecifies permission of metachar - when false, then character is prohibited.
metacharstringSpecifies character in hexadecimal format with special allowance.
+

signatureOverrides

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
enabledbooleanSpecifies, when true, that the overridden signature is enforced
namestringThe signature name which, along with the signature tag, identifies the signature.
signatureIdintegerThe signature ID which identifies the signature.
tagstringThe signature tag which, along with the signature name, identifies the signature.
+

valueMetacharOverrides

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
isAllowedbooleanSpecifies permission of metachar - when false, then character is prohibited.
metacharstringSpecifies character in hexadecimal format with special allowance.
+

response-pages

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
ajaxActionTypestring
+
Which content, or URL, the system sends to the client as a response to an AJAX request that does not comply with the security policy.
+
    +
  • alert-popup: The system opens a message as a popup screen. Type the message the system displays in the popup screen, or leave the default text.
  • +
  • custom: A response text that will replace the frame or page which generated the AJAX request. The system provides additional options where you can type the response body you prefer.
  • +
  • redirect: The system redirects the user to a specific web page instead of viewing a response page. Type the web page's full URL path, for example, http://www.redirectpage.com.
  • +
+
+
    +
  • alert-popup
  • +
  • custom
  • +
  • redirect
  • +
ajaxCustomContentstringCustom message typed by user as a response for blocked AJAX request.
ajaxEnabledbooleanWhen enabled, the system injects JavaScript code into responses. You must enable this toggle in order to configure an Application Security Manager AJAX response page which is returned when the system detects an AJAX request that does not comply with the security policy.
ajaxPopupMessagestringDefault message provided by the system as a response for blocked AJAX request. Can be manipulated by user, but <%TS.request.ID()%> must be included in this message.
ajaxRedirectUrlstringThe system redirects the user to a specific web page instead of viewing a response page. Type the web page's full URL path, for example, http://www.redirectpage.com. To redirect the blocking page to a URL with a support ID in the query string, type the URL and the support ID in the following format: http://www.example.com/blocking_page.php?support_id=<%TS.request.ID()%>. The system replaces <%TS.request.ID%> with the relevant support ID so that the blocked request is redirected to the URL with the relevant support ID.
grpcStatusCode
    +
  • integer
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "ABORTED"
  • +
grpcStatusMessagestring
responseActionTypestring
+
Which action the system takes, and which content the system sends to the client, as a response when the security policy blocks the client request.
+
    +
  • custom: The system returns a response page with HTML code that the user defines.
  • +
  • default: The system returns the system-supplied response page in HTML. No further configuration is needed.
  • +
  • erase-cookies: The system deletes all client side domain cookies. This is done in order to block web application users once, and not from the entire web application. The system displays this text in the response page. You cannot edit this text.
  • +
  • redirect: The system redirects the user to a specific web page instead of viewing a response page. The system provides an additional setting where you can indicate the redirect web page.
  • +
  • soap-fault: Displays the system-supplied response written in SOAP fault message structure. Use this type when a SOAP request is blocked due to an XML related violation. You cannot edit this text.
  • +
+
+
    +
  • custom
  • +
  • default
  • +
  • erase-cookies
  • +
  • redirect
  • +
  • soap-fault
  • +
responseContentstringThe content the system sends to the client in response to an illegal blocked request.
responseHeaderstringThe response headers that the system sends to the client as a response to an illegal blocked request.
responsePageTypestring
+
The different types of blocking response pages which are available from the system:
+
    +
  • ajax: The system sends the AJAX Blocking Response Page when the security policy blocks an AJAX request that does not comply with the security policy.
  • +
  • default: The system sends the default response when the security policy blocks a client request.
  • +
  • graphql: The system sends the GraphQL response when the security policy blocks a client request that contains GraphQL message that does not comply with the settings of a GraphQL profile configured in the security policy.
  • +
  • grpc: The system sends the gRPC response when the security policy blocks a client request that contains gRPC message that does not comply with the settings of a gRPC profile configured in the security policy.
  • +
  • xml: The system sends the XML response page when the security policy blocks a client request that contains XML content that does not comply with the settings of an XML profile configured in the security policy.
  • +
+
+
    +
  • ajax
  • +
  • default
  • +
  • graphql
  • +
  • grpc
  • +
  • xml
  • +
responseRedirectUrlstringThe particular URL to which the system redirects the user. To redirect the blocking page to a URL with a support ID in the query string, type the URL and the support ID in the following format: http://www.example.com/blocking_page.php?support_id=<%TS.request.ID()%>. The system replaces <%TS.request.ID%> with the relevant support ID so that the blocked request is redirected to the URL with the relevant support ID.
+

sensitive-parameters

+ ++++++ + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
namestringName of a parameter whose values the system should consider sensitive.
+

server-technologies

+ ++++++ + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
serverTechnologyNamestringSpecifies the name of the selected policy. For example, PHP will add attack signatures that cover known PHP vulnerabilities.
    +
  • ASP
  • +
  • ASP.NET
  • +
  • AngularJS
  • +
  • Apache Struts
  • +
  • Apache Tomcat
  • +
  • Apache/NCSA HTTP Server
  • +
  • BEA Systems WebLogic Server
  • +
  • Backbone.js
  • +
  • CGI
  • +
  • Cisco
  • +
  • Citrix
  • +
  • CodeIgniter
  • +
  • CouchDB
  • +
  • Django
  • +
  • Elasticsearch
  • +
  • Ember.js
  • +
  • Express.js
  • +
  • Front Page Server Extensions (FPSE)
  • +
  • Google Web Toolkit
  • +
  • GraphQL
  • +
  • Handlebars
  • +
  • IBM DB2
  • +
  • IIS
  • +
  • JBoss
  • +
  • Java Servlets/JSP
  • +
  • JavaScript
  • +
  • JavaServer Faces (JSF)
  • +
  • Jenkins
  • +
  • Jetty
  • +
  • Joomla
  • +
  • Laravel
  • +
  • Lotus Domino
  • +
  • Macromedia ColdFusion
  • +
  • Macromedia JRun
  • +
  • Microsoft SQL Server
  • +
  • Microsoft Windows
  • +
  • MongoDB
  • +
  • MooTools
  • +
  • Mustache
  • +
  • MySQL
  • +
  • Neo4J
  • +
  • Nginx
  • +
  • Node.js
  • +
  • Novell
  • +
  • Oracle
  • +
  • Oracle Application Server
  • +
  • Oracle Identity Manager
  • +
  • Outlook Web Access
  • +
  • PHP
  • +
  • PostgreSQL
  • +
  • Prototype
  • +
  • Proxy Servers
  • +
  • Python
  • +
  • React
  • +
  • Redis
  • +
  • RequireJS
  • +
  • Ruby
  • +
  • SQLite
  • +
  • SSI (Server Side Includes)
  • +
  • SharePoint
  • +
  • Spring Boot
  • +
  • Svelte
  • +
  • Sybase/ASE
  • +
  • TYPO3 CMS
  • +
  • UIKit
  • +
  • Underscore.js
  • +
  • Unix/Linux
  • +
  • Vue.js
  • +
  • WebDAV
  • +
  • WordPress
  • +
  • XML
  • +
  • ZURB Foundation
  • +
  • Zend
  • +
  • ef.js
  • +
  • jQuery
  • +
+

signature-requirements

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
maxRevisionDatetimestring
minRevisionDatetimestring
tagstring
+

signature-sets

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
alarmbooleanIf enabled - when a signature from this signature set is detected in a request - the request is logged.
blockbooleanIf enabled - when a signature from this signature set is detected in a request - the request is blocked.
learnbooleanIf enabled - when a signature from this signature set is detected in a request -the policy builder creates a learning suggestion to disable it.
namestringSignature set name.
    +
  • All Response Signatures
  • +
  • All Signatures
  • +
  • Authentication/Authorization Attack Signatures
  • +
  • Buffer Overflow Signatures
  • +
  • CVE Signatures
  • +
  • Command Execution Signatures
  • +
  • Cross Site Scripting Signatures
  • +
  • Denial of Service Signatures
  • +
  • Directory Indexing Signatures
  • +
  • Generic Detection Signatures
  • +
  • Generic Detection Signatures (High Accuracy)
  • +
  • Generic Detection Signatures (High/Medium Accuracy)
  • +
  • HTTP Response Splitting Signatures
  • +
  • High Accuracy Detection Evasion Signatures
  • +
  • High Accuracy Signatures
  • +
  • Information Leakage Signatures
  • +
  • Low Accuracy Signatures
  • +
  • Medium Accuracy Signatures
  • +
  • OS Command Injection Signatures
  • +
  • OWA Signatures
  • +
  • Other Application Attacks Signatures
  • +
  • Path Traversal Signatures
  • +
  • Predictable Resource Location Signatures
  • +
  • Remote File Include Signatures
  • +
  • SQL Injection Signatures
  • +
  • Server Side Code Injection Signatures
  • +
  • Vulnerability Scan Signatures
  • +
  • WebSphere signatures
  • +
  • XML External Entities (XXE) Signatures
  • +
  • XPath Injection Signatures
  • +
signatureSetobjectDefines signature set.
stagingCertificationDatetimestring
    +
  • +
+

signatureSet

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
filterobjectSpecifies filter that defines signature set.
signaturesarray of objects
systemsarray of objects
typestring
    +
  • filter-based
  • +
  • manual
  • +
+

filter

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
accuracyFilterstring
    +
  • all
  • +
  • eq
  • +
  • ge
  • +
  • le
  • +
accuracyValuestring
    +
  • all
  • +
  • high
  • +
  • low
  • +
  • medium
  • +
attackTypeobject
hasCvestring
    +
  • all
  • +
  • no
  • +
  • yes
  • +
lastUpdatedFilterstring
    +
  • after
  • +
  • all
  • +
  • before
  • +
lastUpdatedValuestring
riskFilterstring
    +
  • all
  • +
  • eq
  • +
  • ge
  • +
  • le
  • +
riskValuestring
    +
  • all
  • +
  • high
  • +
  • low
  • +
  • medium
  • +
signatureTypestring
    +
  • all
  • +
  • request
  • +
  • response
  • +

tagFilter

string

Filter by signature tagValue.

+
+
    +
  • all: no filter applied.
  • +
  • eq: only signatures with a tag that equals tagValue are added to the signature set.
  • +
  • untagged: only signatures without a tag are added to the signature set.
  • +
+
    +
  • all
  • +
  • eq
  • +
  • untagged
  • +
tagValuestringValue for the tagFilter. Relevant only for the eq value of tagFilter.
userDefinedFilterstring
    +
  • all
  • +
  • no
  • +
  • yes
  • +
+
attackType
+ ++++++ + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
namestring
+

signatures

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
namestring
signatureIdinteger
tagstring
+

systems

+ ++++++ + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
namestring
+

signature-settings

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
minimumAccuracyForAutoAddedSignaturesstring
    +
  • high
  • +
  • low
  • +
  • medium
  • +
signatureStagingboolean
stagingCertificationDatetimestring
    +
  • +
+

signatures

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
enabledbooleanSpecifies, if true, that the signature is enabled on the security policy. When false, the signature is disable on the security policy.
learnboolean
namestringThe signature name which, along with the signature tag, identifies the signature.
performStagingbooleanSpecifies, if true, that the signature is in staging. The system does not enforce signatures in staging. Instead, the system records the request information and keeps it for a period of time (the Enforcement Readiness Period whose default time period is 7 days). Specifies, when false, that the staging feature is not in use, and that the system enforces the signatures' Learn/Alarm/Block settings immediately. (Blocking is performed only if the security policy's enforcement mode is Blocking.)
signatureIdintegerThe signature ID which identifies the signature.
tagstringThe signature tag which, along with the signature name, identifies the signature.
+

threat-campaigns

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
displayNamestring
isEnabledbooleanIf enabled - threat campaign is enforced in the security policy.
namestringName of the threat campaign.
+

urls

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
accessProfileobject
allowRenderingInFramesstringSpecifies the conditions for when the browser should allow this URL to be rendered in a frame or iframe. never: Specifies that this URL must never be rendered in a frame or iframe. The web application instructs browsers to hide, or disable, frame and iframe parts of this URL. only-same: Specifies that the browser may load the frame or iframe if the referring page is from the same protocol, port, and domain as this URL. This limits the user to navigate only within the same web application.
    +
  • never
  • +
  • only-same
  • +
allowRenderingInFramesOnlyFromstringSpecifies that the browser may load the frame or iframe from a specified domain. Type the protocol and domain in URL format for example, http://www.mywebsite.com. Do not enter a sub-URL, such as http://www.mywebsite.com/index.
attackSignaturesCheckbooleanSpecifies, when true, that you want attack signatures and threat campaigns to be detected on this URL and possibly override the security policy settings of an attack signature or threat campaign specifically for this URL. After you enable this setting, the system displays a list of attack signatures and threat campaigns.
authorizationRulesarray of objects
canChangeDomainCookieboolean
clickjackingProtectionbooleanSpecifies that the system adds the X-Frame-Options header to the domain URL's response header. This is done to protect the web application against clickjacking. Clickjacking occurs when an attacker lures a user to click illegitimate frames and iframes because the attacker hid them on legitimate visible website buttons. Therefore, enabling this option protects the web application from other web sites hiding malicious code behind them. The default is disabled. After you enable this option, you can select whether, and under what conditions, the browser should allow this URL to be rendered in a frame or iframe.
disallowFileUploadOfExecutablesboolean
html5CrossOriginRequestsEnforcementobjectThe system extracts the Origin (domain) of the request from the Origin header.
isAllowedbooleanIf true, the URLs allowed by the security policy.
mandatoryBodybooleanA request body is mandatory. This is relevant for any method acting as POST.
metacharOverridesarray of objectsTo allow or disallow specific meta characters in the name of this specific URL (and thus override the global meta character settings).
metacharsOnUrlCheckbooleanSpecifies, when true, that you want meta characters to be detected on this URL and possibly override the security policy settings of a meta character specifically for this URL. After you enable this setting, the system displays a list of meta characters.
methodstringUnique ID of a URL with a protocol type and name. Select a Method for the URL to create an API endpoint: URL + Method.
    +
  • ACL
  • +
  • BCOPY
  • +
  • BDELETE
  • +
  • BMOVE
  • +
  • BPROPFIND
  • +
  • BPROPPATCH
  • +
  • CHECKIN
  • +
  • CHECKOUT
  • +
  • CONNECT
  • +
  • COPY
  • +
  • DELETE
  • +
  • GET
  • +
  • HEAD
  • +
  • LINK
  • +
  • LOCK
  • +
  • MERGE
  • +
  • MKCOL
  • +
  • MKWORKSPACE
  • +
  • MOVE
  • +
  • NOTIFY
  • +
  • OPTIONS
  • +
  • PATCH
  • +
  • POLL
  • +
  • POST
  • +
  • PROPFIND
  • +
  • PROPPATCH
  • +
  • PUT
  • +
  • REPORT
  • +
  • RPC_IN_DATA
  • +
  • RPC_OUT_DATA
  • +
  • SEARCH
  • +
  • SUBSCRIBE
  • +
  • TRACE
  • +
  • TRACK
  • +
  • UNLINK
  • +
  • UNLOCK
  • +
  • UNSUBSCRIBE
  • +
  • VERSION_CONTROL
  • +
  • X-MS-ENUMATTS
  • +
  • *
  • +
methodOverridesarray of objectsSpecifies a list of methods that are allowed or disallowed for a specific URL. The list overrides the list of methods allowed or disallowed globally at the policy level.
methodsOverrideOnUrlCheckbooleanSpecifies, when true, that you want methods to be detected on this URL and possibly override the security policy settings of a method specifically for this URL. After you enable this setting, the system displays a list of methods.

name

string

Specifies an HTTP URL that the security policy allows. The available types are:

+
+
    +
  • Explicit: Specifies that the URL has a specific name and is not a wildcard entity. Type the name of a URL exactly as you expect it to appear in the request.
  • +
  • Wildcard: Specifies that any URL that matches the listed wildcard expression should be treated according to the wildcard attributes. Type a wildcard expression that matches the expected URL. For example, entering the wildcard expression * specifies that any URL is allowed by the security policy.
  • +
+
+

The syntax for wildcard entities is based on shell-style wildcard characters. The list below describes the wildcard characters that you can use so that the entity name can match multiple objects.

+
+
    +
  • *: Matches all characters
  • +
  • ?: Matches any single character
  • +
  • [abcde]: Matches exactly one of the characters listed
  • +
  • [!abcde]: Matches any character not listed
  • +
  • [a-e]: Matches exactly one character in the range
  • +
  • [!a-e]: Matches any character not in the range
  • +
+
+

Note: Wildcards do not match regular expressions. Do not use a regular expression as a wildcard.

operationIdstringThe attribute operationId is used as an OpenAPI endpoint identifier.
positionalParametersarray of objectsWhen checked (enabled), positional parameters are enabled in the URL.
protocolstringSpecifies whether the protocol for the URL is HTTP or HTTPS.
    +
  • http
  • +
  • https
  • +
signatureOverridesarray of objectsArray of signature overrides. Specifies attack signatures whose security policy settings are overridden for this URL, and which action the security policy takes when it discovers a request for this URL that matches these attack signatures.
typestringDetermines the type of the name attribute. Only when setting the type to wildcard will the special wildcard characters in the name be interpreted as such.
    +
  • explicit
  • +
  • wildcard
  • +
urlContentProfilesarray of objectsSpecifies how the system recognizes and enforces requests for this URL according to the requests' header content. The system automatically creates a default header-based content profile for HTTP, and you cannot delete it. However, requests for a URL may contain other types of content, such as JSON, XML, or other proprietary formats.
wildcardOrderintegerSpecifies the order index for wildcard URLs matching. Wildcard URLs with lower wildcard order will get checked for a match prior to URLs with higher wildcard order.
+

authorizationRules

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
conditionstring
namestring
+

html5CrossOriginRequestsEnforcement

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
allowOriginsEnforcementModestringAllows you to specify a list of origins allowed to share data returned by this URL.
    +
  • replace-with
  • +
  • unmodified
  • +
checkAllowedMethodsbooleanAllows you to specify a list of methods that other web applications hosted in different domains can use when requesting this URL.
crossDomainAllowedOriginarray of objectsAllows you to specify a list of origins allowed to share data returned by this URL.
enforcementModestringSpecify the option to determine how to handle CORS requests. disabled: Do nothing related to cross-domain requests. Pass CORS requests exactly as set by the server. enforce: Allow cross-origin resource sharing as configured in the crossDomainAllowedOrigin setting. CORS requests are allowed from the domains specified as allowed origins.
    +
  • disabled
  • +
  • enforce
  • +
+

crossDomainAllowedOrigin

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
includeSubDomainsbooleanIf true, sub-domains of the allowed origin are also allowed to receive data from your web application.
originNamestringType the domain name or IP address with which the URL can share data. Wildcards are allowed in the names. For example: *.f5.com will match b.f5.com; however it will not match a.b.f5.com.
originPort
    +
  • integer minimum: 0 maximum: 65535
  • +
  • string
  • +
Select the port that other web applications can use to request data from your web application, or use the * wildcard for all ports.
    +
  • Integer values
  • +
  • "all"
  • +
originProtocolstringSelect the appropriate protocol for the allowed origin.
    +
  • http
  • +
  • http/https
  • +
  • https
  • +
+

metacharOverrides

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
isAllowedbooleanIf true, metacharacters and other characters are allowed in a URL.
metacharstringASCII representation of the character in Hex format
+

methodOverrides

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
allowedbooleanSpecifies that the system allows you to override allowed methods for this URL. When selected, the global policy settings for methods are listed, and you can change what is allowed or disallowed for this URL.
methodstringSpecifies a list of existing HTTP methods. All security policies accept standard HTTP methods by default.
    +
  • ACL
  • +
  • BCOPY
  • +
  • BDELETE
  • +
  • BMOVE
  • +
  • BPROPFIND
  • +
  • BPROPPATCH
  • +
  • CHECKIN
  • +
  • CHECKOUT
  • +
  • CONNECT
  • +
  • COPY
  • +
  • DELETE
  • +
  • GET
  • +
  • HEAD
  • +
  • LINK
  • +
  • LOCK
  • +
  • MERGE
  • +
  • MKCOL
  • +
  • MKWORKSPACE
  • +
  • MOVE
  • +
  • NOTIFY
  • +
  • OPTIONS
  • +
  • PATCH
  • +
  • POLL
  • +
  • POST
  • +
  • PROPFIND
  • +
  • PROPPATCH
  • +
  • PUT
  • +
  • REPORT
  • +
  • RPC_IN_DATA
  • +
  • RPC_OUT_DATA
  • +
  • SEARCH
  • +
  • SUBSCRIBE
  • +
  • TRACE
  • +
  • TRACK
  • +
  • UNLINK
  • +
  • UNLOCK
  • +
  • UNSUBSCRIBE
  • +
  • VERSION_CONTROL
  • +
  • X-MS-ENUMATTS
  • +
+

positionalParameters

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
parameterobject
urlSegmentIndexinteger minimum: 1Select which to add: Text or Parameter and enter your desired segments. You can add multiple text and parameter segments.
+

signatureOverrides

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
enabledbooleanSpecifies, when true, that the overridden signature is enforced
namestringThe signature name which, along with the signature tag, identifies the signature.
signatureIdintegerThe signature ID which identifies the signature.
tagstringThe signature tag which, along with the signature name, identifies the signature.
+

urlContentProfiles

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
contentProfileobject
decodeValueAsBase64string
    +
  • disabled
  • +
  • required
  • +
headerNamestringSpecifies an explicit header name that must appear in requests for this URL. This field is not case-sensitive.
headerOrder
    +
  • integer
  • +
  • string
  • +
Displays the order in which the system checks header content of requests for this URL.
    +
  • Integer values
  • +
  • "default"
  • +
headerValuestringSpecifies a simple pattern string (glob pattern matching) for the header value that must appear in legal requests for this URL; for example, json, xml_method?, or method[0-9]. If the header includes this pattern, the system assumes the request contains the type of data you select in the Request Body Handling setting. This field is case-sensitive.
typestring
    +
  • Apply Content Signatures: Do not parse the content; scan the entire payload with full-content attack signatures. +
      +
    • Apply Value and Content Signatures: Do not parse the content or extract parameters; process the entire payload with value and full-content attack signatures.
    • +
    • Disallow: Block requests for an URL containing this header content. Log the Illegal Request Content Type violation.
    • +
    • Do Nothing: Do not inspect or parse the content. Handle the header of the request as specified by the security policy.
    • +
    • Form Data: Parse content as posted form data in either URL-encoded or multi-part formats. Enforce the form parameters according to the policy.
    • +
    • GWT: Perform checks for data in requests, based on the configuration of the GWT (Google Web Toolkit) profile associated with this URL.
    • +
    • JSON: Review JSON data using an associated JSON profile, and use value attack signatures to scan the element values.
    • +
    • XML: Review XML data using an associated XML profile.
    • +
  • +
    +
  • apply-content-signatures
  • +
  • apply-value-and-content-signatures
  • +
  • disallow
  • +
  • do-nothing
  • +
  • form-data
  • +
  • graphql
  • +
  • grpc
  • +
  • json
  • +
  • xml
  • +
+

contentProfile

+ ++++++ + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
namestring
+

urls

+ +++++++ + + + + + + + + + + + + + + + + + + +
Field NameReferenceTypeDescriptionAllowed Values
parametersYesarray of objects
+

xml-profiles

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
attackSignaturesCheckboolean
defenseAttributesobject
descriptionstring
metacharAttributeCheckboolean
metacharElementCheckboolean
metacharOverridesarray of objects
namestring
signatureOverridesarray of objects
useXmlResponsePageboolean
+

defenseAttributes

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
allowCDATAboolean
allowDTDsboolean
allowExternalReferencesboolean
allowProcessingInstructionsboolean
maximumAttributeValueLength
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
maximumAttributesPerElement
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
maximumChildrenPerElement
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
maximumDocumentDepth
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
maximumDocumentSize
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
maximumElements
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
maximumNSDeclarations
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
maximumNameLength
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
maximumNamespaceLength
    +
  • integer minimum: 0 maximum: 2147483647
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "any"
  • +
tolerateCloseTagShorthandboolean
tolerateLeadingWhiteSpaceboolean
tolerateNumericNamesboolean
+

metacharOverrides

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
isAllowedboolean
metacharstring
+

signatureOverrides

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
enabledboolean
namestring
signatureIdinteger
tagstring
+

evasions

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
descriptionstringHuman-readable name of sub-violation.
    +
  • %u decoding
  • +
  • Apache whitespace
  • +
  • Bad unescape
  • +
  • Bare byte decoding
  • +
  • Directory traversals
  • +
  • IIS Unicode codepoints
  • +
  • IIS backslashes
  • +
  • Multiple decoding
  • +
  • Multiple slashes
  • +
  • Semicolon path parameters
  • +
enabledbooleanDefines if sub-violation is enforced - alarmed or blocked, according to the 'Evasion technique detected' (VIOL_EVASION) violation blocking settings.
learnbooleanDefines if sub-violation is learned. Sub-violations are learned only when learn is enabled for the 'Evasion technique detected' (VIOL_EVASION) violation.
maxDecodingPassesinteger minimum: 2 maximum: 5Defines how many times the system decodes URI and parameter values before the request is considered an evasion. Relevant only for the 'Multiple decoding' sub-violation.
+

http-protocols

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
descriptionstringHuman-readable name of sub-violation
    +
  • POST request with Content-Length: 0
  • +
  • Multiple host headers
  • +
  • Host header contains IP address
  • +
  • Null in request
  • +
  • Header name with no header value
  • +
  • Chunked request with Content-Length header
  • +
  • Check maximum number of cookies
  • +
  • Check maximum number of parameters
  • +
  • Check maximum number of headers
  • +
  • Body in GET or HEAD requests
  • +
  • Bad multipart/form-data request parsing
  • +
  • Bad multipart parameters parsing
  • +
  • Unescaped space in URL
  • +
  • High ASCII characters in headers
  • +
enabledbooleanDefines if sub-violation is enforced - alarmed or blocked, according to the 'HTTP protocol compliance failed' (VIOL_HTTP_PROTOCOL) violation blocking settings
learnbooleanDefines if sub-violation is learned. Sub-violations is learned only when learn is enabled for the 'HTTP protocol compliance failed' (VIOL_HTTP_PROTOCOL) violation
maxCookiesinteger minimum: 1 maximum: 100
maxHeadersinteger minimum: 1 maximum: 150Defines maximum allowed number of headers in request. Relevant only for the 'Check maximum number of headers' sub-violation
maxParamsinteger minimum: 1 maximum: 5000Defines maximum allowed number of parameters in request. Relevant only for the 'Check maximum number of parameters' sub-violation
+

violations

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
alarmboolean
blockboolean
descriptionstring
learnboolean
namestring
    +
  • VIOL_ACCESS_UNAUTHORIZED
  • +
  • VIOL_ACCESS_INVALID
  • +
  • VIOL_ACCESS_MALFORMED
  • +
  • VIOL_ACCESS_MISSING
  • +
  • VIOL_ASM_COOKIE_MODIFIED
  • +
  • VIOL_BLACKLISTED_IP
  • +
  • VIOL_BOT_CLIENT
  • +
  • VIOL_BRUTE_FORCE
  • +
  • VIOL_COOKIE_EXPIRED
  • +
  • VIOL_COOKIE_LENGTH
  • +
  • VIOL_COOKIE_MALFORMED
  • +
  • VIOL_COOKIE_MODIFIED
  • +
  • VIOL_CSRF
  • +
  • VIOL_DATA_GUARD
  • +
  • VIOL_ENCODING
  • +
  • VIOL_EVASION
  • +
  • VIOL_FILETYPE
  • +
  • VIOL_FILE_UPLOAD
  • +
  • VIOL_FILE_UPLOAD_IN_BODY
  • +
  • VIOL_GRAPHQL_MALFORMED
  • +
  • VIOL_GRAPHQL_FORMAT
  • +
  • VIOL_GRAPHQL_INTROSPECTION_QUERY
  • +
  • VIOL_GRAPHQL_ERROR_RESPONSE
  • +
  • VIOL_GRPC_FORMAT
  • +
  • VIOL_GRPC_MALFORMED
  • +
  • VIOL_GRPC_METHOD
  • +
  • VIOL_HEADER_LENGTH
  • +
  • VIOL_HEADER_METACHAR
  • +
  • VIOL_HEADER_REPEATED
  • +
  • VIOL_HTTP_PROTOCOL
  • +
  • VIOL_HTTP_RESPONSE_STATUS
  • +
  • VIOL_JSON_FORMAT
  • +
  • VIOL_JSON_MALFORMED
  • +
  • VIOL_JSON_SCHEMA
  • +
  • VIOL_LOGIN
  • +
  • VIOL_LOGIN_URL_BYPASSED
  • +
  • VIOL_LOGIN_URL_EXPIRED
  • +
  • VIOL_MANDATORY_HEADER
  • +
  • VIOL_MANDATORY_PARAMETER
  • +
  • VIOL_MANDATORY_REQUEST_BODY
  • +
  • VIOL_METHOD
  • +
  • VIOL_PARAMETER
  • +
  • VIOL_PARAMETER_ARRAY_VALUE
  • +
  • VIOL_PARAMETER_DATA_TYPE
  • +
  • VIOL_PARAMETER_EMPTY_VALUE
  • +
  • VIOL_PARAMETER_LOCATION
  • +
  • VIOL_PARAMETER_MULTIPART_NULL_VALUE
  • +
  • VIOL_PARAMETER_NAME_METACHAR
  • +
  • VIOL_PARAMETER_NUMERIC_VALUE
  • +
  • VIOL_PARAMETER_REPEATED
  • +
  • VIOL_PARAMETER_STATIC_VALUE
  • +
  • VIOL_PARAMETER_VALUE_BASE64
  • +
  • VIOL_PARAMETER_VALUE_LENGTH
  • +
  • VIOL_PARAMETER_VALUE_METACHAR
  • +
  • VIOL_PARAMETER_VALUE_REGEXP
  • +
  • VIOL_POST_DATA_LENGTH
  • +
  • VIOL_QUERY_STRING_LENGTH
  • +
  • VIOL_RATING_THREAT
  • +
  • VIOL_RATING_NEED_EXAMINATION
  • +
  • VIOL_REQUEST_MAX_LENGTH
  • +
  • VIOL_REQUEST_LENGTH
  • +
  • VIOL_THREAT_CAMPAIGN
  • +
  • VIOL_URL
  • +
  • VIOL_URL_CONTENT_TYPE
  • +
  • VIOL_URL_LENGTH
  • +
  • VIOL_URL_METACHAR
  • +
  • VIOL_XML_FORMAT
  • +
  • VIOL_XML_MALFORMED
  • +
  • VIOL_GEOLOCATION
  • +
  • VIOL_WEBSOCKET_BAD_REQUEST
  • +
  • VIOL_MALICIOUS_IP
  • +
+

mitigations

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameReferenceTypeDescriptionAllowed Values
anomaliesYesarray of objects
browsersYesarray of objects
classesYesarray of objectsList of classes and their actions.
signaturesYesarray of objectsList of signatures and their actions. If a signature is not in the list - its action will be taken according to the class it belongs to.
+

settings

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
caseSensitiveHttpHeadersbooleanIf false the system will not check header name with case sensitivity for both relevant anomalies: Invalid HTTP Headers, Suspicious HTTP Headers.
isEnabledbooleanIf true the system detects bots.
+

anomalies

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
actionstring
    +
  • alarm
  • +
  • block
  • +
  • default
  • +
  • detect
  • +
  • ignore
  • +
namestring
scoreThreshold
    +
  • integer minimum: 0 maximum: 150
  • +
  • string
  • +
    +
  • Integer values
  • +
  • "default"
  • +
+

browsers

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values
actionstring
    +
  • alarm
  • +
  • block
  • +
  • detect
  • +
maxVersioninteger minimum: 0 maximum: 2147483647
minVersioninteger minimum: 0 maximum: 2147483647
namestring
+

classes

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values

action

string

The action we set for this class.

+
+
    +
  • ignore: The system will not detect or report bots from this class.
  • +
  • detect: The system will detect and report the bot, but violation won't be reported.
  • +
  • alarm: The system will detect and report requests made by bots from this class as illegal, but will not block them.
  • +
  • block: The system will detect and report requests made by bots from this class as illegal, and block them.
  • +
+
    +
  • alarm
  • +
  • block
  • +
  • detect
  • +
  • ignore
  • +
namestringThe class we set the action to.
    +
  • browser
  • +
  • malicious-bot
  • +
  • suspicious-browser
  • +
  • trusted-bot
  • +
  • unknown
  • +
  • untrusted-bot
  • +
+

signatures

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
Field NameTypeDescriptionAllowed Values

action

string

The action we set for this signature.

+
+
    +
  • ignore: The system will not detect or report this signature.
  • +
  • detect: The system will detect and report the signature, but violation won't be reported.
  • +
  • alarm: The system will detect and report requests made by those specific bots as illegal, but will not block them.
  • +
  • block: The system will detect and report requests made by those specific bots as illegal, and will block them.
  • +
+
    +
  • alarm
  • +
  • block
  • +
  • detect
  • +
  • ignore
  • +
namestringThe name of the signature we want to change action for.
diff --git a/content/includes/waf/supported-policy-features.md b/content/includes/waf/supported-policy-features.md new file mode 100644 index 000000000..dfaf60083 --- /dev/null +++ b/content/includes/waf/supported-policy-features.md @@ -0,0 +1,4 @@ +| Feature | Description | +| ----------------- | ----------- | +| [Attack signatures]({{< ref "/waf/policies/attack-signatures.md" >}}) | The default policy covers the OWASP top 10 attack patterns. Specific signature sets can be added or disabled. | +| [IP intelligence]({{< ref "/waf/policies/ip-intelligence.md" >}}) | Configure the IP Intelligence feature to customize enforcement based on the source IP of the request, limiting access from IP addresses with questionable reputation | \ No newline at end of file diff --git a/content/nap-dos/_index.md b/content/nap-dos/_index.md index e7d8430f2..264ffc8af 100644 --- a/content/nap-dos/_index.md +++ b/content/nap-dos/_index.md @@ -1,6 +1,6 @@ --- # The title is the product name -title: F5 NGINX App Protect DoS +title: F5 DoS for NGINX # The URL is the base of the deployed path, becoming "docs.nginx.com//" url: /nginx-app-protect-dos/ # The cascade directive applies its nested parameters down the page tree until overwritten @@ -21,7 +21,7 @@ nd-product: NAP-DOS ## About Achieve comprehensive protection against DoS and DDoS attacks for your apps and APIs with a multi-layered, adaptive, automated mitigation strategy for DevOps environments. -Running natively on NGINX Plus and NGINX Ingress Controller, NGINX App Protect DoS is platform-agnostic and supports deployment options ranging from edge load balancers to individual pods in Kubernetes clusters. +Running natively on NGINX Plus and NGINX Ingress Controller, F5 DoS for NGINX is platform-agnostic and supports deployment options ranging from edge load balancers to individual pods in Kubernetes clusters. ## Featured content [//]: # "You can add a maximum of three cards: any extra will not display." @@ -31,15 +31,15 @@ Running natively on NGINX Plus and NGINX Ingress Controller, NGINX App Protect D {{}} {{}} {{}} - Read how to install and upgrade NGINX App Protect DoS + Read how to install and upgrade F5 DoS for NGINX {{}} {{}} - Learn how to debug NGINX App Protect DoS + Learn how to debug F5 DoS for NGINX {{}} {{}} - Review changelogs for NGINX App Protect DoS + Review changelogs for F5 DoS for NGINX {{}} {{}} {{}} \ No newline at end of file diff --git a/content/nap-dos/deployment-guide/_index.md b/content/nap-dos/deployment-guide/_index.md index 14aebe96b..8a504d018 100644 --- a/content/nap-dos/deployment-guide/_index.md +++ b/content/nap-dos/deployment-guide/_index.md @@ -1,5 +1,5 @@ --- -description: Learn how to deploy NGINX App Protect DoS. +description: Learn how to deploy F5 DoS for NGINX. title: Deployment Guide weight: 100 url: /nginx-app-protect-dos/deployment-guide/ diff --git a/content/nap-dos/deployment-guide/installing-nginx-plus-with-dos-and-waf-on-amazon-web-services.md b/content/nap-dos/deployment-guide/installing-nginx-plus-with-dos-and-waf-on-amazon-web-services.md index a3eae476c..859cb939d 100644 --- a/content/nap-dos/deployment-guide/installing-nginx-plus-with-dos-and-waf-on-amazon-web-services.md +++ b/content/nap-dos/deployment-guide/installing-nginx-plus-with-dos-and-waf-on-amazon-web-services.md @@ -17,28 +17,28 @@ The AMIs contain combination of the following components: - Latest version of [F5 NGINX Plus](https://www.f5.com/products/nginx/nginx-plus), optimized for use on Amazon EC2 -- Latest version of [NGINX App Protect DoS](https://docs.nginx.com/nginx-app-protect-dos/), optimized for use on Amazon EC2 +- Latest version of [F5 DoS for NGINX](https://docs.nginx.com/nginx-app-protect-dos/), optimized for use on Amazon EC2 - Latest version of [NGINX App Protect WAF](https://docs.nginx.com/nginx-app-protect-waf/), optimized for use on Amazon EC2 - Pre-packaged software for building highly available (HA) NGINX Plus configurations ## Install NGINX Plus NGINX App Protect WAF + DoS -To quickly set up an environment with NGINX Plus, NGINX App Protect WAF and NGINX App Protect DoS on AWS: +To quickly set up an environment with NGINX Plus, NGINX App Protect WAF and F5 DoS for NGINX on AWS: 1. Follow the instructions in [Getting Started with Amazon EC2 Linux Instances](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html) to sign up on AWS and get more information about EC2 itself. 2. Proceed to the product page for the appropriate AMI at the AWS Marketplace, and launch the AMI. - - [NGINX Plus with NGINX App Protect DoS – RHEL 7 Linux AMI HVM](https://aws.amazon.com/marketplace/pp/prodview-bjdboufufnb7g?sr=0-4&ref_=beagle&applicationId=AWSMPContessa) + - [NGINX Plus with F5 DoS for NGINX – RHEL 7 Linux AMI HVM](https://aws.amazon.com/marketplace/pp/prodview-bjdboufufnb7g?sr=0-4&ref_=beagle&applicationId=AWSMPContessa) - - [NGINX Plus with NGINX App Protect DoS – RHEL8 Linux AMI HVM](https://aws.amazon.com/marketplace/pp/prodview-e6bifer7o6uzm?sr=0-13&ref_=beagle&applicationId=AWSMPContessa) + - [NGINX Plus with F5 DoS for NGINX – RHEL8 Linux AMI HVM](https://aws.amazon.com/marketplace/pp/prodview-e6bifer7o6uzm?sr=0-13&ref_=beagle&applicationId=AWSMPContessa) - - [NGINX Plus with NGINX App Protect DoS – CentOS 7 Linux AMI HVM](https://aws.amazon.com/marketplace/pp/prodview-deeny2oe7izti?sr=0-12&ref_=beagle&applicationId=AWSMPContessa) + - [NGINX Plus with F5 DoS for NGINX – CentOS 7 Linux AMI HVM](https://aws.amazon.com/marketplace/pp/prodview-deeny2oe7izti?sr=0-12&ref_=beagle&applicationId=AWSMPContessa) - - [NGINX Plus with NGINX App Protect DoS – Debian 11 Linux AMI HVM](https://aws.amazon.com/marketplace/pp/prodview-56oveh2rsxsbq?sr=0-2&ref_=beagle&applicationId=AWSMPContessa) + - [NGINX Plus with F5 DoS for NGINX – Debian 11 Linux AMI HVM](https://aws.amazon.com/marketplace/pp/prodview-56oveh2rsxsbq?sr=0-2&ref_=beagle&applicationId=AWSMPContessa) - - [NGINX Plus with NGINX App Protect DoS – Ubuntu 20.04 Linux AMI HVM](https://aws.amazon.com/marketplace/pp/prodview-gsoln2vnsgpr4?sr=0-5&ref_=beagle&applicationId=AWSMPContessa) + - [NGINX Plus with F5 DoS for NGINX – Ubuntu 20.04 Linux AMI HVM](https://aws.amazon.com/marketplace/pp/prodview-gsoln2vnsgpr4?sr=0-5&ref_=beagle&applicationId=AWSMPContessa) - - [NGINX Plus with NGINX App Protect DoS – Ubuntu 22.04 Linux AMI HVM](https://aws.amazon.com/marketplace/pp/prodview-l6f2q2ykrjufy?sr=0-13&ref_=beagle&applicationId=AWSMPContessa) + - [NGINX Plus with F5 DoS for NGINX – Ubuntu 22.04 Linux AMI HVM](https://aws.amazon.com/marketplace/pp/prodview-l6f2q2ykrjufy?sr=0-13&ref_=beagle&applicationId=AWSMPContessa) - [NGINX Plus with NGINX App Protect WAF + DoS – RHEL 7 Linux AMI HVM](https://aws.amazon.com/marketplace/pp/prodview-jedbygo6xbvto?sr=0-1&ref_=beagle&applicationId=AWSMPContessa) @@ -62,7 +62,7 @@ To quickly set up an environment with NGINX Plus, NGINX App Protect WAF and NGIN See [NGINX Plus on the AWS Cloud](https://www.nginx.com/resources/datasheets/nginx-quick-start-guide-for-aws/) deployment guide for details. -6. Verify latest NGINX PLUS / NGINX App Protect DoS / NGINX App Protect WAF packages are installed on EC2 after its first start: +6. Verify latest NGINX PLUS / F5 DoS for NGINX / NGINX App Protect WAF packages are installed on EC2 after its first start: Verify NGINX App Protect WAF latest release from is @@ -88,7 +88,7 @@ To quickly set up an environment with NGINX Plus, NGINX App Protect WAF and NGIN nginx -v ``` - In case NGINX PLUS / NGINX App Protect DoS / NGINX App Protect WAF packages are not latest release then upgrade the following with these commands: + In case NGINX PLUS / F5 DoS for NGINX / NGINX App Protect WAF packages are not latest release then upgrade the following with these commands: For App Protect DoS solution based on RedHat / CentOS @@ -151,17 +151,17 @@ To quickly set up an environment with NGINX Plus, NGINX App Protect WAF and NGIN -8. If AMI includes [NGINX App Protect DoS](https://docs.nginx.com/nginx-app-protect-dos/) +8. If AMI includes [F5 DoS for NGINX](https://docs.nginx.com/nginx-app-protect-dos/) - To enable NGINX App Protect DoS use the following steps: + To enable F5 DoS for NGINX use the following steps: - a. Load the NGINX App Protect DoS module on the main context in the `nginx.conf` file: + a. Load the F5 DoS for NGINX module on the main context in the `nginx.conf` file: ```shell load_module modules/ngx_http_app_protect_dos_module.so; ``` - b. Enable NGINX App Protect DoS on an `http/server/location` context in the `nginx.conf` file: + b. Enable F5 DoS for NGINX on an `http/server/location` context in the `nginx.conf` file: ```shell app_protect_dos_enable on; @@ -182,7 +182,7 @@ To quickly set up an environment with NGINX Plus, NGINX App Protect WAF and NGIN sudo systemctl restart nginx ``` - For more configuration information follow [NGINX App Protect DoS Directives and Policy](https://docs.nginx.com/nginx-app-protect-dos/directives-and-policy/learn-about-directives-and-policy/). + For more configuration information follow [F5 DoS for NGINX Directives and Policy](https://docs.nginx.com/nginx-app-protect-dos/directives-and-policy/learn-about-directives-and-policy/). @@ -190,7 +190,7 @@ To quickly set up an environment with NGINX Plus, NGINX App Protect WAF and NGIN If you encounter any problems with NGINX Plus configuration, documentation is available at [nginx.org](https://nginx.org/en/docs/) and in the [NGINX Plus Admin Guide](https://docs.nginx.com/nginx/admin-guide/installing-nginx/). -If you encounter any problems with NGINX App Protect DoS configuration, documentation is available at the [NGINX App Protect DoS Troubleshooting Guide](https://docs.nginx.com/nginx-app-protect-dos/troubleshooting-guide/how-to-troubleshoot/). +If you encounter any problems with F5 DoS for NGINX configuration, documentation is available at the [F5 DoS for NGINX Troubleshooting Guide](https://docs.nginx.com/nginx-app-protect-dos/troubleshooting-guide/how-to-troubleshoot/). If you encounter any problems with NGINX App Protect WAF configuration, documentation is available at the [NGINX App Protect WAF Troubleshooting Guide](https://docs.nginx.com/nginx-app-protect-waf/v4/troubleshooting-guide/troubleshooting/). diff --git a/content/nap-dos/deployment-guide/learn-about-deployment.md b/content/nap-dos/deployment-guide/learn-about-deployment.md index b4eeb180b..ed0c2e054 100644 --- a/content/nap-dos/deployment-guide/learn-about-deployment.md +++ b/content/nap-dos/deployment-guide/learn-about-deployment.md @@ -1,7 +1,7 @@ --- -description: Learn about F5 NGINX App Protect DoS Deployment. +description: Learn about F5 F5 DoS for NGINX Deployment. nd-docs: DOCS-666 -title: NGINX App Protect DoS Deployment +title: F5 DoS for NGINX Deployment toc: true weight: 100 type: @@ -10,16 +10,16 @@ type: ## Overview -F5 NGINX App Protect DoS provides behavioral protection against DoS for your web applications.

-This guide explains how to deploy NGINX App Protect DoS as well as upgrade App Protect DoS. +F5 F5 DoS for NGINX provides behavioral protection against DoS for your web applications.

+This guide explains how to deploy F5 DoS for NGINX as well as upgrade App Protect DoS. ## Prerequisites -NGINX App Protect DoS is available to the customers as a downloadable dynamic module at an additional cost. To purchase or add NGINX App Protect DoS to an existing NGINX Plus subscription, contact the NGINX sales team. +F5 DoS for NGINX is available to the customers as a downloadable dynamic module at an additional cost. To purchase or add F5 DoS for NGINX to an existing NGINX Plus subscription, contact the NGINX sales team. -NGINX Plus Release 24 and later supports NGINX App Protect DoS. +NGINX Plus Release 24 and later supports F5 DoS for NGINX. -NGINX App Protect DoS supports the following operating systems: +F5 DoS for NGINX supports the following operating systems: - [RHEL 8.1+ / Rocky Linux 8](#rhel-8--rocky-linux-8-installation) - [RHEL 9.0+ / Rocky Linux 9](#rhel-9--rocky-linux-9-installation) @@ -33,7 +33,7 @@ NGINX App Protect DoS supports the following operating systems: - [AmazonLinux 2023](#amazon-linux-2023-installation) -The NGINX App Protect DoS package has the following dependencies: +The F5 DoS for NGINX package has the following dependencies: 1. **nginx-plus-module-appprotectdos** - NGINX Plus dynamic module for App Protect DoS 2. **libcurl** - Software library for HTTP access @@ -42,7 +42,7 @@ The NGINX App Protect DoS package has the following dependencies: 5. **openssl** - Toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocol 6. **libelf** - Software library for ELF access -See the NGINX Plus full list of prerequisites for more details. NGINX App Protect DoS can be installed as a module to an existing NGINX Plus installation or as a complete NGINX Plus with App Protect DoS installation in a clean environment or to a system with NGINX App Protect WAF. +See the NGINX Plus full list of prerequisites for more details. F5 DoS for NGINX can be installed as a module to an existing NGINX Plus installation or as a complete NGINX Plus with App Protect DoS installation in a clean environment or to a system with NGINX App Protect WAF. {{< call-out "note" >}} @@ -55,7 +55,7 @@ See the NGINX Plus full list of prerequisites for more details. NGINX App Protec When deploying App Protect DoS on NGINX Plus take the following precautions to secure the platform. This avoids the risk of causing a Denial of Service condition or compromising the platform security. -- Restrict permissions to the files on the NGINX App Protect DoS platform to user **nginx** and group **nginx**, especially for the sensitive areas containing the configuration. +- Restrict permissions to the files on the F5 DoS for NGINX platform to user **nginx** and group **nginx**, especially for the sensitive areas containing the configuration. - Remove unnecessary remote access services on the platform. - Configure a Syslog destination on the same machine as App Protect DoS and proxy to an external destination. This avoids eavesdropping and [man-in-the-middle](https://en.wikipedia.org/wiki/Man-in-the-middle_attack) attacks on the Syslog channel. @@ -91,7 +91,7 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s sudo yum install ca-certificates epel-release wget ``` -6. Add NGINX Plus and NGINX App Protect DoS repository: +6. Add NGINX Plus and F5 DoS for NGINX repository: ```shell sudo wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/nginx-plus-7.4.repo @@ -132,19 +132,19 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s sudo nginx -v ``` -10. Check the NGINX App Protect DoS binary version to ensure that you have the right version installed correctly: +10. Check the F5 DoS for NGINX binary version to ensure that you have the right version installed correctly: ```shell sudo admd -v ``` -11. Load the NGINX App Protect DoS module on the main context in the `nginx.conf`: +11. Load the F5 DoS for NGINX module on the main context in the `nginx.conf`: ```nginx load_module modules/ngx_http_app_protect_dos_module.so; ``` -12. Enable NGINX App Protect DoS on an `http/server/location` context in the `nginx.conf` file: +12. Enable F5 DoS for NGINX on an `http/server/location` context in the `nginx.conf` file: ```nginx app_protect_dos_enable on; @@ -152,7 +152,7 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s app_protect_dos_monitor uri=serv:80/; # Assuming server_name "serv" on port 80, with the root path "/" ``` -13. Configure the SELinux to allow NGINX App Protect DoS: +13. Configure the SELinux to allow F5 DoS for NGINX: a. Using the vi editor, create a file: @@ -271,7 +271,7 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7 ``` -7. Add NGINX Plus and NGINX App Protect DoS repository: +7. Add NGINX Plus and F5 DoS for NGINX repository: ```shell sudo wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/nginx-plus-7.4.repo @@ -318,13 +318,13 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s sudo admd -v ``` -12. Load the NGINX App Protect DoS module on the main context in the `nginx.conf`: +12. Load the F5 DoS for NGINX module on the main context in the `nginx.conf`: ```nginx load_module modules/ngx_http_app_protect_dos_module.so; ``` -13. Enable NGINX App Protect DoS on an `http/server/location` context in the `nginx.conf` file: +13. Enable F5 DoS for NGINX on an `http/server/location` context in the `nginx.conf` file: ```nginx app_protect_dos_enable on; @@ -332,7 +332,7 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s app_protect_dos_monitor uri=serv:80/; # Assuming server_name "serv" on port 80, with the root path "/" ``` -14. Configure the SELinux to allow NGINX App Protect DoS: +14. Configure the SELinux to allow F5 DoS for NGINX: a. Using the vi editor, create a file: @@ -411,7 +411,7 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s ```shell sudo dnf install ca-certificates wget -6. Enable Yum repositories to pull NGINX App Protect DoS dependencies: +6. Enable Yum repositories to pull F5 DoS for NGINX dependencies: If you have a RHEL subscription: @@ -421,7 +421,7 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm ``` -7. Add NGINX Plus and NGINX App Protect DoS repository: +7. Add NGINX Plus and F5 DoS for NGINX repository: ```shell sudo wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/nginx-plus-8.repo @@ -475,13 +475,13 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s sudo admd -v ``` -12. Load the NGINX App Protect DoS module on the main context in the `nginx.conf` file: +12. Load the F5 DoS for NGINX module on the main context in the `nginx.conf` file: ```nginx load_module modules/ngx_http_app_protect_dos_module.so; ``` -13. Enable NGINX App Protect DoS in an `http/server/location` context in the `nginx.conf` file: +13. Enable F5 DoS for NGINX in an `http/server/location` context in the `nginx.conf` file: ```nginx app_protect_dos_enable on; @@ -619,7 +619,7 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s sudo dnf install ca-certificates wget ``` -6. Enable the yum repositories to pull NGINX App Protect DoS dependencies: +6. Enable the yum repositories to pull F5 DoS for NGINX dependencies: If you have a RHEL subscription: @@ -629,7 +629,7 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm ``` -7. Add the NGINX Plus and NGINX App Protect DoS repositories: +7. Add the NGINX Plus and F5 DoS for NGINX repositories: ```shell sudo wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/plus-9.repo @@ -687,13 +687,13 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s sudo admd -v ``` -12. Load the NGINX App Protect DoS module on the main context in the `nginx.conf`: +12. Load the F5 DoS for NGINX module on the main context in the `nginx.conf`: ```nginx load_module modules/ngx_http_app_protect_dos_module.so; ``` -13. Enable NGINX App Protect DoS on an `http/server/location` context in the `nginx.conf` file: +13. Enable F5 DoS for NGINX on an `http/server/location` context in the `nginx.conf` file: ```nginx app_protect_dos_enable on; @@ -851,7 +851,7 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s sudo wget -qO - https://cs.nginx.com/static/keys/nginx_signing.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null ``` -7. Add NGINX Plus and NGINX App Protect DoS repository: +7. Add NGINX Plus and F5 DoS for NGINX repository: For Debian: @@ -963,13 +963,13 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s sudo admd -v ``` -13. Load the NGINX App Protect DoS module on the main context in the `nginx.conf` file: +13. Load the F5 DoS for NGINX module on the main context in the `nginx.conf` file: ```nginx load_module modules/ngx_http_app_protect_dos_module.so; ``` -14. Enable NGINX App Protect DoS on an `http/server/location` context in the `nginx.conf` via: +14. Enable F5 DoS for NGINX on an `http/server/location` context in the `nginx.conf` via: ```nginx app_protect_dos_enable on; @@ -1030,7 +1030,7 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s printf "https://pkgs.nginx.com/plus/alpine/v`egrep -o '^[0-9]+\.[0-9]+' /etc/alpine-release`/main\n" | sudo tee -a /etc/apk/repositories ``` -7. Add NGINX App Protect DoS repository to `/etc/apk/repositories` file: +7. Add F5 DoS for NGINX repository to `/etc/apk/repositories` file: ```shell printf "https://pkgs.nginx.com/app-protect-dos/alpine/v`egrep -o '^[0-9]+\.[0-9]+' /etc/alpine-release`/main\n" | sudo tee -a /etc/apk/repositories @@ -1043,7 +1043,7 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s sudo apk del -r nginx ``` -9. Update the repository and install the most recent version of the NGINX Plus and NGINX App Protect DoS: +9. Update the repository and install the most recent version of the NGINX Plus and F5 DoS for NGINX: ```shell sudo apk update @@ -1096,13 +1096,13 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s sudo admd -v ``` -13. Load the NGINX App Protect DoS module on the main context in the `nginx.conf` file: +13. Load the F5 DoS for NGINX module on the main context in the `nginx.conf` file: ```nginx load_module modules/ngx_http_app_protect_dos_module.so; ``` -14. Enable NGINX App Protect DoS on an `http/server/location` context in the `nginx.conf` via: +14. Enable F5 DoS for NGINX on an `http/server/location` context in the `nginx.conf` via: ```nginx app_protect_dos_enable on; @@ -1151,7 +1151,7 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s ```shell sudo dnf install ca-certificates wget -6. Add NGINX Plus and NGINX App Protect DoS repository: +6. Add NGINX Plus and F5 DoS for NGINX repository: ```shell sudo wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/plus-amazonlinux2023.repo @@ -1209,13 +1209,13 @@ When deploying App Protect DoS on NGINX Plus take the following precautions to s sudo admd -v ``` -11. Load the NGINX App Protect DoS module on the main context in the `nginx.conf` file: +11. Load the F5 DoS for NGINX module on the main context in the `nginx.conf` file: ```nginx load_module modules/ngx_http_app_protect_dos_module.so; ``` -12. Enable NGINX App Protect DoS in an `http/server/location` context in the `nginx.conf` file: +12. Enable F5 DoS for NGINX in an `http/server/location` context in the `nginx.conf` file: ```nginx app_protect_dos_enable on; @@ -1272,7 +1272,7 @@ You need root permissions to execute the following steps. 3. Copy the files to the directory where the Dockerfile is located. -4. Add NGINX App Protect DoS to your `nginx.conf`. The configuration below is an example for an `http` and `grpc+tls` servers which has NGINX App Protect DoS enabled. Note that every NGINX App Protect DoS related directive starts with `app_protect_dos_`. +4. Add F5 DoS for NGINX to your `nginx.conf`. The configuration below is an example for an `http` and `grpc+tls` servers which has F5 DoS for NGINX enabled. Note that every F5 DoS for NGINX related directive starts with `app_protect_dos_`. `nginx.conf` @@ -1283,7 +1283,7 @@ You need root permissions to execute the following steps. worker_rlimit_nofile 65535; working_directory /tmp/cores; - load_module modules/ngx_http_app_protect_dos_module.so; # NGINX App Protect DoS module + load_module modules/ngx_http_app_protect_dos_module.so; # F5 DoS for NGINX module events { worker_connections 65535; @@ -1296,7 +1296,7 @@ You need root permissions to execute the following steps. 'outcome=$app_protect_dos_outcome, reason=$app_protect_dos_outcome_reason, ' 'ip_tls=$remote_addr:$app_protect_dos_tls_fp, '; - app_protect_dos_security_log_enable on; # Enable NGINX App Protect DoS's security logger + app_protect_dos_security_log_enable on; # Enable F5 DoS for NGINX's security logger app_protect_dos_security_log "/etc/app_protect_dos/log-default.json" /var/log/adm/logger.log; # Security logger outputs to a file # app_protect_dos_security_log "/etc/app_protect_dos/log-default.json" syslog:server=1.2.3.4:5261; # Security logger outputs to a syslog destination @@ -1310,10 +1310,10 @@ You need root permissions to execute the following steps. access_log /var/log/nginx/access.log log_napd if=$loggable; # Access log with rate limiting and additional information # access_log syslog:server=1.1.1.1:5561 log_napd if=$loggable; - app_protect_dos_policy_file "/etc/app_protect_dos/BADOSDefaultPolicy.json"; # Policy configuration for NGINX App Protect DoS + app_protect_dos_policy_file "/etc/app_protect_dos/BADOSDefaultPolicy.json"; # Policy configuration for F5 DoS for NGINX location / { - app_protect_dos_enable on; # Enable NGINX App Protect DoS in this block + app_protect_dos_enable on; # Enable F5 DoS for NGINX in this block app_protect_dos_name "App80"; # PO name app_protect_dos_monitor uri=http://serv80/; # Health monitoring proxy_pass http://1.2.3.4:80; @@ -1381,7 +1381,7 @@ You need root permissions to execute the following steps. DOCKER_BUILDKIT=1 docker build --no-cache --platform linux/amd64 --secret id=nginx-crt,src=nginx-repo.crt --secret id=nginx-key,src=nginx-repo.key --secret id=license-jwt,src=./license.jwt -t app-protect-dos . ``` - The `--no-cache` option tells Docker to build the image from scratch and ensures the installation of the latest version of NGINX Plus and NGINX App Protect DoS. If the Dockerfile was previously used to build an image without the `--no-cache` option, the new image uses versions from the previously built image from the Docker cache. + The `--no-cache` option tells Docker to build the image from scratch and ensures the installation of the latest version of NGINX Plus and F5 DoS for NGINX. If the Dockerfile was previously used to build an image without the `--no-cache` option, the new image uses versions from the previously built image from the Docker cache. For RHEL8/9 with subctiption manager setup add build arguments: @@ -1468,11 +1468,11 @@ FROM alpine:3.19 # Download and add the NGINX signing keys: RUN wget -O /etc/apk/keys/nginx_signing.rsa.pub https://cs.nginx.com/static/keys/nginx_signing.rsa.pub -# Add NGINX Plus/NGINX App Protect Dos repository: +# Add NGINX Plus/F5 DoS for NGINX repository: RUN printf "https://pkgs.nginx.com/plus/alpine/v`egrep -o '^[0-9]+\.[0-9]+' /etc/alpine-release`/main\n" | tee -a /etc/apk/repositories && \ printf "https://pkgs.nginx.com/app-protect-dos/alpine/v`egrep -o '^[0-9]+\.[0-9]+' /etc/alpine-release`/main\n" | tee -a /etc/apk/repositories -# Update the repository and install the most recent version of the NGINX App Protect Dos package (which includes NGINX Plus): +# Update the repository and install the most recent version of the F5 DoS for NGINX package (which includes NGINX Plus): RUN --mount=type=secret,id=nginx-crt,dst=/etc/apk/cert.pem,mode=0644 \ --mount=type=secret,id=nginx-key,dst=/etc/apk/cert.key,mode=0644 \ --mount=type=secret,id=license-jwt,dst=license.jwt,mode=0644 \ @@ -1508,11 +1508,11 @@ FROM amazonlinux:2023 # Install prerequisite packages: RUN dnf -y install ca-certificates -# Add NGINX Plus/NGINX App Protect Dos repository: +# Add NGINX Plus/F5 DoS for NGINX repository: RUN curl -o /etc/yum.repos.d/plus-amazonlinux2023.repo https://cs.nginx.com/static/files/plus-amazonlinux2023.repo && \ curl -o /etc/yum.repos.d/app-protect-dos-amazonlinux2023.repo https://cs.nginx.com/static/files/app-protect-dos-amazonlinux2023.repo -# Install NGINX App Protect DoS: +# Install F5 DoS for NGINX: RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode=0644 \ --mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key,mode=0644 \ --mount=type=secret,id=license-jwt,dst=license.jwt,mode=0644 \ @@ -1554,7 +1554,7 @@ RUN mkdir -p /etc/ssl/nginx/ /etc/nginx/ && \ printf "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://pkgs.nginx.com/app-protect-dos/debian $(lsb_release -cs) nginx-plus\n" > /etc/apt/sources.list.d/nginx-app-protect-dos.list && \ wget -P /etc/apt/apt.conf.d https://cs.nginx.com/static/files/90pkgs-nginx -# Install Nginx App Protect Dos +# Install F5 DoS for NGINX RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode=0644 \ --mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key,mode=0644 \ --mount=type=secret,id=license-jwt,dst=license.jwt,mode=0644 \ @@ -1592,7 +1592,7 @@ RUN apt-get update && \ printf "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://pkgs.nginx.com/app-protect-dos/ubuntu $(lsb_release -cs) nginx-plus\n" > /etc/apt/sources.list.d/nginx-app-protect-dos.list && \ wget -P /etc/apt/apt.conf.d https://cs.nginx.com/static/files/90pkgs-nginx -# Install Nginx App Protect Dos +# Install F5 DoS for NGINX RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode=0644 \ --mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key,mode=0644 \ --mount=type=secret,id=license-jwt,dst=license.jwt,mode=0644 \ @@ -1636,7 +1636,7 @@ RUN subscription-manager register --org=${RHEL_ORG} --activationkey=${RHEL_ACTIV curl -o /etc/yum.repos.d/plus-8.repo https://cs.nginx.com/static/files/plus-8.repo && \ curl -o /etc/yum.repos.d/app-protect-dos-8.repo https://cs.nginx.com/static/files/app-protect-dos-8.repo -# Install Nginx App Protect Dos +# Install F5 DoS for NGINX RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode=0644 \ --mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key,mode=0644 \ --mount=type=secret,id=license-jwt,dst=license.jwt,mode=0644 \ @@ -1679,7 +1679,7 @@ RUN curl -o /etc/yum.repos.d/plus-9.repo https://cs.nginx.com/static/files/plus- dnf config-manager --set-enabled crb && \ dnf clean all -# Install NGINX App Protect DoS: +# Install F5 DoS for NGINX: RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode=0644 \ --mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key,mode=0644 \ --mount=type=secret,id=license-jwt,dst=license.jwt,mode=0644 \ @@ -1916,7 +1916,7 @@ RUN printf "https://pkgs.nginx.com/app-protect-dos/alpine/v`egrep -o '^[0-9]+\.[ printf "https://pkgs.nginx.com/app-protect/alpine/v`egrep -o '^[0-9]+\.[0-9]+' /etc/alpine-release`/main\n" | tee -a /etc/apk/repositories && \ printf "https://pkgs.nginx.com/app-protect-security-updates/alpine/v`egrep -o '^[0-9]+\.[0-9]+' /etc/alpine-release`/main\n" | tee -a /etc/apk/repositories -# Update the repository and install the most recent version of the NGINX App Protect DoS package (which includes NGINX Plus): +# Update the repository and install the most recent version of the F5 DoS for NGINX package (which includes NGINX Plus): RUN --mount=type=secret,id=nginx-crt,dst=/etc/apk/cert.pem,mode=0644 \ --mount=type=secret,id=nginx-key,dst=/etc/apk/cert.key,mode=0644 \ --mount=type=secret,id=license-jwt,dst=license.jwt,mode=0644 \ @@ -1997,7 +1997,7 @@ RUN apt-get update && \ apt-get install -y --no-install-recommends apt-transport-https lsb-release ca-certificates wget gnupg2 debian-archive-keyring && \ wget -qO - https://cs.nginx.com/static/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null -# Add NGINX Plus, NGINX App Protect and NGINX App Protect DoS repository: +# Add NGINX Plus, NGINX App Protect and F5 DoS for NGINX repository: RUN printf "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://pkgs.nginx.com/plus/debian `lsb_release -cs` nginx-plus\n" | tee /etc/apt/sources.list.d/nginx-plus.list \ && printf "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://pkgs.nginx.com/app-protect-dos/debian `lsb_release -cs` nginx-plus\n" | tee /etc/apt/sources.list.d/nginx-app-protect-dos.list \ && printf "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://pkgs.nginx.com/app-protect/debian `lsb_release -cs` nginx-plus\n" | tee /etc/apt/sources.list.d/nginx-app-protect.list @@ -2005,7 +2005,7 @@ RUN printf "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https: # Download the apt configuration to `/etc/apt/apt.conf.d`: RUN wget -P /etc/apt/apt.conf.d https://cs.nginx.com/static/files/90pkgs-nginx -# Install Nginx App Protect Dos +# Install F5 DoS for NGINX RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode=0644 \ --mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key,mode=0644 \ --mount=type=secret,id=license-jwt,dst=license.jwt,mode=0644 \ @@ -2040,7 +2040,7 @@ RUN apt-get update && \ apt-get install -y --no-install-recommends apt-transport-https lsb-release ca-certificates wget gnupg2 ubuntu-keyring && \ wget -qO - https://cs.nginx.com/static/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null -# Add NGINX Plus, NGINX App Protect and NGINX App Protect DoS repository: +# Add NGINX Plus, NGINX App Protect and F5 DoS for NGINX repository: RUN printf "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://pkgs.nginx.com/plus/ubuntu `lsb_release -cs` nginx-plus\n" | tee /etc/apt/sources.list.d/nginx-plus.list \ && printf "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://pkgs.nginx.com/app-protect-dos/ubuntu `lsb_release -cs` nginx-plus\n" | tee /etc/apt/sources.list.d/nginx-app-protect-dos.list \ && printf "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://pkgs.nginx.com/app-protect/ubuntu `lsb_release -cs` nginx-plus\n" | tee /etc/apt/sources.list.d/nginx-app-protect.list @@ -2048,7 +2048,7 @@ RUN printf "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https: # Download the apt configuration to `/etc/apt/apt.conf.d`: RUN wget -P /etc/apt/apt.conf.d https://cs.nginx.com/static/files/90pkgs-nginx -# Install Nginx App Protect Dos +# Install F5 DoS for NGINX RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode=0644 \ --mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key,mode=0644 \ --mount=type=secret,id=license-jwt,dst=license.jwt,mode=0644 \ @@ -2072,33 +2072,33 @@ STOPSIGNAL SIGQUIT CMD ["sh", "/root/entrypoint.sh"] ``` -## NGINX App Protect DoS Arbitrator +## F5 DoS for NGINX Arbitrator ### Overview -NGINX App Protect DoS arbitrator orchestrates all the running NGINX App Protect DoS instances to synchronize local/global attack start/stop. +F5 DoS for NGINX arbitrator orchestrates all the running F5 DoS for NGINX instances to synchronize local/global attack start/stop. -NGINX App Protect DoS arbitrator serves as a central coordinating component for managing multiple instances of App Protect DoS in a network. It is needed when there are more than one NGINX App Protect DoS instances. Its primary function is to ensure that all instances are aware of and share the same state for each protected object. Here's a clearer breakdown of how it works and why it's necessary: +F5 DoS for NGINX arbitrator serves as a central coordinating component for managing multiple instances of App Protect DoS in a network. It is needed when there are more than one F5 DoS for NGINX instances. Its primary function is to ensure that all instances are aware of and share the same state for each protected object. Here's a clearer breakdown of how it works and why it's necessary: -How NGINX App Protect DoS Arbitrator Works: +How F5 DoS for NGINX Arbitrator Works: - **Collecting State Periodically**: The arbitrator regularly collects the state information from all running instances of App Protect DoS. This collection occurs at set intervals, typically every 10 seconds. - **State Initialization for New Instances**: When a new App Protect DoS instance is created, it doesn't start with a blank or uninitialized state for a protected object. Instead, it retrieves the initial state for the protected object from the arbitrator. - **Updating State in Case of an Attack**: If an attack is detected by one of the App Protect DoS instances, that instance sends an attack notification to the arbitrator. The arbitrator then updates the state of the affected protected object to indicate that it is under attack. Importantly, this updated state is propagated to all other instances. -### Why NGINX App Protect DoS Arbitrator is Necessary +### Why F5 DoS for NGINX Arbitrator is Necessary -NGINX App Protect DoS Arbitrator is essential for several reasons: +F5 DoS for NGINX Arbitrator is essential for several reasons: - **Global State Management**: Without the arbitrator, each individual instance of App Protect DoS would manage its own isolated state for each protected object. This isolation could lead to inconsistencies. For example, if instance A declared an attack on a protected object named "PO-Example," instance B would remain unaware of this attack, potentially leaving the object vulnerable. - **Uniform Attack Detection**: With the arbitrator in place, when instance A detects an attack on "PO-Example" and reports it to the arbitrator, the state of "PO-Example" is immediately updated to indicate an attack. This means that all instances, including instance B, are aware of the attack and can take appropriate measures to mitigate it. -In summary, NGINX App Protect DoS Arbitrator acts as a central coordinator to maintain a consistent and up-to-date global state for protected objects across multiple instances of App Protect DoS. This coordination helps ensure that attacks are properly detected and mitigated, and that knowledge gained by one instance is efficiently shared with others, enhancing the overall security of the network. +In summary, F5 DoS for NGINX Arbitrator acts as a central coordinator to maintain a consistent and up-to-date global state for protected objects across multiple instances of App Protect DoS. This coordination helps ensure that attacks are properly detected and mitigated, and that knowledge gained by one instance is efficiently shared with others, enhancing the overall security of the network. -### NGINX App Protect DoS Arbitrator Deployment +### F5 DoS for NGINX Arbitrator Deployment -1. Pull the official NGINX App Protect DoS Arbitrator image with the command: +1. Pull the official F5 DoS for NGINX Arbitrator image with the command: ```shell docker pull docker-registry.nginx.com/nap-dos/app_protect_dos_arb:latest @@ -2112,22 +2112,22 @@ In summary, NGINX App Protect DoS Arbitrator acts as a central coordinator to ma 3. Verify that the `app-protect-dos-arb` container is up and running with the `docker ps` command. -4. DNS records are required for NGINX App Protect DoS Arbitrator to work properly and be accessible by NGINX App Protect DoS servers. Ensure that the `svc-appprotect-dos-arb` or configured Arbitrator FQDN (with `app_protect_dos_arb_fqdn` directive) has a valid DNS resolution. -This step is necessary only for VM/Docker deployments with arbitrator. When the arbitrator is in the same Kubernetes namespace as NGINX App Protect DoS, this step is not needed. +4. DNS records are required for F5 DoS for NGINX Arbitrator to work properly and be accessible by F5 DoS for NGINX servers. Ensure that the `svc-appprotect-dos-arb` or configured Arbitrator FQDN (with `app_protect_dos_arb_fqdn` directive) has a valid DNS resolution. +This step is necessary only for VM/Docker deployments with arbitrator. When the arbitrator is in the same Kubernetes namespace as F5 DoS for NGINX, this step is not needed. ### Multi-VM Deployment -The Arbitrator service is standalone. Once it is down, it can be seamlessly re-started. It will immediately recover all the needed information from NGINX App Protect DoS instances that communicate to it every 10 sec. It’s downtime is around 10-20 seconds which will not affect the NGINX App Protect DoS working. +The Arbitrator service is standalone. Once it is down, it can be seamlessly re-started. It will immediately recover all the needed information from F5 DoS for NGINX instances that communicate to it every 10 sec. It’s downtime is around 10-20 seconds which will not affect the F5 DoS for NGINX working. -NGINX App Protect DoS Arbitrator service connects to port 3000 and can be seen under App Protect DoS instances. All modules try to connect to this service automatically. If it’s not accessible, each instance works in standalone mode. +F5 DoS for NGINX Arbitrator service connects to port 3000 and can be seen under App Protect DoS instances. All modules try to connect to this service automatically. If it’s not accessible, each instance works in standalone mode. -There is no such option for authentications between NGINX App Protect DoS servers and Arbitrator service like MTLS or password . Currently Arbitrator service is not exposed outside of the namespace. It is customers responsibility to isolate it from outside. It is applicable to any deployment of Arbitrator, not only to multi-VM. +There is no such option for authentications between F5 DoS for NGINX servers and Arbitrator service like MTLS or password . Currently Arbitrator service is not exposed outside of the namespace. It is customers responsibility to isolate it from outside. It is applicable to any deployment of Arbitrator, not only to multi-VM. ## Post-Installation Checks -You can run the following commands to ensure that NGINX App Protect DoS enforcement is operational. +You can run the following commands to ensure that F5 DoS for NGINX enforcement is operational. -1. Check that the three processes needed for NGINX App Protect DoS are running using `ps aux`: +1. Check that the three processes needed for F5 DoS for NGINX are running using `ps aux`: - admd - nginx: master process @@ -2183,7 +2183,7 @@ You can run the following commands to ensure that NGINX App Protect DoS enforcem c. See that the good traffic continue as usual while the attackers receive denial of service. -To check NGINX App Protect WAF along side NGINX App Protect DoS, just perform the normal tests as specified at [Admin Guide](https://docs.nginx.com/nginx-app-protect/admin-guide/) +To check NGINX App Protect WAF along side F5 DoS for NGINX, just perform the normal tests as specified at [Admin Guide](https://docs.nginx.com/nginx-app-protect/admin-guide/) ### Compatibility with NGINX Plus Releases @@ -2191,7 +2191,7 @@ A threat campaign package is compatible with the NGINX Plus release supported du ## Upgrading App Protect DoS -You can upgrade to the latest NGINX Plus and App Protect DoS versions by downloading and installing the latest NGINX App Protect DoS package. When upgrading from this package, App Protect DoS will be uninstalled and reinstalled. The old default security policy is deleted and the new default security policy is installed. If you have created a custom security policy, the policy persists and you will need to update `nginx.conf` and point to the custom security policy by referencing the json file (using the full path). +You can upgrade to the latest NGINX Plus and App Protect DoS versions by downloading and installing the latest F5 DoS for NGINX package. When upgrading from this package, App Protect DoS will be uninstalled and reinstalled. The old default security policy is deleted and the new default security policy is installed. If you have created a custom security policy, the policy persists and you will need to update `nginx.conf` and point to the custom security policy by referencing the json file (using the full path). If you upgrade your NGINX version outside of the App Protect DoS module, App Protect DoS will be uninstalled and you will need to reinstall it. You need to restart NGINX after an upgrade. @@ -2455,7 +2455,7 @@ http { #### App Protect DoS arb -Arbitrator (arb) is an internal service that is essential for the scaling scenarios. The arbitrator service should be deployed in the same namespace as NGINX App Protect DoS. +Arbitrator (arb) is an internal service that is essential for the scaling scenarios. The arbitrator service should be deployed in the same namespace as F5 DoS for NGINX. `appprotect-dos-arb.yaml`: @@ -2519,7 +2519,7 @@ kubectl -n appprotect-dos-wp-diff apply -f ${DIR}/appprotect-dos-arb.yaml kubectl -n appprotect-dos-wp-diff apply -f ${DIR}/svc-appprotect-dos-arb.yaml ``` -`install NGINX App Protect DoS with ARB service`: +`install F5 DoS for NGINX with ARB service`: ```shell #!/bin/bash diff --git a/content/nap-dos/directives-and-policy/_index.md b/content/nap-dos/directives-and-policy/_index.md index 0d66fcde8..2994cd207 100644 --- a/content/nap-dos/directives-and-policy/_index.md +++ b/content/nap-dos/directives-and-policy/_index.md @@ -1,6 +1,6 @@ --- description: Learn about the Directives and Policy attributes necessary to configure - F5 NGINX App Protect DoS. + F5 F5 DoS for NGINX. title: Directives and Policy weight: 120 url: /nginx-app-protect-dos/directives-and-policy/ diff --git a/content/nap-dos/directives-and-policy/learn-about-directives-and-policy.md b/content/nap-dos/directives-and-policy/learn-about-directives-and-policy.md index 3f2635b52..c74105412 100644 --- a/content/nap-dos/directives-and-policy/learn-about-directives-and-policy.md +++ b/content/nap-dos/directives-and-policy/learn-about-directives-and-policy.md @@ -1,5 +1,5 @@ --- -title: NGINX App Protect DoS Directives and Policy +title: F5 DoS for NGINX Directives and Policy toc: true weight: 120 nd-docs: DOCS-667 @@ -8,14 +8,14 @@ nd-docs: DOCS-667 ## Introduction NGINX directives are specified in the `nginx.conf` file and are used to configure various modules of NGINX.
-F5 NGINX App Protect DoS has its own set of directives, which follow the same rules as other NGINX directives, and are used to enable and configure its features.
+F5 F5 DoS for NGINX has its own set of directives, which follow the same rules as other NGINX directives, and are used to enable and configure its features.
-The table below provides a summary of all the F5 NGINX App Protect DoS directives.
+The table below provides a summary of all the F5 F5 DoS for NGINX directives.
-While only the first directive is mandatory for enabling NGINX App Protect DoS, it is recommended to use as many directives as possible to leverage the product’s full range of monitoring and application health detection capabilities. After adding these directives, ensure you reload NGINX and check the error log for any errors or warnings.
+While only the first directive is mandatory for enabling F5 DoS for NGINX, it is recommended to use as many directives as possible to leverage the product’s full range of monitoring and application health detection capabilities. After adding these directives, ensure you reload NGINX and check the error log for any errors or warnings.
## Directives table -Below is a summary of all NGINX App Protect DoS directives. Detailed descriptions of each directive can be found in the following sections. +Below is a summary of all F5 DoS for NGINX directives. Detailed descriptions of each directive can be found in the following sections. {{}} @@ -130,7 +130,7 @@ Directive is optional. If not written, then each protected object (VS) will have seq: 0 for server block, increments for each location block. i.e. VS created from server block will have 0 and VS's from location blocks will be 1,2,3,... (i.e. `1`) - `location name:` the name of the location (i.e. `/abc`) -NGINX App Protect DoS supports up to 300 Protected Objects for versions up to 4.3, and 1,000 Protected Objects in version 4.4 and above.
+F5 DoS for NGINX supports up to 300 Protected Objects for versions up to 4.3, and 1,000 Protected Objects in version 4.4 and above.

**Example:** @@ -158,21 +158,21 @@ Monitor directive has four arguments - **uri**, **protocol**, **timeout** and ** - **Protocol** - determines the protocol type of the service. Options are `http1 / http2 / grpc / websocket`.
Default: `http1`.
- {{< call-out "note" >}}HTTP2 and gRPC are supported from NGINX App Protect DoS v2, while WebSocket is supported from NGINX App Protect DoS v4. {{< /call-out >}} + {{< call-out "note" >}}HTTP2 and gRPC are supported from F5 DoS for NGINX v2, while WebSocket is supported from F5 DoS for NGINX v4. {{< /call-out >}} -- **Timeout** - determines how long (in seconds) should NGINX App Protect DoS wait for a response.
Default: 10 seconds for `http1/http2/websocket` and 5 seconds for `grpc`.
+- **Timeout** - determines how long (in seconds) should F5 DoS for NGINX wait for a response.
Default: 10 seconds for `http1/http2/websocket` and 5 seconds for `grpc`.
- **Proxy Protocol** - Should be used when the listen directive of the corresponding server block contains the proxy_protocol parameter. It adds an HAProxy PROXY protocol header to the monitor request.
Format is **proxy_protocol | proxy_protocol=on**.
Default: off.
- {{< call-out "note" >}}The proxy_protocol is supported from NGINX App Protect DoS v3.1. {{< /call-out >}} + {{< call-out "note" >}}The proxy_protocol is supported from F5 DoS for NGINX v3.1. {{< /call-out >}} -#### For Older Versions (NGINX App Protect DoS v1) +#### For Older Versions (F5 DoS for NGINX v1) -In NGINX App Protect DoS v1, the app_protect_dos_monitor directive has only one argument: uri. +In F5 DoS for NGINX v1, the app_protect_dos_monitor directive has only one argument: uri. Only HTTP1 is supported.

@@ -190,7 +190,7 @@ location / { } ``` -{{< call-out "note" >}}For NGINX App Protect DoS v1, use: app_protect_dos_monitor ; {{< /call-out >}} +{{< call-out "note" >}}For F5 DoS for NGINX v1, use: app_protect_dos_monitor ; {{< /call-out >}} 2. HTTP/2 Over SSL @@ -277,7 +277,7 @@ Second argument is the destination (the location which the events will be sent t - `stderr` (**default**) - `{absolute_file_path}`, i.e. `/shared/dos_sec_logger.log` -Implemented according to: [NGINX App Protect DoS Security Log]({{< ref "/nap-dos/monitoring/security-log.md" >}}) +Implemented according to: [F5 DoS for NGINX Security Log]({{< ref "/nap-dos/monitoring/security-log.md" >}}) {{< call-out "note" >}} @@ -336,7 +336,7 @@ Second and Third arguments are optional; if one or more is not written, the defa If liveness is enabled, a request with URI and PORT that matches the probe configuration (i.e. `/app_protect_dos_liveness:8090`) will be answered with RC 200 "Alive" by our NGINX module, without being counted or pass to other handlers nor the backend server. -Any other response will indicate that our NGINX module (NGINX App Protect DoS) has not received the request (possibly means that NGINX is down). +Any other response will indicate that our NGINX module (F5 DoS for NGINX) has not received the request (possibly means that NGINX is down). **Example:** @@ -363,7 +363,7 @@ Second and Third arguments are optional; if one or more is not written, the defa If readiness is enabled, a request with URI and PORT that matches the probe configuration (i.e. `/app_protect_dos_readiness:8090`) will be answered with RC 200 "Ready" or RC 503 "Not Ready" by our NGINX module, without being counted or pass to other handlers nor the backend server. -Any other response will indicate that our NGINX module (NGINX App Protect DoS) has not received the request (possibly means that NGINX is down). +Any other response will indicate that our NGINX module (F5 DoS for NGINX) has not received the request (possibly means that NGINX is down). RC 200 "Ready" will occur if two conditions are met: @@ -402,7 +402,7 @@ This directive is used to enable the App Protect DoS monitoring capability via R The REST API interface provides extended metrics information of the Protected Objects. It can be used by sending REST API requests manually or by using the App Protect DoS dashboard page. -For more information refer to [NGINX App Protect DoS Live Activity Monitoring]({{< ref "/nap-dos/monitoring/live-activity-monitoring.md" >}}) +For more information refer to [F5 DoS for NGINX Live Activity Monitoring]({{< ref "/nap-dos/monitoring/live-activity-monitoring.md" >}}) **Example:** @@ -432,13 +432,13 @@ syn_drop is an optional parameter; the default value is "off".
syn_drop=on mode is applicable for plane HTTP services or HTTPS when the `tls_fingerprint` feature is disabled. Refer to policy parameter "tls_fingerprint" in [Policy directive](#policy-directive-app_protect_dos_policy_file). In syn_drop mode, the SYN packet of detected bad actors will be dropped. -syn_drop mode is recommended for the deployments of NGINX App Protect DoS at the perimeter network or behind L3 load balancer. -Using this mode when NGINX App Protect DoS is deployed behind L4/L7 load balancer may result in the load balancer’s starvation during an attack. +syn_drop mode is recommended for the deployments of F5 DoS for NGINX at the perimeter network or behind L3 load balancer. +Using this mode when F5 DoS for NGINX is deployed behind L4/L7 load balancer may result in the load balancer’s starvation during an attack. {{< call-out "note" >}} To use this directive you need to install the eBPF package. -For more information about eBPF, you can read the [Accelerating DDoS Mitigation with eBPF in F5 NGINX App Protect DoS](https://www.f5.com/company/blog/nginx/accelerating-ddos-mitigation-with-ebpf-in-f5-nginx-app-protect-dos) article. +For more information about eBPF, you can read the [Accelerating DDoS Mitigation with eBPF in F5 F5 DoS for NGINX](https://www.f5.com/company/blog/nginx/accelerating-ddos-mitigation-with-ebpf-in-f5-nginx-app-protect-dos) article. {{< /call-out >}} diff --git a/content/nap-dos/monitoring/_index.md b/content/nap-dos/monitoring/_index.md index 8485a67c4..fcfcc015b 100644 --- a/content/nap-dos/monitoring/_index.md +++ b/content/nap-dos/monitoring/_index.md @@ -1,6 +1,6 @@ --- description: Documentation explaining how to monitor, generate logs for, and debug - F5 NGINX App Protect DoS. + F5 F5 DoS for NGINX. title: Monitoring weight: 130 url: /nginx-app-protect-dos/monitoring/ diff --git a/content/nap-dos/monitoring/access-log.md b/content/nap-dos/monitoring/access-log.md index 0efcb3fb0..f9cac357b 100644 --- a/content/nap-dos/monitoring/access-log.md +++ b/content/nap-dos/monitoring/access-log.md @@ -1,7 +1,7 @@ --- -description: Learn about the F5 NGINX App Protect DoS Request Log Mechanism. +description: Learn about the F5 F5 DoS for NGINX Request Log Mechanism. nd-docs: DOCS-668 -title: NGINX App Protect DoS Access Log Request Mechanism +title: F5 DoS for NGINX Access Log Request Mechanism toc: true weight: 160 type: diff --git a/content/nap-dos/monitoring/live-activity-monitoring.md b/content/nap-dos/monitoring/live-activity-monitoring.md index e28fb571b..59d4e5ed6 100644 --- a/content/nap-dos/monitoring/live-activity-monitoring.md +++ b/content/nap-dos/monitoring/live-activity-monitoring.md @@ -1,25 +1,25 @@ --- -description: Learn about the F5 NGINX App Protect DoS Live Activity Monitoring. +description: Learn about the F5 F5 DoS for NGINX Live Activity Monitoring. nd-docs: DOCS-1389 -title: NGINX App Protect DoS Live Activity Monitoring +title: F5 DoS for NGINX Live Activity Monitoring toc: true weight: 140 type: - how-to --- -{{< img src="/dashboard/dos-tab.png" alt="NGINX App Protect DoS Dashboard" >}} +{{< img src="/dashboard/dos-tab.png" alt="F5 DoS for NGINX Dashboard" >}} ## Overview -F5 NGINX App Protect DoS offers a variety of application monitoring tools: +F5 F5 DoS for NGINX offers a variety of application monitoring tools: - **App Protect DoS Dashboard Page**: This dynamic interface provides real-time monitoring and details of Protected Objects. -- **NGINX App Protect DoS REST API**: This interface offers comprehensive metrics about the Protected Objects. +- **F5 DoS for NGINX REST API**: This interface offers comprehensive metrics about the Protected Objects. ## Prerequisites -- NGINX Plus R26 or later is required for accessing the NGINX App Protect DoS REST API and the DoS Dashboard. +- NGINX Plus R26 or later is required for accessing the F5 DoS for NGINX REST API and the DoS Dashboard. ## API Configuration Steps @@ -133,7 +133,7 @@ In multi-instance environments with an arbitrator, these statistics will be comb | Mitigations/s | - | Number of mitigated requests per second | | Requests | - | Total number of incoming requests | | Mitigations | - | Total number of mitigated requests | -| Learning | [ready\|ba only\|not ready] | Whether NGINX App Protect DoS collected enough data to protect the Protected Object | +| Learning | [ready\|ba only\|not ready] | Whether F5 DoS for NGINX collected enough data to protect the Protected Object | | Protocol | [http1\|http2\|grpc] | As defined by the `protocol` argument of the `app_protect_dos_monitor` directive | | Mitigation Mode | [standard\|conservative\|none] | As defined by the `mitigation_mode` object in the JSON policy file from the `app_protect_dos_policy_file` directive | | Signatures | [on\|off] | As defined by the `signatures` object in the JSON policy file from the `app_protect_dos_policy_file` directive. Values - on/off | diff --git a/content/nap-dos/monitoring/operation-log.md b/content/nap-dos/monitoring/operation-log.md index 2a12d5eaf..3aa07a669 100644 --- a/content/nap-dos/monitoring/operation-log.md +++ b/content/nap-dos/monitoring/operation-log.md @@ -1,7 +1,7 @@ --- -description: Learn about the F5 NGINX App Protect DoS Operation Log. +description: Learn about the F5 F5 DoS for NGINX Operation Log. nd-docs: DOCS-669 -title: NGINX App Protect DoS Operation Log +title: F5 DoS for NGINX Operation Log toc: true weight: 180 type: @@ -18,7 +18,7 @@ The operation logs consists of system operational and health events. The events |Event Type|Level|Meaning| |--------- |-----|------ | -|Configuration Error |error |There were errors in the [directives]({{< ref "/nap-dos/directives-and-policy/learn-about-directives-and-policy.md" >}}) in the `nginx.conf` file.
Configuration error event is produced when one of F5 NGINX App Protect DoS directives is supplied with an incorrect data. An additional information will be added to the message, describing what was incorrect. NGINX will run with default values for this directive.
Please note that if the directive supplied with an incorrect number of arguments then NGINX will issue an error and NGINX will not run. It is a generic NGINX behavior.| +|Configuration Error |error |There were errors in the [directives]({{< ref "/nap-dos/directives-and-policy/learn-about-directives-and-policy.md" >}}) in the `nginx.conf` file.
Configuration error event is produced when one of F5 F5 DoS for NGINX directives is supplied with an incorrect data. An additional information will be added to the message, describing what was incorrect. NGINX will run with default values for this directive.
Please note that if the directive supplied with an incorrect number of arguments then NGINX will issue an error and NGINX will not run. It is a generic NGINX behavior.| {{
}} @@ -50,7 +50,7 @@ The operation logs consists of system operational and health events. The events |Event Type|Level|Meaning| |--------- |-----|------ | -|Configuration Load Success | notice |The `APP_PROTECT_DOS` configuration process ended successfully: all policies, log configuration and global settings were loaded to NGINX App Protect DoS and all traffic will be handled by this configuration. The `error_message` contains warnings. This event is also generated on the initial configuration (when NGINX Plus starts).| +|Configuration Load Success | notice |The `APP_PROTECT_DOS` configuration process ended successfully: all policies, log configuration and global settings were loaded to F5 DoS for NGINX and all traffic will be handled by this configuration. The `error_message` contains warnings. This event is also generated on the initial configuration (when NGINX Plus starts).| {{}} diff --git a/content/nap-dos/monitoring/security-log.md b/content/nap-dos/monitoring/security-log.md index 642cde34e..16194c0bf 100644 --- a/content/nap-dos/monitoring/security-log.md +++ b/content/nap-dos/monitoring/security-log.md @@ -1,7 +1,7 @@ --- -description: Learn about the F5 NGINX App Protect DoS Security Log. +description: Learn about the F5 F5 DoS for NGINX Security Log. nd-docs: DOCS-670 -title: NGINX App Protect DoS Security Log +title: F5 DoS for NGINX Security Log toc: true weight: 140 type: @@ -24,7 +24,7 @@ The following table lists all the possible fields in the logs and their meaning. |----------------|--------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `date_time` | string | the date and time of the event | | `product` | string | always set to `app-protect-dos` | -| `product_version` | string | F5 NGINX App Protect DoS version | +| `product_version` | string | F5 F5 DoS for NGINX version | | `unit_hostname` | string | host name of the app-protect-dos instance | | `instance_id` | string | instance ID: container id from `/proc/self/cgroup`or hostname if container is is not available | | `vs_name` | string | A unique identifier (representing the protected object's name) of the location in the `nginx.conf` file that this request is associated with. It contains the line number of the containing server block in `nginx.conf`, the server name, a numeric discriminator that distinguishes between multiple entries within the same server, and the location name.
For example: `34-mydomain.com:0-~/.*php(2)`. | @@ -336,7 +336,7 @@ mitigated_connections_rps="0", ``` ### 2. Bad actor detection/expiration -Reports NGINX App Protect DoS decisions regarding bad actors. +Reports F5 DoS for NGINX decisions regarding bad actors. a. Example: **Bad Actor Detection** @@ -369,7 +369,7 @@ impact_rps="12", ``` ### 3. Attack signatures -Reports NGINX App Protect DoS decisions regarding signatures.
+Reports F5 DoS for NGINX decisions regarding signatures.
Example: **Attack Signature Detected** diff --git a/content/nap-dos/monitoring/types-of-logs.md b/content/nap-dos/monitoring/types-of-logs.md index 865adafd7..a127408c7 100644 --- a/content/nap-dos/monitoring/types-of-logs.md +++ b/content/nap-dos/monitoring/types-of-logs.md @@ -1,7 +1,7 @@ --- -description: Learn about the F5 NGINX App Protect DoS Logs Overview. +description: Learn about the F5 F5 DoS for NGINX Logs Overview. nd-docs: DOCS-671 -title: NGINX App Protect DoS Logs Overview +title: F5 DoS for NGINX Logs Overview toc: true weight: 130 type: @@ -13,7 +13,7 @@ There are 4 types of logs corresponding to App Protect DoS: - [Security Log](#security-log): The general picture of the site and how App Protect DoS processed it, including anomalies and signatures found. - [Operation Log](#operation-log): Events such as configuration errors or warnings. - [Debug Logs](#debug-log): Technical messages at different levels of severity used to debug and resolve incidents and error behaviors. -- [Request Logging](#request-log): F5 NGINX App Protect DoS adds information to each request logged to NGINX's access logging mechanism. +- [Request Logging](#request-log): F5 F5 DoS for NGINX adds information to each request logged to NGINX's access logging mechanism. {{< call-out "note" >}} NGINX does not have audit logs in the sense of *"**who** did **what**"*. This can be done either from the orchestration system controlling NGINX (such as NGINX Controller) or by tracking the configuration files and the systemd invocations using Linux tools. @@ -25,13 +25,13 @@ NGINX does not have audit logs in the sense of *"**who** did **what**"*. This ca |----|-----------------|-----------------------|-----------------|--------------------| | Debug | Log file name is the redirection in the invocation of the `admd` command line in the start script | Global (not part of `nginx.conf`)|Yes. Log file is in /var/log/adm/admd.log directory. There is currently no file rotation capability available for this log.| No | | Operation | `error_log` directive, part of core NGINX | `nginx.conf` - global | Yes, NGINX error log | Yes, NGINX error log | -|Request |NGINX has two directives for the access log:
- **access_log** - to turn [on\|off]
- **log_format** - to specify the required information regarding each request

NGINX App Protect DoS has several variables that can be added to the log_format directive, such as $app_protect_dos_outcome.

For more information refer to [NGINX App Protect DoS Access Log]({{< ref "/nap-dos/monitoring/access-log.md" >}}) | `nginx.conf` - global| Yes, NGINX access log | Yes, NGINX access log | -| Security | NGINX App Protect DoS has two directives in `nginx.conf`:
- app_protect_dos_security_log_enable to turn logging [on\|off]
- app_protect_dos_security_log to set it's logging configuration and destination

For more information refer:
- **Configuration**: [App Protect DoS - Directives and Policy]({{< ref "/nap-dos/directives-and-policy/learn-about-directives-and-policy.md">}})
- **Usage**: [NGINX App Protect DoS - Security Log]({{< ref "/nap-dos/monitoring/security-log.md" >}}) | `nginx.conf`: http, server, location | Yes, either stderr, or an absolute path to a local file are supported | Yes | +|Request |NGINX has two directives for the access log:
- **access_log** - to turn [on\|off]
- **log_format** - to specify the required information regarding each request

F5 DoS for NGINX has several variables that can be added to the log_format directive, such as $app_protect_dos_outcome.

For more information refer to [F5 DoS for NGINX Access Log]({{< ref "/nap-dos/monitoring/access-log.md" >}}) | `nginx.conf` - global| Yes, NGINX access log | Yes, NGINX access log | +| Security | F5 DoS for NGINX has two directives in `nginx.conf`:
- app_protect_dos_security_log_enable to turn logging [on\|off]
- app_protect_dos_security_log to set it's logging configuration and destination

For more information refer:
- **Configuration**: [App Protect DoS - Directives and Policy]({{< ref "/nap-dos/directives-and-policy/learn-about-directives-and-policy.md">}})
- **Usage**: [F5 DoS for NGINX - Security Log]({{< ref "/nap-dos/monitoring/security-log.md" >}}) | `nginx.conf`: http, server, location | Yes, either stderr, or an absolute path to a local file are supported | Yes | {{}} ## Security Log - The security logs contain information about the status of the protected objects. It gives a general picture about each protected object in terms of traffic intensity, health of the backend server, learning and mitigations. For more information refer to [NGINX App Protect DoS Security Log]({{< ref "/nap-dos/monitoring/security-log.md" >}}) documentation. + The security logs contain information about the status of the protected objects. It gives a general picture about each protected object in terms of traffic intensity, health of the backend server, learning and mitigations. For more information refer to [F5 DoS for NGINX Security Log]({{< ref "/nap-dos/monitoring/security-log.md" >}}) documentation. ## Operation Log The operation logs consists of system operational and health events. The events are sent to the NGINX error log and are distinguished by the `APP_PROTECT_DOS` prefix followed by JSON body. The log level depends on the event: success is usually indicated by `notice`, while failure is indicated by `error`. The timestamp is inherent in the error log. For more information refer to [App Protect DoS Operation Log]({{< ref "/nap-dos/monitoring/operation-log.md" >}}) documentation. @@ -43,13 +43,13 @@ NGINX does not have audit logs in the sense of *"**who** did **what**"*. This ca This directive determines the format of the log messages using predefined variables. App Protect DoS will enrich this set of variables with several security log attributes that are available to be included in the `log_format`. If `log_format` is not specified then the built-in format `combined` is used but, because that format does not include the extended App Protect DoS variables, this directive must be used when the user wants to add App Protect DoS information to the log. ### access_log -This directive determines the destination of the `access_log` and the name of the format. The default is the file `/var/log/nginx/access.log` using the combined format. In order to use the custom format that includes the NGINX App Protect DoS variables, use this directive with the name of the desired format. +This directive determines the destination of the `access_log` and the name of the format. The default is the file `/var/log/nginx/access.log` using the combined format. In order to use the custom format that includes the F5 DoS for NGINX variables, use this directive with the name of the desired format. ### App Protect DoS Variables -These are the variables added to Access Log. They are a subset of the Security log attributes. The Security log names are prefixed with `$app_protect_dos`.
For more information refer to [NGINX App Protect DoS Access Log]({{< ref "/nap-dos/monitoring/access-log.md" >}}) +These are the variables added to Access Log. They are a subset of the Security log attributes. The Security log names are prefixed with `$app_protect_dos`.
For more information refer to [F5 DoS for NGINX Access Log]({{< ref "/nap-dos/monitoring/access-log.md" >}}) -## Debug Log - NGINX App Protect DoS -The NGINX App Protect DoS Debug log is used to troubleshoot the functionality of the product.
+## Debug Log - F5 DoS for NGINX +The F5 DoS for NGINX Debug log is used to troubleshoot the functionality of the product.
The path of the log is at a fixed location: `/var/log/adm/admd.log`. @@ -62,12 +62,12 @@ admd -l DEBUG_LEVEL ``` {{< call-out "note" >}} -`nginx.conf` does not refer to the NGINX App Protect DoS debug log configuration neither directly nor indirectly. +`nginx.conf` does not refer to the F5 DoS for NGINX debug log configuration neither directly nor indirectly. {{< /call-out >}} ## NGINX Error log -The NGINX Error log is used to troubleshoot the configuration portion of NGINX App Protect DoS. +The NGINX Error log is used to troubleshoot the configuration portion of F5 DoS for NGINX. The file is called `error.log` and its path and debug level is determined in `nginx.conf` by the directive `error_log`.
diff --git a/content/nap-dos/releases/_index.md b/content/nap-dos/releases/_index.md index 7ac8e5f15..b152af861 100644 --- a/content/nap-dos/releases/_index.md +++ b/content/nap-dos/releases/_index.md @@ -1,5 +1,5 @@ --- -description: Stay up-to-date with the latest F5 NGINX App Protect DoS release. +description: Stay up-to-date with the latest F5 F5 DoS for NGINX release. title: Releases weight: 220 url: /nginx-app-protect-dos/releases/ diff --git a/content/nap-dos/releases/about-1.0.md b/content/nap-dos/releases/about-1.0.md index b3741d126..3b1fca049 100644 --- a/content/nap-dos/releases/about-1.0.md +++ b/content/nap-dos/releases/about-1.0.md @@ -5,7 +5,7 @@ weight: 260 nd-docs: DOCS-672 --- -Here you can find the release information for F5 NGINX App Protect DoS v1. NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +Here you can find the release information for F5 F5 DoS for NGINX v1. F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. ## Release 1.0 @@ -69,7 +69,7 @@ July 6, 2021 - `proxy_request_buffering off` is not supported. -- NGINX App Protect DoS does not protect `grpc` and `http2` services. The traffic is bypassed. +- F5 DoS for NGINX does not protect `grpc` and `http2` services. The traffic is bypassed. - [TLS fingerprint]({{< ref "/nap-dos/directives-and-policy/learn-about-directives-and-policy.md#policy-directive-app_protect_dos_policy_file" >}}) feature is not used in CentOS 7.4 due to the old OpenSSL version. The required OpenSSL version is 1.1.1 or higher. diff --git a/content/nap-dos/releases/about-1.1.0.md b/content/nap-dos/releases/about-1.1.0.md index f853f5843..69a2df614 100644 --- a/content/nap-dos/releases/about-1.1.0.md +++ b/content/nap-dos/releases/about-1.1.0.md @@ -1,11 +1,11 @@ --- -title: NGINX App Protect DoS Arbitrator 1.1.0 +title: F5 DoS for NGINX Arbitrator 1.1.0 toc: true weight: 220 nd-docs: DOCS-673 --- -Here you can find the release information for F5 NGINX App Protect DoS Arbitrator v1.1.0. +Here you can find the release information for F5 F5 DoS for NGINX Arbitrator v1.1.0. ## Arbitrator Service Release 1.1.0 @@ -25,13 +25,13 @@ This release is focused on security and stability. ### Important Notes -- The current release upgrades Arbitrator service only. This change is agnostic to NGINX App Protect DoS functionalities. +- The current release upgrades Arbitrator service only. This change is agnostic to F5 DoS for NGINX functionalities. - `proxy_request_buffering` off is not supported. - gRPC and HTTP/2 protection require active monitoring of the protected service. The directive `app_protect_dos_monitor` is mandatory for these use cases, otherwise, the attack will not be detected. -- gRPC and HTTP/2 protection are available only on Debian 10, Ubuntu 18.04, and Ubuntu 20.04 platforms. For the rest of the platforms, NGINX App Protect DoS does not protect gRPC and HTTP/2 services. The traffic is bypassed. +- gRPC and HTTP/2 protection are available only on Debian 10, Ubuntu 18.04, and Ubuntu 20.04 platforms. For the rest of the platforms, F5 DoS for NGINX does not protect gRPC and HTTP/2 services. The traffic is bypassed. - [TLS fingerprint]({{< ref "/nap-dos/directives-and-policy/learn-about-directives-and-policy.md#policy-directive-app_protect_dos_policy_file" >}}) feature is not used in CentOS 7.4 due to the old OpenSSL version. The required OpenSSL version is 1.1.1 or higher. @@ -44,4 +44,4 @@ This release is focused on security and stability. - `successful_responses` instead of `successful_transactions`
- `unsuccessful_requests` instead of `unsuccessful_requests_count`. -- In the case of an upgrade from the previous `app-protect-dos` version, it's necessary to remove the old `nginx-plus` and install the new `app-protect-dos` that will install a correspondent version of `nginx-plus` as described in the [NGINX App Protect DoS Deployment Guide]({{< ref "/nap-dos/deployment-guide/learn-about-deployment.md" >}}). +- In the case of an upgrade from the previous `app-protect-dos` version, it's necessary to remove the old `nginx-plus` and install the new `app-protect-dos` that will install a correspondent version of `nginx-plus` as described in the [F5 DoS for NGINX Deployment Guide]({{< ref "/nap-dos/deployment-guide/learn-about-deployment.md" >}}). diff --git a/content/nap-dos/releases/about-1.1.1.md b/content/nap-dos/releases/about-1.1.1.md index 173b8e1cd..027b5f59b 100644 --- a/content/nap-dos/releases/about-1.1.1.md +++ b/content/nap-dos/releases/about-1.1.1.md @@ -1,11 +1,11 @@ --- -title: NGINX App Protect DoS Arbitrator 1.1.1 +title: F5 DoS for NGINX Arbitrator 1.1.1 toc: true weight: 115 nd-docs: DOCS-1205 --- -Here you can find the release information for F5 NGINX App Protect DoS Arbitrator v1.1.1. +Here you can find the release information for F5 F5 DoS for NGINX Arbitrator v1.1.1. ## Arbitrator Service Release 1.1.1 diff --git a/content/nap-dos/releases/about-1.2.0.md b/content/nap-dos/releases/about-1.2.0.md index ed606e4e0..1804d59fc 100644 --- a/content/nap-dos/releases/about-1.2.0.md +++ b/content/nap-dos/releases/about-1.2.0.md @@ -1,11 +1,11 @@ --- -title: NGINX App Protect DoS Arbitrator 1.2.0 +title: F5 DoS for NGINX Arbitrator 1.2.0 toc: true weight: 61 nd-docs: DOCS-1782 --- -Here you can find the release information for F5 NGINX App Protect DoS Arbitrator v1.2.0 +Here you can find the release information for F5 F5 DoS for NGINX Arbitrator v1.2.0 ## Arbitrator Service Release 1.2.0 diff --git a/content/nap-dos/releases/about-2.0.md b/content/nap-dos/releases/about-2.0.md index 7fb5b9005..81b7fecc0 100644 --- a/content/nap-dos/releases/about-2.0.md +++ b/content/nap-dos/releases/about-2.0.md @@ -1,11 +1,11 @@ --- -title: NGINX App Protect DoS 2.0 +title: F5 DoS for NGINX 2.0 toc: true weight: 220 nd-docs: DOCS-674 --- -Here you can find the release information for F5 NGINX App Protect DoS v2.0. NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +Here you can find the release information for F5 F5 DoS for NGINX v2.0. F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. ## Release 2.0 @@ -72,7 +72,7 @@ October 20, 2021 - gRPC and HTTP/2 protection require active monitoring of the protected service. The directive `app_protect_dos_monitor` is mandatory for these use cases, otherwise, the attack will not be detected. -- gRPC and HTTP/2 protection are available only on Debian 10, Ubuntu 18.04 and Ubuntu 20.04 platforms. For the rest of the platforms, NGINX App Protect DoS does not protect gRPC and HTTP/2 services. The traffic is bypassed. +- gRPC and HTTP/2 protection are available only on Debian 10, Ubuntu 18.04 and Ubuntu 20.04 platforms. For the rest of the platforms, F5 DoS for NGINX does not protect gRPC and HTTP/2 services. The traffic is bypassed. - [TLS fingerprint]({{< ref "/nap-dos/directives-and-policy/learn-about-directives-and-policy.md#policy-directive-app_protect_dos_policy_file" >}}) feature is not used in CentOS 7.4 due to the old OpenSSL version. The required OpenSSL version is 1.1.1 or higher. @@ -85,4 +85,4 @@ October 20, 2021 - `successful_responses` instead of `successful_transactions`
- `unsuccessful_requests` instead of `unsuccessful_requests_count`. -- In the case of an upgrade from the previous `app-protect-dos` version, it's necessary to remove the old `nginx-plus` and install the new `app-protect-dos` that will install a correspondent version of `nginx-plus` as described in the [NGINX App Protect DoS Deployment Guide]({{< ref "/nap-dos/deployment-guide/learn-about-deployment.md" >}}). +- In the case of an upgrade from the previous `app-protect-dos` version, it's necessary to remove the old `nginx-plus` and install the new `app-protect-dos` that will install a correspondent version of `nginx-plus` as described in the [F5 DoS for NGINX Deployment Guide]({{< ref "/nap-dos/deployment-guide/learn-about-deployment.md" >}}). diff --git a/content/nap-dos/releases/about-2.1.md b/content/nap-dos/releases/about-2.1.md index 462ba2bbe..fb584cb6b 100644 --- a/content/nap-dos/releases/about-2.1.md +++ b/content/nap-dos/releases/about-2.1.md @@ -1,11 +1,11 @@ --- -title: NGINX App Protect DoS 2.1 +title: F5 DoS for NGINX 2.1 toc: true weight: 200 nd-docs: DOCS-831 --- -Here you can find the release information for F5 NGINX App Protect DoS v2.1. NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +Here you can find the release information for F5 F5 DoS for NGINX v2.1. F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. ## Release 2.1 diff --git a/content/nap-dos/releases/about-2.2.md b/content/nap-dos/releases/about-2.2.md index 147cd6f51..cec7466b0 100644 --- a/content/nap-dos/releases/about-2.2.md +++ b/content/nap-dos/releases/about-2.2.md @@ -1,17 +1,17 @@ --- -title: NGINX App Protect DoS 2.2 +title: F5 DoS for NGINX 2.2 toc: true weight: 180 nd-docs: DOCS-839 --- -Here you can find the release information for F5 NGINX App Protect DoS v2.2. NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +Here you can find the release information for F5 F5 DoS for NGINX v2.2. F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. ## Release 2.2 February 15, 2022 -In this release, support for NGINX App Protect DoS is added to NGINX Plus R26. +In this release, support for F5 DoS for NGINX is added to NGINX Plus R26. ### New Features @@ -50,7 +50,7 @@ In this release, support for NGINX App Protect DoS is added to NGINX Plus R26. - Monitor requests are sent in new connections. It improves monitoring health capability and allows better detection of slow POST attacks. - Adaptive memory allocation by adminstall in order to support maximum cores. - The amount of allocated memory for NGINX App Protect DoS is controlled by an argument of adminstall. + The amount of allocated memory for F5 DoS for NGINX is controlled by an argument of adminstall. The default value is 80 MB. For certain deployments, this amount of memory size is not enough. The default memory size is adaptive now. If the Virtual Machine (VM) has a big number of CPU cores, then we can also increase the amount of memory. For the case of up to 4 CPU cores, the allocated memory is 80MB, for more than 4 CPU cores, the allocated memory will be calculated as 80MB + CPUs * 2.5MB diff --git a/content/nap-dos/releases/about-2.3.md b/content/nap-dos/releases/about-2.3.md index c98c7be28..c0c70fcea 100644 --- a/content/nap-dos/releases/about-2.3.md +++ b/content/nap-dos/releases/about-2.3.md @@ -1,11 +1,11 @@ --- -title: NGINX App Protect DoS 2.3 +title: F5 DoS for NGINX 2.3 toc: true weight: 170 nd-docs: DOCS-856 --- -Here you can find the release information for F5 NGINX App Protect DoS v2.3. NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +Here you can find the release information for F5 F5 DoS for NGINX v2.3. F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. ## Release 2.3 diff --git a/content/nap-dos/releases/about-2.4.md b/content/nap-dos/releases/about-2.4.md index bf8502638..c20de446c 100644 --- a/content/nap-dos/releases/about-2.4.md +++ b/content/nap-dos/releases/about-2.4.md @@ -1,11 +1,11 @@ --- -title: NGINX App Protect DoS 2.4 +title: F5 DoS for NGINX 2.4 toc: true weight: 160 nd-docs: DOCS-890 --- -Here you can find the release information for F5 NGINX App Protect DoS v2.4. NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +Here you can find the release information for F5 F5 DoS for NGINX v2.4. F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. ## Release 2.4 @@ -54,7 +54,7 @@ June 28, 2022 ### Resolved Issues -- Honoring allow/deny directives for restricting access to the NGINX App Protect DoS Live Activity Monitoring API location. +- Honoring allow/deny directives for restricting access to the F5 DoS for NGINX Live Activity Monitoring API location. ### Important Notes diff --git a/content/nap-dos/releases/about-3.0.md b/content/nap-dos/releases/about-3.0.md index 9310fa583..fe076afd2 100644 --- a/content/nap-dos/releases/about-3.0.md +++ b/content/nap-dos/releases/about-3.0.md @@ -1,11 +1,11 @@ --- -title: NGINX App Protect DoS 3.0 +title: F5 DoS for NGINX 3.0 toc: true weight: 150 nd-docs: DOCS-946 --- -Here you can find the release information for F5 NGINX App Protect DoS v3.0. NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +Here you can find the release information for F5 F5 DoS for NGINX v3.0. F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. ## Release 3.0 @@ -15,7 +15,7 @@ September 21, 2022 - L4 mitigation (with eBPF) - DoS Live Activity Monitoring with requests mitigation graphs -- DoS Live Activity Monitoring support for multi-instances NGINX App Protect DoS setups (multi-VMs, multi-replicas) +- DoS Live Activity Monitoring support for multi-instances F5 DoS for NGINX setups (multi-VMs, multi-replicas) ### Supported Packages @@ -57,8 +57,8 @@ September 21, 2022 ### Important Notes - L4 (eBPF) mitigation helps mitigate volumetric attacks by slowing down the opening of TCP connections by the attackers. -It is recommended to deploy NGINX App Protect DoS with L4 (eBPF) mitigation at the perimeter network or behind L3 load balancer. -Installing NGINX App Protect DoS with L4 (eBPF) mitigation behind L4/L7 load balancer may result in the load balancer's starvation during an attack. +It is recommended to deploy F5 DoS for NGINX with L4 (eBPF) mitigation at the perimeter network or behind L3 load balancer. +Installing F5 DoS for NGINX with L4 (eBPF) mitigation behind L4/L7 load balancer may result in the load balancer's starvation during an attack. - If NGINX App Protect WAF is installed, app protect should be disabled for the location of DoS Live Activity Monitoring API. diff --git a/content/nap-dos/releases/about-3.1.md b/content/nap-dos/releases/about-3.1.md index 6c2311330..f476dd9a3 100644 --- a/content/nap-dos/releases/about-3.1.md +++ b/content/nap-dos/releases/about-3.1.md @@ -1,26 +1,26 @@ --- -title: NGINX App Protect DoS 3.1 +title: F5 DoS for NGINX 3.1 toc: true weight: 140 nd-docs: DOCS-995 --- -Here you can find the release information for F5 NGINX App Protect DoS v3.1. NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +Here you can find the release information for F5 F5 DoS for NGINX v3.1. F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. ## Release 3.1 November 29, 2022 -In this release, NGINX App Protect DoS supports NGINX Plus R28. +In this release, F5 DoS for NGINX supports NGINX Plus R28. ### New Features - Support for NGINX Plus R28. -- NGINX App protect DoS can be deployed behind L4/L7 load balancers when L4 protection is enabled. -- Fixed the issue: Installing NGINX App protect DoS with L4 (eBPF) mitigation behind L4/L7 load balancer may result in the load balancer's starvation during an attack. +- F5 DoS for NGINX can be deployed behind L4/L7 load balancers when L4 protection is enabled. +- Fixed the issue: Installing F5 DoS for NGINX with L4 (eBPF) mitigation behind L4/L7 load balancer may result in the load balancer's starvation during an attack. - Support for [proxy_protocol]({{< ref "/nap-dos/directives-and-policy/learn-about-directives-and-policy.md#monitor-directive-app_protect_dos_monitor" >}}) configuration for server health monitoring.
Previously, server health monitoring could not be used when the listen directive of the correspondent server block contained the `proxy_protocol` parameter.
-This disallowed using NGINX App protect DoS for Denial of Service (DoS) protection for HTTP2 and gRPC protected objects in the `proxy_protocol` configuration. +This disallowed using F5 DoS for NGINX for Denial of Service (DoS) protection for HTTP2 and gRPC protected objects in the `proxy_protocol` configuration. ### Supported Packages diff --git a/content/nap-dos/releases/about-4.0.md b/content/nap-dos/releases/about-4.0.md index 5dab6acfd..95a8fa1a7 100644 --- a/content/nap-dos/releases/about-4.0.md +++ b/content/nap-dos/releases/about-4.0.md @@ -1,11 +1,11 @@ --- -title: NGINX App Protect DoS 4.0 +title: F5 DoS for NGINX 4.0 toc: true weight: 120 nd-docs: DOCS-1115 --- -Here you can find the release information for F5 NGINX App Protect DoS v4.0. NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +Here you can find the release information for F5 F5 DoS for NGINX v4.0. F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. ## Release 4.0 diff --git a/content/nap-dos/releases/about-4.1.md b/content/nap-dos/releases/about-4.1.md index 442e20563..3b7543d2f 100644 --- a/content/nap-dos/releases/about-4.1.md +++ b/content/nap-dos/releases/about-4.1.md @@ -1,17 +1,17 @@ --- -title: NGINX App Protect DoS 4.1 +title: F5 DoS for NGINX 4.1 toc: true weight: 110 nd-docs: DOCS-1203 --- -Here you can find the release information for F5 NGINX App Protect DoS v4.1. NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +Here you can find the release information for F5 F5 DoS for NGINX v4.1. F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. ## Release 4.1 May 2, 2023 -In this release, NGINX App Protect DoS supports NGINX Plus R29. +In this release, F5 DoS for NGINX supports NGINX Plus R29. ### New Features @@ -91,4 +91,4 @@ In this release, NGINX App Protect DoS supports NGINX Plus R29. - The recommended option of running NGINX Plus in a Docker Container is with the `daemon off` flag. It's mandatory for UBI 8. -- The package dependencies for NGINX App Protect DoS have changed in this release, replacing the `curl` dependencies with `libcurl` only. For more information, see the [NGINX App Protect DoS Deployment Guide]({{< ref "/nap-dos/deployment-guide/learn-about-deployment.md#prerequisites" >}}). +- The package dependencies for F5 DoS for NGINX have changed in this release, replacing the `curl` dependencies with `libcurl` only. For more information, see the [F5 DoS for NGINX Deployment Guide]({{< ref "/nap-dos/deployment-guide/learn-about-deployment.md#prerequisites" >}}). diff --git a/content/nap-dos/releases/about-4.2.md b/content/nap-dos/releases/about-4.2.md index 03152db74..88911fefa 100644 --- a/content/nap-dos/releases/about-4.2.md +++ b/content/nap-dos/releases/about-4.2.md @@ -1,17 +1,17 @@ --- -title: NGINX App Protect DoS 4.2 +title: F5 DoS for NGINX 4.2 toc: true weight: 100 nd-docs: DOCS-1254 --- -Here you can find the release information for F5 NGINX App Protect DoS v4.2. NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +Here you can find the release information for F5 F5 DoS for NGINX v4.2. F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. ## Release 4.2 August 15, 2023 -In this release, NGINX App Protect DoS supports NGINX Plus R30. +In this release, F5 DoS for NGINX supports NGINX Plus R30. ### New Features @@ -95,6 +95,6 @@ In this release, NGINX App Protect DoS supports NGINX Plus R30. - The recommended option of running NGINX Plus in a Docker Container is with the `daemon off` flag. It's mandatory for UBI 8. -- The package dependencies for NGINX App Protect DoS have changed in this release, replacing the `curl` dependencies with `libcurl` only. For more information, see the [NGINX App Protect DoS Deployment Guide]({{< ref "/nap-dos/deployment-guide/learn-about-deployment.md#prerequisites" >}}). +- The package dependencies for F5 DoS for NGINX have changed in this release, replacing the `curl` dependencies with `libcurl` only. For more information, see the [F5 DoS for NGINX Deployment Guide]({{< ref "/nap-dos/deployment-guide/learn-about-deployment.md#prerequisites" >}}). - Starting with this release, Ubuntu 18.04 support has been deprecated. diff --git a/content/nap-dos/releases/about-4.3.md b/content/nap-dos/releases/about-4.3.md index 5ae85ca28..19b6f8d69 100644 --- a/content/nap-dos/releases/about-4.3.md +++ b/content/nap-dos/releases/about-4.3.md @@ -1,17 +1,17 @@ --- -title: NGINX App Protect DoS 4.3 +title: F5 DoS for NGINX 4.3 toc: true weight: 90 nd-docs: DOCS-1361 --- -Here you can find the release information for F5 NGINX App Protect DoS v4.3. NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +Here you can find the release information for F5 F5 DoS for NGINX v4.3. F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. ## Release 4.3 December 19, 2023 -In this release, NGINX App Protect DoS supports NGINX Plus R31. +In this release, F5 DoS for NGINX supports NGINX Plus R31. ### New Features diff --git a/content/nap-dos/releases/about-4.4.md b/content/nap-dos/releases/about-4.4.md index 9bd7ac240..dcacb406a 100644 --- a/content/nap-dos/releases/about-4.4.md +++ b/content/nap-dos/releases/about-4.4.md @@ -1,17 +1,17 @@ --- -title: NGINX App Protect DoS 4.4 +title: F5 DoS for NGINX 4.4 toc: true weight: 80 nd-docs: DOCS-1785 --- -Here you can find the release information for F5 NGINX App Protect DoS v4.4. NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +Here you can find the release information for F5 F5 DoS for NGINX v4.4. F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. ## Release 4.4 May 29, 2024 -In this release, NGINX App Protect DoS supports NGINX Plus R32. +In this release, F5 DoS for NGINX supports NGINX Plus R32. ### New Features diff --git a/content/nap-dos/releases/about-4.5.md b/content/nap-dos/releases/about-4.5.md index 969d4e6b1..a1ba513cd 100644 --- a/content/nap-dos/releases/about-4.5.md +++ b/content/nap-dos/releases/about-4.5.md @@ -1,13 +1,13 @@ --- -title: NGINX App Protect DoS 4.5 +title: F5 DoS for NGINX 4.5 toc: true weight: 70 nd-docs: DOCS-1784 --- -Here you can find the release information for F5 NGINX App Protect DoS v4.5 +Here you can find the release information for F5 F5 DoS for NGINX v4.5 -NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. --- @@ -15,7 +15,7 @@ NGINX App Protect DoS provides behavioral protection against Denial of Service ( Nov 19, 2024 -NGINX App Protect DoS 4.5 adds support for NGINX Plus R33. +F5 DoS for NGINX 4.5 adds support for NGINX Plus R33. --- diff --git a/content/nap-dos/releases/about-4.6.md b/content/nap-dos/releases/about-4.6.md index b45af1e0d..58f9689c1 100644 --- a/content/nap-dos/releases/about-4.6.md +++ b/content/nap-dos/releases/about-4.6.md @@ -1,13 +1,13 @@ --- -title: NGINX App Protect DoS 4.6 +title: F5 DoS for NGINX 4.6 toc: true weight: 60 nd-docs: DOCS-1783 --- -Here you can find the release information for F5 NGINX App Protect DoS v4.6 +Here you can find the release information for F5 F5 DoS for NGINX v4.6 -NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. --- diff --git a/content/nap-dos/releases/about-4.7.md b/content/nap-dos/releases/about-4.7.md index 77e7f2e9a..8fa7cb6c8 100644 --- a/content/nap-dos/releases/about-4.7.md +++ b/content/nap-dos/releases/about-4.7.md @@ -1,13 +1,13 @@ --- -title: NGINX App Protect DoS 4.7 +title: F5 DoS for NGINX 4.7 toc: true weight: 50 nd-docs: DOCS-1783 --- -Here you can find the release information for F5 NGINX App Protect DoS v4.7 +Here you can find the release information for F5 F5 DoS for NGINX v4.7 -NGINX App Protect DoS provides behavioral protection against Denial of Service (DoS) for your web applications. +F5 DoS for NGINX provides behavioral protection against Denial of Service (DoS) for your web applications. ## Release 4.7 diff --git a/content/nap-dos/troubleshooting-guide/_index.md b/content/nap-dos/troubleshooting-guide/_index.md index ccc6eeebc..6597d168d 100644 --- a/content/nap-dos/troubleshooting-guide/_index.md +++ b/content/nap-dos/troubleshooting-guide/_index.md @@ -1,5 +1,5 @@ --- -description: Learn how to troubleshoot your F5 NGINX App Protect DoS deployment. +description: Learn how to troubleshoot your F5 F5 DoS for NGINX deployment. title: Troubleshooting Guide weight: 200 url: /nginx-app-protect-dos/troubleshooting-guide/ diff --git a/content/nap-dos/troubleshooting-guide/how-to-troubleshoot.md b/content/nap-dos/troubleshooting-guide/how-to-troubleshoot.md index 7ac06a6a7..f9e9839f6 100644 --- a/content/nap-dos/troubleshooting-guide/how-to-troubleshoot.md +++ b/content/nap-dos/troubleshooting-guide/how-to-troubleshoot.md @@ -1,7 +1,7 @@ --- -description: Learn about the F5 NGINX App Protect DoS Troubleshooting Guide. +description: Learn about the F5 F5 DoS for NGINX Troubleshooting Guide. nd-docs: DOCS-675 -title: NGINX App Protect DoS Troubleshooting Guide +title: F5 DoS for NGINX Troubleshooting Guide toc: true weight: 200 type: @@ -10,7 +10,7 @@ type: ## Overview -This Troubleshooting Guide is intended to provide guidance to customers in the detection and correction of programming issues in F5 NGINX App Protect DoS. It may also be useful to IT. +This Troubleshooting Guide is intended to provide guidance to customers in the detection and correction of programming issues in F5 F5 DoS for NGINX. It may also be useful to IT. ## Resolving Known Problems @@ -22,11 +22,11 @@ This Troubleshooting Guide is intended to provide guidance to customers in the d |-------|--------| | NGINX is not running (ps -aux)

Reloading NGINX fails| Check the error log at `/var/log/nginx/error.log`.
Fix the problem and re-run NGINX.| | No original source IP in logs|1. XFF is not configured (or not configured correctly)
2. External Load Balancer doesn't forward XFF | -| NGINX App Protect DoS functionality is not as expected| NGINX App Protect DoS has several logs which can be used for troubleshooting.
Usually, it is best to look for any warning or error messages within the logs.
Refer to [Logs Overview]({{< ref "/nap-dos/monitoring/types-of-logs.md">}})| +| F5 DoS for NGINX functionality is not as expected| F5 DoS for NGINX has several logs which can be used for troubleshooting.
Usually, it is best to look for any warning or error messages within the logs.
Refer to [Logs Overview]({{< ref "/nap-dos/monitoring/types-of-logs.md">}})| | `Too many open files` error message | Increase number of file descriptors.
For example: `worker_rlimit_nofile 65535;` in the main context of `nginx.conf` file.
Refer to [worker_rlimit_nofile directive](https://www.nginx.com/blog/using-nginx-plus-with-selinux/) | | `setrlimit ... failed (Permission denied)` error message | Increase the limit using the following command as the root user:
`setsebool -P httpd_setrlimit 1;`
Refer to [Issue 4: Too many files are open Error](https://www.nginx.com/blog/using-nginx-plus-with-selinux/#Issue-4:-%3Ccode%3EToo-many-files-are-open%3C/code%3E-Error) | -| More protected objects than expected | The `app_protect_dos_enable` directive is inherited by all server and location blocks beneath it, each block will be a protected object.
Consider moving this directive from outer to inner block.
Refer to: [NGINX App Protect DoS - Directives and Policy]({{< ref "/nap-dos/directives-and-policy/learn-about-directives-and-policy.md" >}}) | -| `No DOS protection for ngx_worker at idx X` warning message | There are more nginx processes than allowed.
Either decrease the number of nginx processes (ngx_processes directive in `nginx.conf` file) or increase the number of supported workers for NGINX App Protect DoS using the flag `--max-workers NUM` for `/usr/bin/adminstall`. | +| More protected objects than expected | The `app_protect_dos_enable` directive is inherited by all server and location blocks beneath it, each block will be a protected object.
Consider moving this directive from outer to inner block.
Refer to: [F5 DoS for NGINX - Directives and Policy]({{< ref "/nap-dos/directives-and-policy/learn-about-directives-and-policy.md" >}}) | +| `No DOS protection for ngx_worker at idx X` warning message | There are more nginx processes than allowed.
Either decrease the number of nginx processes (ngx_processes directive in `nginx.conf` file) or increase the number of supported workers for F5 DoS for NGINX using the flag `--max-workers NUM` for `/usr/bin/adminstall`. | | `unknown directive 'app_protect_dos_xxx'` error message | App Protect DOS module is not loaded. Add this line to the main (global) context of nginx.conf:
`load_module "/etc/nginx/modules/ngx_http_app_protect_dos_module.so";` | | NGINX struggles handling a high rate of incoming connections | Linux machine should be tuned for optimal performance.
Refer to [Tuning NGINX for Performance](https://www.nginx.com/blog/tuning-nginx/) | | Error in `adminstall` process, such as `Failed to allocate` | Insufficient memory to allocate all the required resources.
Increase the `--memory` size or decrease the number of nginx workers (`--max_workers`) if not all of them are going to be in use.
Use the `--help` flag for more info. | @@ -35,11 +35,11 @@ This Troubleshooting Guide is intended to provide guidance to customers in the d ### ELK issues -ELK issues are addressed directly in GitHub by posting the issue to Kibana dashboards for [NGINX App Protect DoS GitHub repo](https://github.com/f5devcentral/nap-dos-elk-dashboards). +ELK issues are addressed directly in GitHub by posting the issue to Kibana dashboards for [F5 DoS for NGINX GitHub repo](https://github.com/f5devcentral/nap-dos-elk-dashboards). ### SELinux -Configure SELinux to allow NGINX App Protect DoS. +Configure SELinux to allow F5 DoS for NGINX. The configuration steps are found in the [SELinux configuration]({{< ref "/nap-dos/deployment-guide/learn-about-deployment.md#selinux-configuration" >}}) section of the deployment guide. @@ -79,7 +79,7 @@ If there are any problems, collect the troubleshooting information in a tarball 1. Get package version: - a. Get NGINX App Protect DoS version:
+ a. Get F5 DoS for NGINX version:
```shell /usr/bin/admd -v > package_versions.txt @@ -103,7 +103,7 @@ If there are any problems, collect the troubleshooting information in a tarball cat /etc/os-release > system_version.txt && uname -r >> system_version.txt && cat /proc/version >> system_version.txt ``` - d. Get NGINX App Protect DoS shared memory dump:
+ d. Get F5 DoS for NGINX shared memory dump:
```shell admd -c > napd_shmem.txt diff --git a/content/nginx-one/_index.md b/content/nginx-one/_index.md index 0f7ccda35..99f7e201d 100644 --- a/content/nginx-one/_index.md +++ b/content/nginx-one/_index.md @@ -101,7 +101,7 @@ F5 NGINX One Console makes it easy to manage NGINX instances across locations an {{< card title="NGINX App Protect WAF" titleUrl="/nginx-app-protect-waf" brandIcon="NGINX-App-Protect-WAF-product-icon.svg">}} Lightweight, high-performance, advanced protection against Layer 7 attacks on your apps and APIs. {{}} - {{< card title="NGINX App Protect DoS" titleUrl="/nginx-app-protect-dos" brandIcon="NGINX-App-Protect-DoS-product-icon.svg">}} + {{< card title="F5 DoS for NGINX" titleUrl="/nginx-app-protect-dos" brandIcon="NGINX-App-Protect-DoS-product-icon.svg">}} Defend, adapt, and mitigate against Layer 7 denial-of-service attacks on your apps and APIs. {{}} {{}} diff --git a/content/nginxaas-azure/overview/feature-comparison.md b/content/nginxaas-azure/overview/feature-comparison.md index f30da905f..4a2425464 100644 --- a/content/nginxaas-azure/overview/feature-comparison.md +++ b/content/nginxaas-azure/overview/feature-comparison.md @@ -41,7 +41,7 @@ type: |  Internal redirect | |{{}} | | |  NGINX as a SAML Service Provider | |{{}} |{{}} | |  [NGINX App Protect WAF](https://www.f5.com/products/nginx/nginx-app-protect) (additional cost) | |{{}} |{{}} | -|  [NGINX App Protect DoS](https://www.f5.com/products/nginx/nginx-app-protect) (additional cost) | |{{}} | | +|  [F5 DoS for NGINX](https://www.f5.com/products/nginx/nginx-app-protect) (additional cost) | |{{}} | | |**Monitoring** |**NGINX Open
Source** |**NGINX Plus
 ** |**NGINXaaS
for Azure** | |  Export to [external monitoring tools](https://docs.nginx.com/nginx/admin-guide/monitoring/live-activity-monitoring/) |{{}} |{{}} |Export metrics to
Azure Monitor | |  Built-in dashboard | |{{}} |[Azure Monitor](https://learn.microsoft.com/en-us/azure/azure-monitor/overview)
and [Azure Portal](https://azure.microsoft.com/en-us/get-started/azure-portal) | diff --git a/content/nic/configuration/security.md b/content/nic/configuration/security.md index ad561cb21..676a3ad56 100644 --- a/content/nic/configuration/security.md +++ b/content/nic/configuration/security.md @@ -34,7 +34,7 @@ By default, the ServiceAccount has access to all Secret resources in the cluster ### Configure root filesystem as read-only {{< call-out "caution" >}} - This feature is compatible with [NGINX App Protect WAF v5]({{< ref "/nap-waf/v5/" >}}). It is not compatible with [NGINX App Protect WAF v4]({{< ref "/nap-waf/v4/" >}}) or [NGINX App Protect DoS]({{< ref "/nap-dos/" >}}). + This feature is compatible with [NGINX App Protect WAF v5]({{< ref "/nap-waf/v5/" >}}). It is not compatible with [NGINX App Protect WAF v4]({{< ref "/nap-waf/v4/" >}}) or [F5 DoS for NGINX]({{< ref "/nap-dos/" >}}). {{< /call-out >}} NGINX Ingress Controller is designed to be resilient against attacks in various ways, such as running the service as non-root to avoid changes to files. We recommend setting filesystems on all containers to read-only, this includes `nginx-ingress-controller`, though also includes `waf-enforcer` and `waf-config-mgr` when NGINX App Protect WAFv5 is in use. This is so that the attack surface is further reduced by limiting changes to binaries and libraries. diff --git a/content/nic/installation/build-nginx-ingress-controller.md b/content/nic/installation/build-nginx-ingress-controller.md index b9c2b78ef..f829b308d 100644 --- a/content/nic/installation/build-nginx-ingress-controller.md +++ b/content/nic/installation/build-nginx-ingress-controller.md @@ -151,14 +151,14 @@ Key targets include: | _debian-image-plus_ | Builds a Debian-based image with NGINX Plus. | | _debian-image-nap-plus_ | Builds a Debian-based image with NGINX Plus and the [NGINX App Protect WAF](/nginx-app-protect/) module. | | _debian-image-nap-v5-plus_ | Builds a Debian-based image with NGINX Plus and the [NGINX App Protect WAF v5](/nginx-app-protect/) module. | -| _debian-image-dos-plus_ | Builds a Debian-based image with NGINX Plus and the [NGINX App Protect DoS](/nginx-app-protect-dos/) module. | -| _debian-image-nap-dos-plus_ | Builds a Debian-based image with NGINX Plus, [NGINX App Protect WAF](/nginx-app-protect/) and [NGINX App Protect DoS](/nginx-app-protect-dos/) modules. | +| _debian-image-dos-plus_ | Builds a Debian-based image with NGINX Plus and the [F5 DoS for NGINX](/nginx-app-protect-dos/) module. | +| _debian-image-nap-dos-plus_ | Builds a Debian-based image with NGINX Plus, [NGINX App Protect WAF](/nginx-app-protect/) and [F5 DoS for NGINX](/nginx-app-protect-dos/) modules. | | _ubi-image_ | Builds a UBI-based image with NGINX for [OpenShift](https://www.openshift.com/) clusters. | | _ubi-image-plus_ | Builds a UBI-based image with NGINX Plus for [OpenShift](https://www.openshift.com/) clusters. | | _ubi-image-nap-plus_ | Builds a UBI-based image with NGINX Plus and the [NGINX App Protect WAF](/nginx-app-protect/) module for [OpenShift](https://www.openshift.com/) clusters. | | _ubi-image-nap-v5-plus_ | Builds a UBI-based image with NGINX Plus and the [NGINX App Protect WAF v5](/nginx-app-protect/) module for [OpenShift](https://www.openshift.com/) clusters. | -| _ubi-image-dos-plus_ | Builds a UBI-based image with NGINX Plus and the [NGINX App Protect DoS](/nginx-app-protect-dos/) module for [OpenShift](https://www.openshift.com/) clusters. | -| _ubi-image-nap-dos-plus_ |

Builds a UBI-based image with NGINX Plus, [NGINX App Protect WAF](/nginx-app-protect/) and the [NGINX App Protect DoS](/nginx-app-protect-dos/) module for [OpenShift](https://www.openshift.com/) clusters.

**Important**: Save your RHEL organization and activation keys in a file named _rhel_license_ at the project root.

For instance:

RHEL_ORGANIZATION=1111111
RHEL_ACTIVATION_KEY=your-key
| +| _ubi-image-dos-plus_ | Builds a UBI-based image with NGINX Plus and the [F5 DoS for NGINX](/nginx-app-protect-dos/) module for [OpenShift](https://www.openshift.com/) clusters. | +| _ubi-image-nap-dos-plus_ |

Builds a UBI-based image with NGINX Plus, [NGINX App Protect WAF](/nginx-app-protect/) and the [F5 DoS for NGINX](/nginx-app-protect-dos/) module for [OpenShift](https://www.openshift.com/) clusters.

**Important**: Save your RHEL organization and activation keys in a file named _rhel_license_ at the project root.

For instance:

RHEL_ORGANIZATION=1111111
RHEL_ACTIVATION_KEY=your-key
| {{}} --- diff --git a/content/nic/installation/installing-nic/installation-with-manifests.md b/content/nic/installation/installing-nic/installation-with-manifests.md index 8df8e0a53..eb550acb3 100644 --- a/content/nic/installation/installing-nic/installation-with-manifests.md +++ b/content/nic/installation/installing-nic/installation-with-manifests.md @@ -71,14 +71,14 @@ To use App Protect DoS, install the App Protect DoS Arbitrator using the provide ### Create optional custom resources -There are optional CRDs that are necessary if you want to use NGINX App Protect WAF or NGINX App Protect DoS. +There are optional CRDs that are necessary if you want to use NGINX App Protect WAF or F5 DoS for NGINX. **NGINX App Protect WAF**: - `APPolicy` - `APLogConf` - `APUserSig` -**NGINX App Protect DoS**: +**F5 DoS for NGINX**: - `APDosPolicy` - `APDosLogConf` - `DosProtectedResource` @@ -96,7 +96,7 @@ There are optional CRDs that are necessary if you want to use NGINX App Protect kubectl apply -f https://raw.githubusercontent.com/nginx/kubernetes-ingress/v{{< nic-version >}}/deploy/crds-nap-waf.yaml ``` -**NGINX App Protect DoS**: +**F5 DoS for NGINX**: ```shell kubectl apply -f https://raw.githubusercontent.com/nginx/kubernetes-ingress/v{{< nic-version >}}/deploy/crds-nap-dos.yaml @@ -116,7 +116,7 @@ kubectl apply -f config/crd/bases/appprotect.f5.com_appolicies.yaml kubectl apply -f config/crd/bases/appprotect.f5.com_apusersigs.yaml ``` -**NGINX App Protect DoS**: +**F5 DoS for NGINX**: ```shell kubectl apply -f config/crd/bases/appprotectdos.f5.com_apdoslogconfs.yaml @@ -272,7 +272,7 @@ Connect to ports 80 and 443 using the IP address of any node in the cluster wher kubectl apply -f https://raw.githubusercontent.com/nginx/kubernetes-ingress/v{{< nic-version >}}/deploy/crds-nap-waf.yaml ``` - 3. Delete custom resource definitions for the NGINX App Protect DoS module: + 3. Delete custom resource definitions for the F5 DoS for NGINX module: ```shell kubectl apply -f https://raw.githubusercontent.com/nginx/kubernetes-ingress/v{{< nic-version >}}/deploy/crds-nap-dos.yaml ``` @@ -290,7 +290,7 @@ kubectl delete -f config/crd/bases/crds.yaml kubectl apply -f config/crd/bases/crds-nap-waf.yaml ``` -3. Delete custom resource definitions for the NGINX App Protect DoS module: +3. Delete custom resource definitions for the F5 DoS for NGINX module: ```shell kubectl apply -f config/crd/bases/crds-nap-dos.yaml ``` diff --git a/content/nic/installation/integrations/app-protect-dos/_index.md b/content/nic/installation/integrations/app-protect-dos/_index.md index 6f2685996..fc6c0082c 100644 --- a/content/nic/installation/integrations/app-protect-dos/_index.md +++ b/content/nic/installation/integrations/app-protect-dos/_index.md @@ -1,6 +1,6 @@ --- -title: NGINX App Protect DoS -description: Learn how to use NGINX Ingress Controller for Kubernetes with NGINX App Protect DoS. +title: F5 DoS for NGINX +description: Learn how to use NGINX Ingress Controller for Kubernetes with F5 DoS for NGINX. weight: 300 menu: docs: diff --git a/content/nic/installation/integrations/app-protect-dos/configuration.md b/content/nic/installation/integrations/app-protect-dos/configuration.md index 0b39faee8..8ce84d042 100644 --- a/content/nic/installation/integrations/app-protect-dos/configuration.md +++ b/content/nic/installation/integrations/app-protect-dos/configuration.md @@ -161,4 +161,4 @@ Then add a reference in the `DosProtectedResource` to the `APDosLogConf`: ## Global Configuration -NGINX Ingress Controller has a set of global configuration parameters that align with those available in the NGINX App Protect DoS module. See [ConfigMap keys]({{< ref "/nic/configuration/global-configuration/configmap-resource.md#modules" >}}) for the complete list. The App Protect parameters use the `app-protect-dos*` prefix. +NGINX Ingress Controller has a set of global configuration parameters that align with those available in the F5 DoS for NGINX module. See [ConfigMap keys]({{< ref "/nic/configuration/global-configuration/configmap-resource.md#modules" >}}) for the complete list. The App Protect parameters use the `app-protect-dos*` prefix. diff --git a/content/nic/installation/integrations/app-protect-dos/dos-protected.md b/content/nic/installation/integrations/app-protect-dos/dos-protected.md index cfb112eb3..771b84533 100644 --- a/content/nic/installation/integrations/app-protect-dos/dos-protected.md +++ b/content/nic/installation/integrations/app-protect-dos/dos-protected.md @@ -7,9 +7,9 @@ nd-product: NIC nd-docs: DOCS-581 --- -NGINX App Protect DoS protected resource specification +F5 DoS for NGINX protected resource specification -{{< call-out "note" >}} This feature is only available using the NGINX Plus [NGINX App Protect DoS Module]({{< ref "/nap-dos/deployment-guide/learn-about-deployment.md" >}}). {{< /call-out >}} +{{< call-out "note" >}} This feature is only available using the NGINX Plus [F5 DoS for NGINX Module]({{< ref "/nap-dos/deployment-guide/learn-about-deployment.md" >}}). {{< /call-out >}} ## DoS Protected resource specification @@ -30,12 +30,12 @@ spec: {{% table %}} |Field | Description | Type | Required | | ---| ---| ---| --- | -|``enable`` | Enables NGINX App Protect DoS, Default value: false. | ``bool`` | No | +|``enable`` | Enables F5 DoS for NGINX, Default value: false. | ``bool`` | No | |``name`` | Name of the protected object, max of 63 characters. | ``string`` | Yes | |``dosAccessLogDest`` | The log destination for the access log with dos log format. Accepted variables are ``:`` or ``stderr``. | ``string`` | No | |``apDosMonitor.uri`` | The destination to the desired protected object. [App Protect DoS monitor](#dosprotectedresourceapdosmonitor) Default value: None, URL will be extracted from the first request which arrives and taken from "Host" header or from destination ip+port. | ``string`` | No | |``apDosMonitor.protocol`` | Determines if the server listens on http1 / http2 / grpc / websocket. [App Protect DoS monitor](#dosprotectedresourceapdosmonitor) Default value: http1. | ``enum`` | No | -|``apDosMonitor.timeout`` | Determines how long (in seconds) should NGINX App Protect DoS wait for a response. [App Protect DoS monitor](#dosprotectedresourceapdosmonitor) Default value: 10 seconds for http1/http2 and 5 seconds for grpc. | ``int64`` | No | +|``apDosMonitor.timeout`` | Determines how long (in seconds) should F5 DoS for NGINX wait for a response. [App Protect DoS monitor](#dosprotectedresourceapdosmonitor) Default value: 10 seconds for http1/http2 and 5 seconds for grpc. | ``int64`` | No | |``apDosPolicy`` | The [App Protect DoS policy](#dosprotectedresourceapdospolicy) of the dos. Accepts an optional namespace. | ``string`` | No | |``dosSecurityLog.enable`` | Enables security log. | ``bool`` | No | |``dosSecurityLog.apDosLogConf`` | The [App Protect DoS log conf]({{< ref "/nic/installation/integrations/app-protect-dos/configuration.md#app-protect-dos-logs" >}}) resource. Accepts an optional namespace. | ``string`` | No | @@ -49,7 +49,7 @@ The `apDosPolicy` is a reference (qualified identifier in the format `namespace/ ### DosProtectedResource.apDosMonitor -This is how NGINX App Protect DoS monitors the stress level of the protected object. The monitor requests are sent from localhost (127.0.0.1). +This is how F5 DoS for NGINX monitors the stress level of the protected object. The monitor requests are sent from localhost (127.0.0.1). ### Invalid DoS Protected resources diff --git a/content/nic/installation/integrations/app-protect-dos/installation.md b/content/nic/installation/integrations/app-protect-dos/installation.md index 28c56060d..725a6075c 100644 --- a/content/nic/installation/integrations/app-protect-dos/installation.md +++ b/content/nic/installation/integrations/app-protect-dos/installation.md @@ -1,5 +1,5 @@ --- -title: Build NGINX Ingress Controller with NGINX App Protect DoS +title: Build NGINX Ingress Controller with F5 DoS for NGINX weight: 100 toc: true type: how-to @@ -7,19 +7,19 @@ product: NIC nd-docs: DOCS-583 --- -This document explains how to build an image for F5 NGINX Ingress Controller with NGINX App Protect DoS from source code. +This document explains how to build an image for F5 NGINX Ingress Controller with F5 DoS for NGINX from source code. {{}}If you'd rather not build your own NGINX Ingress Controller image, see the [pre-built image options](#pre-built-images) at the end of this guide.{{}} ## Before you start -- To use NGINX App Protect DoS with NGINX Ingress Controller, you must have NGINX Plus. +- To use F5 DoS for NGINX with NGINX Ingress Controller, you must have NGINX Plus. --- ## Prepare the environment {#prepare-environment} -Get your system ready for building and pushing the NGINX Ingress Controller image with NGINX App Protect DoS. +Get your system ready for building and pushing the NGINX Ingress Controller image with F5 DoS for NGINX. 1. Sign in to your private registry. Replace `` with the path to your own private registry. @@ -45,7 +45,7 @@ Get your system ready for building and pushing the NGINX Ingress Controller imag ## Build the image {#build-docker-image} -Follow these steps to build the NGINX Controller Image with NGINX App Protect DoS. +Follow these steps to build the NGINX Controller Image with F5 DoS for NGINX. 1. Place your NGINX Plus license files (_nginx-repo.crt_ and _nginx-repo.key_) in the project's root folder. To verify they're in place, run: @@ -65,7 +65,7 @@ Follow these steps to build the NGINX Controller Image with NGINX App Protect Do make PREFIX=/nginx-plus-ingress TARGET=download ``` - For example, to build a Debian-based image with NGINX Plus and NGINX App Protect DoS, run: + For example, to build a Debian-based image with NGINX Plus and F5 DoS for NGINX, run: ```shell make debian-image-dos-plus PREFIX=/nginx-plus-ingress TARGET=download @@ -80,10 +80,10 @@ Follow these steps to build the NGINX Controller Image with NGINX App Protect Do {{}} | Makefile Target | Description | Compatible Systems | |---------------------------|-------------------------------------------------------------------|---------------------| -| **debian-image-dos-plus** | Builds a Debian-based image with NGINX Plus and the [NGINX App Protect DoS](/nginx-app-protect-dos/) module. | Debian | -| **debian-image-nap-dos-plus** | Builds a Debian-based image with NGINX Plus, [NGINX App Protect DoS](/nginx-app-protect-dos/), and [NGINX App Protect WAF](/nginx-app-protect/). | Debian | -| **ubi-image-dos-plus** | Builds a UBI-based image with NGINX Plus and the [NGINX App Protect DoS](/nginx-app-protect-dos/) module. | OpenShift | -| **ubi-image-nap-dos-plus** | Builds a UBI-based image with NGINX Plus, [NGINX App Protect DoS](/nginx-app-protect-dos/), and [NGINX App Protect WAF](/nginx-app-protect/). | OpenShift | +| **debian-image-dos-plus** | Builds a Debian-based image with NGINX Plus and the [F5 DoS for NGINX](/nginx-app-protect-dos/) module. | Debian | +| **debian-image-nap-dos-plus** | Builds a Debian-based image with NGINX Plus, [F5 DoS for NGINX](/nginx-app-protect-dos/), and [NGINX App Protect WAF](/nginx-app-protect/). | Debian | +| **ubi-image-dos-plus** | Builds a UBI-based image with NGINX Plus and the [F5 DoS for NGINX](/nginx-app-protect-dos/) module. | OpenShift | +| **ubi-image-nap-dos-plus** | Builds a UBI-based image with NGINX Plus, [F5 DoS for NGINX](/nginx-app-protect-dos/), and [NGINX App Protect WAF](/nginx-app-protect/). | OpenShift | {{}}
@@ -94,7 +94,7 @@ Follow these steps to build the NGINX Controller Image with NGINX App Protect Do ## Push the image to your private registry -Once you've successfully built the NGINX Ingress Controller image with NGINX App Protect DoS, the next step is to upload it to your private Docker registry. This makes the image available for deployment to your Kubernetes cluster. +Once you've successfully built the NGINX Ingress Controller image with F5 DoS for NGINX, the next step is to upload it to your private Docker registry. This makes the image available for deployment to your Kubernetes cluster. To upload the image, run the following command. If you're using a custom tag, add `TAG=your-tag` to the end of the command. Replace `` with your private registry's path. @@ -180,7 +180,7 @@ kubectl apply -f config/crd/bases/appprotectdos.f5.com_dosprotectedresources.yam ### Helm Chart -The App Protect DoS Arbitrator can be installed using the [NGINX App Protect DoS Helm Chart](https://github.com/nginxinc/nap-dos-arbitrator-helm-chart). +The App Protect DoS Arbitrator can be installed using the [F5 DoS for NGINX Helm Chart](https://github.com/nginxinc/nap-dos-arbitrator-helm-chart). If you have the NGINX Helm Repository already added, you can install the App Protect DoS Arbitrator by running the following command: ```shell @@ -206,9 +206,9 @@ Alternatively, you can install the App Protect DoS Arbitrator using the YAML man --- -## Enable NGINX App Protect DoS module +## Enable F5 DoS for NGINX module -To enable the NGINX App Protect DoS Module: +To enable the F5 DoS for NGINX Module: - Add the `enable-app-protect-dos` [command-line argument]({{< ref "/nic/configuration/global-configuration/command-line-arguments.md#cmdoption-enable-app-protect-dos" >}}) to your Deployment or DaemonSet file. diff --git a/content/nic/installation/integrations/app-protect-dos/troubleshoot-app-protect-dos.md b/content/nic/installation/integrations/app-protect-dos/troubleshoot-app-protect-dos.md index 323c2d53e..4d23b1a44 100644 --- a/content/nic/installation/integrations/app-protect-dos/troubleshoot-app-protect-dos.md +++ b/content/nic/installation/integrations/app-protect-dos/troubleshoot-app-protect-dos.md @@ -1,5 +1,5 @@ --- -title: Troubleshoot NGINX App Protect DoS +title: Troubleshoot F5 DoS for NGINX toc: true weight: 400 nd-content-type: how-to diff --git a/content/nic/installation/integrations/app-protect-waf-v5/installation.md b/content/nic/installation/integrations/app-protect-waf-v5/installation.md index 207b8bc54..18a5478c8 100644 --- a/content/nic/installation/integrations/app-protect-waf-v5/installation.md +++ b/content/nic/installation/integrations/app-protect-waf-v5/installation.md @@ -92,7 +92,7 @@ Create Docker image for NGINX Ingress Controller (Alpine with NGINX Plus, NGINX | **alpine-image-nap-v5-plus-fips** | Builds a Alpine-based image with NGINX Plus and the [NGINX App Protect WAF v5](/nginx-app-protect-waf/v5/) module with FIPS. | Alpine | | **debian-image-nap-v5-plus** | Builds a Debian-based image with NGINX Plus and the [NGINX App Protect WAF v5](/nginx-app-protect-waf/v5/) module. | Debian | | **ubi-image-nap-v5-plus** | Builds a UBI-based image with NGINX Plus and the [NGINX App Protect WAF v5](/nginx-app-protect-waf/v5/) module. | OpenShift | -| **ubi-image-nap-dos-v5-plus** | Builds a UBI-based image with NGINX Plus, [NGINX App Protect WAF v5](/nginx-app-protect-waf/v5/), and [NGINX App Protect DoS](/nginx-app-protect-dos/). | OpenShift | +| **ubi-image-nap-dos-v5-plus** | Builds a UBI-based image with NGINX Plus, [NGINX App Protect WAF v5](/nginx-app-protect-waf/v5/), and [F5 DoS for NGINX](/nginx-app-protect-dos/). | OpenShift | {{}}
@@ -479,7 +479,7 @@ Add `readOnlyRootFilesystem` to the `waf-enforcer` container and set value to `t ### Enable NGINX App Protect WAF module -To enable the NGINX App Protect DoS Module: +To enable the F5 DoS for NGINX Module: - Add the `enable-app-protect` [command-line argument]({{< ref "/nic/configuration/global-configuration/command-line-arguments.md#cmdoption-enable-app-protect" >}}) to your Deployment or DaemonSet file. diff --git a/content/nic/installation/integrations/app-protect-waf/installation.md b/content/nic/installation/integrations/app-protect-waf/installation.md index d149c3b1b..68664a214 100644 --- a/content/nic/installation/integrations/app-protect-waf/installation.md +++ b/content/nic/installation/integrations/app-protect-waf/installation.md @@ -56,7 +56,7 @@ Follow these steps to build the NGINX Controller Image with NGINX App Protect WA make PREFIX=/nginx-plus-ingress TARGET=download ``` - For example, to build a Debian-based image with NGINX Plus and NGINX App Protect DoS, run: + For example, to build a Debian-based image with NGINX Plus and F5 DoS for NGINX, run: ```shell make debian-image-dos-plus PREFIX=/nginx-plus-ingress TARGET=download @@ -72,9 +72,9 @@ Follow these steps to build the NGINX Controller Image with NGINX App Protect WA | Makefile Target | Description | Compatible Systems | |---------------------------|-------------------------------------------------------------------|---------------------| | **debian-image-nap-plus** | Builds a Debian-based image with NGINX Plus and the [NGINX App Protect WAF](/nginx-app-protect-waf/) module. | Debian | -| **debian-image-nap-dos-plus** | Builds a Debian-based image with NGINX Plus, [NGINX App Protect WAF](/nginx-app-protect-waf/), and [NGINX App Protect DoS](/nginx-app-protect-dos/) | Debian | +| **debian-image-nap-dos-plus** | Builds a Debian-based image with NGINX Plus, [NGINX App Protect WAF](/nginx-app-protect-waf/), and [F5 DoS for NGINX](/nginx-app-protect-dos/) | Debian | | **ubi-image-nap-plus** | Builds a UBI-based image with NGINX Plus and the [NGINX App Protect WAF](/nginx-app-protect-waf/) module. | OpenShift | -| **ubi-image-nap-dos-plus** | Builds a UBNI-based image with NGINX Plus, [NGINX App Protect WAF](/nginx-app-protect-waf/), and [NGINX App Protect DoS](/nginx-app-protect-dos/). | OpenShift | +| **ubi-image-nap-dos-plus** | Builds a UBNI-based image with NGINX Plus, [NGINX App Protect WAF](/nginx-app-protect-waf/), and [F5 DoS for NGINX](/nginx-app-protect-dos/). | OpenShift | {{}}
@@ -199,7 +199,7 @@ volumeMounts: ## Enable NGINX App Protect WAF module -To enable the NGINX App Protect DoS Module: +To enable the F5 DoS for NGINX Module: - Add the `enable-app-protect` [command-line argument]({{< ref "/nic/configuration/global-configuration/command-line-arguments.md#cmdoption-enable-app-protect" >}}) to your Deployment or DaemonSet file. diff --git a/content/nic/installation/nic-images/registry-download.md b/content/nic/installation/nic-images/registry-download.md index c37c00e05..5cc20429b 100644 --- a/content/nic/installation/nic-images/registry-download.md +++ b/content/nic/installation/nic-images/registry-download.md @@ -9,7 +9,7 @@ nd-docs: DOCS-605 This page describes how to download an F5 NGINX Plus Ingress Controller image from the official F5 Docker registry. -The F5 Registry images include versions with NGINX App Protect WAF and NGINX App Protect DoS. +The F5 Registry images include versions with NGINX App Protect WAF and F5 DoS for NGINX. ## Before you begin @@ -65,13 +65,13 @@ Replace `` with the specific version you need, for example, `{{< ni docker pull private-registry.nginx.com/nap/waf-enforcer: ``` -- For NGINX Plus Ingress Controller with NGINX App Protect DoS, run: +- For NGINX Plus Ingress Controller with F5 DoS for NGINX, run: ```shell docker pull private-registry.nginx.com/nginx-ic-dos/nginx-plus-ingress: ``` -- For NGINX Plus Ingress Controller with NGINX App Protect WAF and NGINX App Protect DoS, run: +- For NGINX Plus Ingress Controller with NGINX App Protect WAF and F5 DoS for NGINX, run: ```shell docker pull private-registry.nginx.com/nginx-ic-nap-dos/nginx-plus-ingress: @@ -166,7 +166,7 @@ After pulling the image, tag it and upload it to your private registry. docker push /nap/waf-enforcer: ``` - - For NGINX Controller with NGINX App Protect DoS, run: + - For NGINX Controller with F5 DoS for NGINX, run: ```shell docker tag private-registry.nginx.com/nginx-ic-dos/nginx-plus-ingress: /nginx-ic-dos/nginx-plus-ingress: diff --git a/content/nic/logging-and-monitoring/status-page.md b/content/nic/logging-and-monitoring/status-page.md index 8d7c42983..4cfda9d50 100644 --- a/content/nic/logging-and-monitoring/status-page.md +++ b/content/nic/logging-and-monitoring/status-page.md @@ -13,7 +13,7 @@ NGINX comes with a status page that reports basic metrics about NGINX called the NGINX Plus comes with a [dashboard]({{< ref "/nginx/admin-guide/monitoring/live-activity-monitoring.md" >}}) that reports key load-balancing and performance metrics. -NGINX App Protect DoS comes with a [dashboard]({{< ref "/nap-dos/monitoring/live-activity-monitoring.md" >}}) that shows the status and information of the protected objects. +F5 DoS for NGINX comes with a [dashboard]({{< ref "/nap-dos/monitoring/live-activity-monitoring.md" >}}) that shows the status and information of the protected objects. This doc shows how to get access to the stub status/dashboard. ## Accessing Stub Status diff --git a/content/nic/releases.md b/content/nic/releases.md index c84783b58..3b30b224a 100644 --- a/content/nic/releases.md +++ b/content/nic/releases.md @@ -1121,7 +1121,7 @@ We will provide technical support for NGINX Ingress Controller on any Kubernetes - Update NGINX Plus version to R28. - Update NGINX App Protect WAF version to 4.0. -- Update NGINX App Protect DoS version to 3.1. +- Update F5 DoS for NGINX version to 3.1. ### Upgrade @@ -1456,7 +1456,7 @@ We will provide technical support for NGINX Ingress Controller on any Kubernetes ### Overview -- Support for NGINX App Protect Denial of Service protection with NGINX Ingress Controller. More information about [NGINX App Protect DoS](https://www.nginx.com/products/nginx-app-protect/denial-of-service/). Examples for configuring NGINX App Protect DoS with NGINX Ingress Controller can be found [here](https://github.com/nginx/kubernetes-ingress/tree/v2.1.1/examples/appprotect-dos). +- Support for NGINX App Protect Denial of Service protection with NGINX Ingress Controller. More information about [F5 DoS for NGINX](https://www.nginx.com/products/nginx-app-protect/denial-of-service/). Examples for configuring F5 DoS for NGINX with NGINX Ingress Controller can be found [here](https://github.com/nginx/kubernetes-ingress/tree/v2.1.1/examples/appprotect-dos). - Full support for gRPC services using the NGINX Ingress Controller [VirtualServer and VirtualServerRoute]({{< ref "/nic/configuration/virtualserver-and-virtualserverroute-resources.md" >}}) custom resource definitions. This makes configuring and supporting gRPC services much easier, giving a simple YAML configuration and removing the need for snippets. Resource definition examples for gRPC can be found [here](https://github.com/nginx/kubernetes-ingress/tree/v2.1.1/examples/custom-resources/grpc-upstreams). @@ -1468,7 +1468,7 @@ More about the [NGINX Plus mandatory and persistent health check features]({{< r ### Features - [2251](https://github.com/nginx/kubernetes-ingress/pull/2251) Enable setting mandatory and persistent in upstream healthchecks in VS and VSR. -- [2241](https://github.com/nginx/kubernetes-ingress/pull/2241) Add support for NGINX App Protect DoS. +- [2241](https://github.com/nginx/kubernetes-ingress/pull/2241) Add support for F5 DoS for NGINX. - [2200](https://github.com/nginx/kubernetes-ingress/pull/2200) Add Alpine image with OpenTracing. - [2178](https://github.com/nginx/kubernetes-ingress/pull/2178) Support healthchecks in gRPC upstreams. - [2110](https://github.com/nginx/kubernetes-ingress/pull/2110) Support gRPC in the Upstreams of the virtual server resources. Particular thanks to [Chiyu Zhong](https://github.com/CatTail) for all their work. diff --git a/content/nic/technical-specifications.md b/content/nic/technical-specifications.md index b493ac7e3..fa9f9f08b 100644 --- a/content/nic/technical-specifications.md +++ b/content/nic/technical-specifications.md @@ -74,12 +74,12 @@ NGINX Plus images are available through the F5 Container registry `private-regis |Debian-based image | ``debian:12-slim`` | NJS (NGINX JavaScript)
OpenTelemetry | `nginx-ic/nginx-plus-ingress:{{< nic-version >}}` | arm64
amd64 | |Debian-based image with NGINX App Protect WAF | ``debian:12-slim`` | NGINX App Protect WAF
NJS (NGINX JavaScript)
OpenTelemetry | `nginx-ic-nap/nginx-plus-ingress:{{< nic-version >}}` | amd64 | |Debian-based image with NGINX App Protect WAF v5 | ``debian:12-slim`` | NGINX App Protect WAF v5
NJS (NGINX JavaScript)
OpenTelemetry | `nginx-ic-nap-v5/nginx-plus-ingress:{{< nic-version >}}` | amd64 | -|Debian-based image with NGINX App Protect DoS | ``debian:12-slim`` | NGINX App Protect DoS
NJS (NGINX JavaScript)
OpenTelemetry | `nginx-ic-dos/nginx-plus-ingress:{{< nic-version >}}` | amd64 | +|Debian-based image with F5 DoS for NGINX | ``debian:12-slim`` | F5 DoS for NGINX
NJS (NGINX JavaScript)
OpenTelemetry | `nginx-ic-dos/nginx-plus-ingress:{{< nic-version >}}` | amd64 | |Debian-based image with NGINX App Protect WAF and DoS | ``debian:12-slim`` | NGINX App Protect WAF and DoS
NJS (NGINX JavaScript)
OpenTelemetry | `nginx-ic-nap-dos/nginx-plus-ingress:{{< nic-version >}}` | amd64 | |Ubi-based image | ``redhat/ubi9-minimal`` | NJS (NGINX JavaScript)
OpenTelemetry | `nginx-ic/nginx-plus-ingress:{{< nic-version >}}-ubi` | arm64
amd64 | |Ubi-based image with NGINX App Protect WAF | ``redhat/ubi9`` | NGINX App Protect WAF
NJS (NGINX JavaScript)
OpenTelemetry | `nginx-ic-nap/nginx-plus-ingress:{{< nic-version >}}-ubi` | amd64 | |Ubi-based image with NGINX App Protect WAF v5 | ``redhat/ubi9`` | NGINX App Protect WAF v5
NJS (NGINX JavaScript)
OpenTelemetry | `nginx-ic-nap-v5/nginx-plus-ingress:{{< nic-version >}}-ubi` | amd64 | -|Ubi-based image with NGINX App Protect DoS | ``redhat/ubi8`` | NGINX App Protect DoS
NJS (NGINX JavaScript)
OpenTelemetry | `nginx-ic-dos/nginx-plus-ingress:{{< nic-version >}}-ubi` | amd64 | +|Ubi-based image with F5 DoS for NGINX | ``redhat/ubi8`` | F5 DoS for NGINX
NJS (NGINX JavaScript)
OpenTelemetry | `nginx-ic-dos/nginx-plus-ingress:{{< nic-version >}}-ubi` | amd64 | |Ubi-based image with NGINX App Protect WAF and DoS | ``redhat/ubi8`` | NGINX App Protect WAF and DoS
NJS (NGINX JavaScript)
OpenTelemetry | `nginx-ic-nap-dos/nginx-plus-ingress:{{< nic-version >}}-ubi` | amd64 | {{% /bootstrap-table %}} diff --git a/content/nim/_index.md b/content/nim/_index.md index c46d14a2e..74cbc7561 100644 --- a/content/nim/_index.md +++ b/content/nim/_index.md @@ -110,7 +110,7 @@ NGINX Instance Manager is part of NGINX One, which includes [NGINX One component {{< card title="NGINX App Protect WAF" titleUrl="/nginx-app-protect-waf" brandIcon="NGINX-App-Protect-WAF-product-icon.png">}} Lightweight, high-performance, advanced protection against Layer 7 attacks on your apps and APIs. {{}} - {{< card title="NGINX App Protect DoS" titleUrl="/nginx-app-protect-dos" brandIcon="NGINX-App-Protect-DoS-product-icon.png">}} + {{< card title="F5 DoS for NGINX" titleUrl="/nginx-app-protect-dos" brandIcon="NGINX-App-Protect-DoS-product-icon.png">}} Defend, adapt, and mitigate against Layer 7 denial-of-service attacks on your apps and APIs. {{}} {{}} diff --git a/content/solutions/about-subscription-licenses.md b/content/solutions/about-subscription-licenses.md index 8aba61588..0faf57e5b 100644 --- a/content/solutions/about-subscription-licenses.md +++ b/content/solutions/about-subscription-licenses.md @@ -207,9 +207,9 @@ For details on installing or upgrading NGINX App Protect WAF, visit the guide fo - [NGINX App Protect WAF v4 installation guide]({{< ref "/nap-waf/v4/admin-guide/install.md" >}}) - [NGINX App Protect WAF v5 installation guide]({{< ref "/nap-waf/v5/admin-guide/install.md" >}}) -### NGINX App Protect DoS +### F5 DoS for NGINX -For detailed instructions on installing or upgrading NGINX App Protect DoS, visit the [NGINX App Protect DoS installation guide]({{< ref "/nap-dos/deployment-guide/learn-about-deployment.md" >}}). +For detailed instructions on installing or upgrading F5 DoS for NGINX, visit the [F5 DoS for NGINX installation guide]({{< ref "/nap-dos/deployment-guide/learn-about-deployment.md" >}}). ## Watch instructional videos diff --git a/content/waf/_index.md b/content/waf/_index.md new file mode 100644 index 000000000..36f6fdaf2 --- /dev/null +++ b/content/waf/_index.md @@ -0,0 +1,39 @@ +--- +# The title is the product name +title: "F5 WAF for NGINX" +# The URL is the base of the deployed path, becoming "docs.nginx.com//" +url: /waf/ +# The cascade directive applies its nested parameters down the page tree until overwritten +cascade: + # The logo file is resolved from the theme, in the folder /static/images/icons/ + logo: NGINX-App-Protect-WAF-product-icon.svg +# The subtitle displays directly underneath the heading of a given page +nd-subtitle: A lightweight, high-performance web application firewall for protecting APIs and applications +# Indicates that this is a custom landing page +nd-landing-page: true +# Types have a 1:1 relationship with Hugo archetypes, so you shouldn't need to change this +nd-content-type: landing-page +# Intended for internal catalogue and search, case sensitive: +# Agent, N4Azure, NIC, NIM, NGF, NAP-DOS, NAP-WAF, NGINX One, NGINX+, Solutions, Unit +nd-product: NAP-WAF +--- + +## About + +Defend your applications and APIs with a software security solution that seamlessly integrates into DevOps environments as a lightweight web application firewall (WAF), layer 7 denial-of-service (DoS) protection, bot protection, API security, and threat intelligence services. + +## Featured content + +{{}} + {{}} + {{}} + Learn about how F5 WAF for NGINX works and how it can be used to protect your applications + {{}} + {{}} + Explore the methods available to deploy F5 WAF for NGINX in your environment + {{}} + {{}} + Review the latest changes and improvements to F5 WAF for NGINX + {{}} + {{}} +{{}} diff --git a/content/waf/changelog.md b/content/waf/changelog.md new file mode 100644 index 000000000..e8ffa95de --- /dev/null +++ b/content/waf/changelog.md @@ -0,0 +1,159 @@ +--- +# We use sentence case and present imperative tone +title: "Changelog" +# Weights are assigned in increments of 100: determines sorting order +weight: 800 +# Creates a table of contents and sidebar, useful for large documents +toc: true +# Types have a 1:1 relationship with Hugo archetypes, so you shouldn't need to change this +nd-content-type: reference +# Intended for internal catalogue and search, case sensitive: +# Agent, N4Azure, NIC, NIM, NGF, NAP-DOS, NAP-WAF, NGINX One, NGINX+, Solutions, Unit +nd-product: NAP-WAF +--- + +{{< call-out "warning" "Information architecture note" >}} + +The design intention for this page is to act as a single reference point for changes between each release. "Changelog" is the term being adopted across the entire NGINX product ecosystem. + +Since both versions of NGINX App Protect WAF are released at the same time, they can be stored in the same note. Change items for only one specific version are explicitly annotated when necessary. + +Updating the content of this page will likely be automated in the future, following some procedural changes to how tickets are managed within JIRA. + +{{}} + +This changelog lists all of the information for F5 WAF for NGINX releases in 2025. + +For older releases, check the changelogs for previous years: [2024](), [2023](). + +## NGINX App Protect WAF 5.7 / 4.15 + +### New features + +- Added support for Rocky Linux 9 +- Added support for IP Intelligence +- Added support for Override rules for IP Address Lists + +### Important notes + +- Ubuntu 20.04 is no longer supported +- (12447) Upgrade libk5crypto3 package +- (12520) Upgrade Go compiler to 1.23.8 + +### Resolved issues + +- (12527) Remove CPAN - installed certs and source files +- (11112) Remove systemd/init.d leftovers in NAP WAF v5 pkgs +- (12400) Cookie attributes are not added to a TS cookie when there is more than one TS cookie +- (12498) Undefined behavior when using huge XFF +- (12731) Multiple clean_resp_reset internal error messages in logs when loading NAP + +### 5.7 packages + +#### NGINX Open Source + +| Distribution name | Package file | +|--------------------------|-------------------------------------------------------------------| +| Alpine 3.19 | _app-protect-module-oss-1.27.4+5.442.0-r1.apk_ | +| Amazon Linux 2023 | _app-protect-module-oss-1.27.4+5.442.0-1.amzn2023.ngx.x86_64.rpm_ | +| Debian 11 | _app-protect-module-oss_1.27.4+5.442.0-1\~bullseye_amd64.deb_ | +| Debian 12 | _app-protect-module-oss_1.27.4+5.442.0-1\~bookworm_amd64.deb_ | +| Oracle Linux 8.1 | _app-protect-module-oss-1.27.4+5.442.0-1.el8.ngx.x86_64.rpm_ | +| Ubuntu 22.04 | _app-protect-module-oss_1.27.4+5.442.0-1\~jammy_amd64.deb_ | +| Ubuntu 24.04 | _app-protect-module-oss_1.27.4+5.442.0-1\~noble_amd64.deb_ | +| RHEL 8 and Rocky Linux 8 | _app-protect-module-oss-1.27.4+5.442.0-1.el8.ngx.x86_64.rpm_ | +| RHEL 9 and Rocky Linux 9 | _app-protect-module-oss-1.27.4+5.442.0-1.el9.ngx.x86_64.rpm_ | + +#### NGINX Plus + +| Distribution name | Package file | +|--------------------------|----------------------------------------------------------------| +| Alpine 3.19 | _app-protect-module-plus-34+5.442.0-r1.apk_ | +| Amazon Linux 2023 | _app-protect-module-plus-34+5.442.0-1.amzn2023.ngx.x86_64.rpm_ | +| Debian 11 | _app-protect-module-plus_34+5.442.0-1\~bullseye_amd64.deb_ | +| Debian 12 | _app-protect-module-plus_34+5.442.0-1\~bookworm_amd64.deb_ | +| Oracle Linux 8.1 | _app-protect-module-plus-34+5.442.0-1.el8.ngx.x86_64.rpm_ | +| Ubuntu 22.04 | _app-protect-module-plus_34+5.442.0-1\~jammy_amd64.deb_ | +| Ubuntu 24.04 | _app-protect-module-plus_34+5.442.0-1\~noble_amd64.deb_ | +| RHEL 8 and Rocky Linux 8 | _app-protect-module-plus-34+5.442.0-1.el8.ngx.x86_64.rpm_ | +| RHEL 9 and Rocky Linux 9 | _app-protect-module-plus-34+5.442.0-1.el9.ngx.x86_64.rpm_ | + +### 4.15 packages + +| Distribution name | Package file | +|--------------------------|----------------------------------------------------| +| Alpine 3.19 | _app-protect-34.5.442.0-r1.apk_ | +| Amazon Linux 2023 | _app-protect-34+5.442.0-1.amzn2023.ngx.x86_64.rpm_ | +| Debian 11 | _app-protect_34+5.442.0-1\~bullseye_amd64.deb_ | +| Debian 12 | _app-protect_34+5.442.0-1\~bookworm_amd64.deb_ | +| Oracle Linux 8.1 | _app-protect-34+5.442.0-1.el8.ngx.x86_64.rpm_ | +| Ubuntu 22.04 | _app-protect_34+5.442.0-1\~jammy_amd64.deb_ | +| Ubuntu 24.04 | _app-protect_34+5.442.0-1\~noble_amd64.deb_ | +| RHEL 8 and Rocky Linux 8 | _app-protect-34+5.442.0-1.el8.ngx.x86_64.rpm_ | +| RHEL 9 and Rocky Linux 9 | _app-protect-34+5.442.0-1.el9.ngx.x86_64.rpm_ | + +## NGINX App Protect WAF 5.6 / 4.14 + +### New features + +- Added support for NGINX Plus R34 +- **5.6 Only:** You can now [deploy NGINX App Protect WAF 5+ using a Helm chart]({{< ref "/nap-waf/v5/admin-guide/deploy-with-helm.md">}}) + +### Important notes + +- Alpine 3.17 is no longer supported + +### Resolved issues + +- Upgraded the Go compiler to 1.23.7 +- (12140) Changed the maximum memory of the XML processing engine to 8GB +- (12254) A modified YAML file referenced by a JSON policy file causes a reload error when running `nginx -t` +- (12296) "Violation Bad Unescape" is not enabled by default +- (12297) "Violation Encoding" is not enabled by default + +### 5.6 packages + +#### NGINX Open Source + +| Distribution name | Package file | +|--------------------------|-------------------------------------------------------------------| +| Alpine 3.19 | _app-protect-module-oss-1.27.4+5.342.0-r1.apk_ | +| Amazon Linux 2023 | _app-protect-module-oss-1.27.4+5.342.0-1.amzn2023.ngx.x86_64.rpm_ | +| Debian 11 | _app-protect-module-oss_1.27.4+5.342.0-1\~bullseye_amd64.deb_ | +| Debian 12 | _app-protect-module-oss_1.27.4+5.342.0-1\~bookworm_amd64.deb_ | +| Oracle Linux 8.1 | _app-protect-module-oss-1.27.4+5.342.0-1.el8.ngx.x86_64.rpm_ | +| Ubuntu 20.04 | _app-protect-module-oss_1.27.4+5.342.0-1\~focal_amd64.deb_ | +| Ubuntu 22.04 | _app-protect-module-oss_1.27.4+5.342.0-1\~jammy_amd64.deb_ | +| Ubuntu 24.04 | _app-protect-module-oss_1.27.4+5.342.0-1\~noble_amd64.deb_ | +| RHEL 8 and Rocky Linux 8 | _app-protect-module-oss-1.27.4+5.342.0-1.el8.ngx.x86_64.rpm_ | +| RHEL 9 | _app-protect-module-oss-1.27.4+5.342.0-1.el9.ngx.x86_64.rpm_ | + +#### NGINX Plus + +| Distribution name | Package file | +|--------------------------|----------------------------------------------------------------| +| Alpine 3.19 | _app-protect-module-plus-34+5.342.0-r1.apk_ | +| Amazon Linux 2023 | _app-protect-module-plus-34+5.342.0-1.amzn2023.ngx.x86_64.rpm_ | +| Debian 11 | _app-protect-module-plus_34+5.342.0-1\~bullseye_amd64.deb_ | +| Debian 12 | _app-protect-module-plus_34+5.342.0-1\~bookworm_amd64.deb_ | +| Oracle Linux 8.1 | _app-protect-module-plus-34+5.342.0-1.el8.ngx.x86_64.rpm_ | +| Ubuntu 20.04 | _app-protect-module-plus_34+5.342.0-1\~focal_amd64.deb_ | +| Ubuntu 22.04 | _app-protect-module-plus_34+5.342.0-1\~jammy_amd64.deb_ | +| Ubuntu 24.04 | _app-protect-module-plus_34+5.342.0-1\~noble_amd64.deb_ | +| RHEL 8 and Rocky Linux 8 | _app-protect-module-plus-34+5.342.0-1.el8.ngx.x86_64.rpm_ | +| RHEL 9 | _app-protect-module-plus-34+5.342.0-1.el9.ngx.x86_64.rpm_ | + +### 4.14 packages + +| Distribution name | Package file | +|--------------------------|----------------------------------------------------| +| Alpine 3.19 | _app-protect-34.5.342.0-r1.apk_ | +| Amazon Linux 2023 | _app-protect-34+5.342.0-1.amzn2023.ngx.x86_64.rpm_ | +| Debian 11 | _app-protect_34+5.342.0-1\~bullseye_amd64.deb_ | +| Debian 12 | _app-protect_34+5.342.0-1\~bookworm_amd64.deb_ | +| Oracle Linux 8.1 | _app-protect-34+5.342.0-1.el8.ngx.x86_64.rpm_ | +| Ubuntu 20.04 | _app-protect_34+5.342.0-1\~focal_amd64.deb_ | +| Ubuntu 22.04 | _app-protect_34+5.342.0-1\~jammy_amd64.deb_ | +| Ubuntu 24.04 | _app-protect_34+5.342.0-1\~noble_amd64.deb_ | +| RHEL 8 and Rocky Linux 8 | _app-protect-34+5.342.0-1.el8.ngx.x86_64.rpm_ | +| RHEL 9 | _app-protect-34+5.342.0-1.el9.ngx.x86_64.rpm_ | \ No newline at end of file diff --git a/content/waf/features/_index.md b/content/waf/features/_index.md new file mode 100644 index 000000000..05cb5a884 --- /dev/null +++ b/content/waf/features/_index.md @@ -0,0 +1,6 @@ +--- +title: "Features" +url: /app-protect-waf/features/ +weight: 700 +draft: true +--- \ No newline at end of file diff --git a/content/waf/fundamentals/_index.md b/content/waf/fundamentals/_index.md new file mode 100644 index 000000000..ed0e1f6a7 --- /dev/null +++ b/content/waf/fundamentals/_index.md @@ -0,0 +1,5 @@ +--- +title: "Fundamentals" +url: /app-protect-waf/fundamentals/ +weight: 100 +--- \ No newline at end of file diff --git a/content/waf/fundamentals/overview.md b/content/waf/fundamentals/overview.md new file mode 100644 index 000000000..c0839cae4 --- /dev/null +++ b/content/waf/fundamentals/overview.md @@ -0,0 +1,38 @@ +--- +# We use sentence case and present imperative tone +title: "Overview" +# Weights are assigned in increments of 100: determines sorting order +weight: 100 +# Creates a table of contents and sidebar, useful for large documents +toc: false +# Types have a 1:1 relationship with Hugo archetypes, so you shouldn't need to change this +nd-content-type: how-to +# Intended for internal catalogue and search, case sensitive: +# Agent, N4Azure, NIC, NIM, NGF, NAP-DOS, NAP-WAF, NGINX One, NGINX+, Solutions, Unit +nd-product: NAP-WAF +--- + +{{< call-out "warning" "Information architecture note" >}} + +The design intention for this page is to describing what NGINX App Protect is, expanding on the detail from the [landing page]({{< ref "/waf/" >}}). + +It is also an opportunity to explain the difference between NGINX App Protect versions, and how integrates with other products in the NGINX ecosystem. + +The text here will likely be synthesized from the Overview descriptions at the top of the [Administration Guides]({{< ref "/nap-waf/v4/admin-guide/install.md#overview" >}}), but there's also detail from [F5.com](https://www.f5.com/products/nginx/nginx-app-protect) that can be added. + +{{< /call-out >}} + +[F5 WAF for NGINX](https://www.f5.com/products/nginx/nginx-app-protect) is an advanced, lightweight and high-performance web application firewall (WAF) for applications and APIs. + +It provides protection for the OWASP Top 10, with additional functionality: + +- HTTP response inspection and protocol compliance +- Data schema validation (JSON & XML) +- Meta character checking +- Disallowing file types + +For more details, see the [Supported security policy features]({{< ref "/waf/fundamentals/technical-specifications.md#supported-security-policy-features">}}). + +F5 WAF for NGINX is part of the [NGINX One](https://www.f5.com/products/nginx/one) premium packages and runs natively on [NGINX Plus](https://www.f5.com/products/nginx/nginx-plus) and [NGINX Ingress Controller](https://www.f5.com/products/nginx/nginx-ingress-controller). + +It is platform-agnostic and supports deployment options ranging from edge load balancers to individual pods in Kubernetes clusters. diff --git a/content/waf/fundamentals/technical-specifications.md b/content/waf/fundamentals/technical-specifications.md new file mode 100644 index 000000000..97e2abbc7 --- /dev/null +++ b/content/waf/fundamentals/technical-specifications.md @@ -0,0 +1,83 @@ +--- +# We use sentence case and present imperative tone +title: "Technical specifications" +# Weights are assigned in increments of 100: determines sorting order +weight: 200 +# Creates a table of contents and sidebar, useful for large documents +toc: true +# Types have a 1:1 relationship with Hugo archetypes, so you shouldn't need to change this +nd-content-type: reference +# Intended for internal catalogue and search, case sensitive: +# Agent, N4Azure, NIC, NIM, NGF, NAP-DOS, NAP-WAF, NGINX One, NGINX+, Solutions, Unit +nd-product: NAP-WAF +--- + +{{< call-out "warning" "Information architecture note" >}} + +The design intention for this page is to act as a single source of truth for supported operating systems and version compatibility. + +It follows a design pattern set by other NGINX product sets, showing various compatibility matrices: + +- [NGINX Plus]({{< ref "/nginx/technical-specs.md" >}}) +- [NGINX Instance Manager]({{< ref "/nim/fundamentals/tech-specs.md" >}}) +- [NGINX Ingress Controller]({{< ref "/nic/technical-specifications.md" >}}) + +It is also where information about the [Supported Security Policy Features]({{< ref "/nap-waf/v4/configuration-guide/configuration.md#supported-security-policy-features" >}}) could be referenced, though most of that detail will instead be kept in the new top-level "Policies" section. + +{{}} + +This page outlines the technical specifications for F5 WAF for NGINX, which includes the minimum requirements and supported platforms. + +## Supported deployment environments + +You can deploy F5 WAF for NGINX in the following environments: + +- **Virtual environment** (or bare metal) +- **Container** (Docker) +- **Kubernetes** + +View the [Install section]({{< ref "/waf/install/" >}}) for information on deploying F5 WAF for NGINX. + +## Supported operating systems + +| Distribution | Version | +| ------------------ | ------------ | +| Alpine Linux | 3.19 | +| Amazon Linux | 2023 | +| Debian | 11, 12 | +| Oracle Linux | 8.1 | +| Ubuntu | 22.04, 24.04 | +| RHEL / Rocky Linux | 8, 9 | + +For release-specific packages, view the [Changelog]({{< ref "/waf/changelog.md" >}}). + + +### Package dependencies + +The F5 WAF for NGINX package has the following dependencies: + +| Module name | Description | +| ------------------------------------------ | ----------- | +| nginx-plus-module-appprotect | NGINX Plus dynamic module for F5 WAF for NGINX | +| app-protect-engine | The F5 WAF for NGINX enforcement engine | +| app-protect-plugin | The F5 WAF for NGINX connector API between the engine and the NGINX Plus dynamic module | +| app-protect-compiler | The F5 WAF for NGINX enforcement engine compiler agent | +| app-protect-common | The F5 WAF for NGINX shared libraries package | +| app-protect-geoip | The F5 WAF for NGINX geolocation update package | +| app-protect-graphql | The F5 WAF for NGINX shared library package for GraphQL protection | +| app-protect-attack-signatures | The F5 WAF for NGINX attack signatures update package | +| app-protect-threat-campaigns | The F5 WAF for NGINX threat campaigns update package | +| app-protect-bot-signatures | The F5 WAF for NGINX bot signatures update package | +| app-protect-selinux (**1**) | The prebuilt SELinux policy module for F5 WAF for NGINX | +| app-protect-ip-intelligence (**1**, **2**) | Necessary for the IP intelligence feature | + +1. _Optional dependencies_ +2. _This package needs to be installed separately, and includes a client for downloading and updating the feature's database_ + +## Supported security policy features + +The following security policy features are available with F5 WAF for NGINX. + +The names link to additional information in the [Configure policies]({{< ref "/waf/policies/configuration.md" >}}) topic. + +{{< include "waf/supported-policy-features.md" >}} \ No newline at end of file diff --git a/content/waf/fundamentals/terminology.md b/content/waf/fundamentals/terminology.md new file mode 100644 index 000000000..3e54e1af8 --- /dev/null +++ b/content/waf/fundamentals/terminology.md @@ -0,0 +1,46 @@ +--- +# We use sentence case and present imperative tone +title: "Terminology" +# Weights are assigned in increments of 100: determines sorting order +weight: 300 +# Creates a table of contents and sidebar, useful for large documents +toc: false +# Types have a 1:1 relationship with Hugo archetypes, so you shouldn't need to change this +nd-content-type: reference +# Intended for internal catalogue and search, case sensitive: +# Agent, N4Azure, NIC, NIM, NGF, NAP-DOS, NAP-WAF, NGINX One, NGINX+, Solutions, Unit +nd-product: NAP-WAF +--- + +This page defines terminology used when describing functionality of F5 WAF for NGINX. + +It assumes you are familiar with various layer 7 (L7) hypertext transfer protocol (HTTP) concepts such as: + +- Uniform Resource Identifier (URI) +- Uniform Resource Location (URL) +- HTTP methods and status codes +- HTTP headings, requests, responses, and parameters +- Cookies + +## Terms and definitions + +|Term | Definition | +| ---| --- | +| Alarm | If selected, the F5 WAF for NGINX system records requests that trigger the violation in the remote log (depending on the settings of the logging profile). | +| Attack signature | Textual patterns which can be applied to HTTP requests and/or responses by F5 WAF for NGINX to determine if traffic is malicious. For example, the string `