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/install-next-steps.md b/content/includes/waf/install-next-steps.md new file mode 100644 index 000000000..9d2214743 --- /dev/null +++ b/content/includes/waf/install-next-steps.md @@ -0,0 +1,10 @@ +--- +nd-docs: +--- + +Once you have successfully installed F5 WAF for NGINX, there are some topics you may want to follow afterwards: + +- [Configure policies]({{< ref "/waf/policies/configuration.md" >}}), to begin customizing your deployment +- [IP intelligence]({{< ref "/waf/policies/ip-intelligence.md">}}), for the extra steps to enable the IP intelligence feature +- [Converter tools]({{< ref "/waf/tools/converters.md" >}}), to convert existing resources from a BIG-IP environment +- [Changelog]({{< ref "/waf/changelog.md" >}}), to view information from the latest releases \ No newline at end of file diff --git a/content/includes/waf/install-post-checks.md b/content/includes/waf/install-post-checks.md new file mode 100644 index 000000000..8fea8b4cf --- /dev/null +++ b/content/includes/waf/install-post-checks.md @@ -0,0 +1,61 @@ +--- +nd-docs: +--- + +Use the following steps to ensure that F5 WAF for NGINX enforcement is operational. + +Check that the three processes for F5 WAF for NGINX are running using `ps aux`: + +- _bd-socket-plugin_ +- _nginx: master process_ +- _nginx: worker process_ + +```shell +USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND +root 8 1.3 2.4 3486948 399092 ? Sl 09:11 0:02 /usr/share/ts/bin/bd-socket-plugin tmm_count 4 proc_cpuinfo_cpu_mhz 2000000 total_xml_memory 307200000 total_umu_max_size 3129344 sys_max_account_id 1024 no_static_config +root 14 0.0 0.1 71060 26680 ? S 09:11 0:00 nginx: master process /usr/sbin/nginx -c /tmp/policy/test_nginx.conf -g daemon off; +root 26 0.0 0.3 99236 52092 ? S 09:12 0:00 nginx: worker process +root 28 0.0 0.0 11788 2920 pts/0 Ss 09:12 0:00 bash +root 43 0.0 0.0 47460 3412 pts/0 R+ 09:14 0:00 ps aux +``` + +Verify there are no errors in the file `/var/log/nginx/error.log` and that the policy compiled successfully: + +```none +2020/05/10 13:21:04 [notice] 402#402: APP_PROTECT { "event": "configuration_load_start", "configSetFile": "/opt/f5waf/config/config_set.json" } +2020/05/10 13:21:04 [notice] 402#402: APP_PROTECT policy 'app_protect_default_policy' from: /etc/app_protect/conf/NginxDefaultPolicy.json compiled successfully +2020/05/10 13:21:04 [notice] 402#402: APP_PROTECT { "event": "configuration_load_success", "software_version": "1.1.1", "attack_signatures_package":{"revision_datetime":"2019-07-16T12:21:31Z"},"completed_successfully":true} +2020/05/10 13:21:04 [notice] 402#402: using the "epoll" event method +2020/05/10 13:21:04 [notice] 402#402: nginx/1.17.6 (nginx-plus-r20) +2020/05/10 13:21:04 [notice] 402#402: built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) +2020/05/10 13:21:04 [notice] 402#402: OS: Linux 3.10.0-957.27.2.el7.x86_64 +2020/05/10 13:21:04 [notice] 402#402: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +2020/05/10 13:21:04 [notice] 406#406: start worker processes +2020/05/10 13:21:04 [notice] 406#406: start worker process 407 +``` + +Check that sending an attack signature in a request returns a response block page containing a support ID: + +```shell +Request: +http://10.240.185.211/?a=