diff --git a/www/nginx/src/opnsense/mvc/app/controllers/OPNsense/Nginx/forms/httpserver.xml b/www/nginx/src/opnsense/mvc/app/controllers/OPNsense/Nginx/forms/httpserver.xml index 2ec09b01c..17e39f8b0 100644 --- a/www/nginx/src/opnsense/mvc/app/controllers/OPNsense/Nginx/forms/httpserver.xml +++ b/www/nginx/src/opnsense/mvc/app/controllers/OPNsense/Nginx/forms/httpserver.xml @@ -167,6 +167,15 @@ All: All access restrictions must be fulfilled; Any: Any of the access restrictions must be fulfilled. + + httpserver.naxsi_whitelist_srcip + + true + + select_multiple + true + Enter a list of IP addresses or CIDR networks which will be whitelisted for the Naxsi rules. + httpserver.naxsi_extensive_log diff --git a/www/nginx/src/opnsense/mvc/app/models/OPNsense/Nginx/Nginx.xml b/www/nginx/src/opnsense/mvc/app/models/OPNsense/Nginx/Nginx.xml index e17095332..cebf7d930 100644 --- a/www/nginx/src/opnsense/mvc/app/models/OPNsense/Nginx/Nginx.xml +++ b/www/nginx/src/opnsense/mvc/app/models/OPNsense/Nginx/Nginx.xml @@ -694,6 +694,11 @@ 0 Y + + N + /^((?:\d+\.){3,3}\d+|[a-f0-9\:]+)(?:\/\d+)?(,?(?:(?:(\d+\.){3,3}\d+|[a-f0-9\:]+)(?:\/\d+)?))*$/i + Y + 0 Y diff --git a/www/nginx/src/opnsense/service/templates/OPNsense/Nginx/http.conf b/www/nginx/src/opnsense/service/templates/OPNsense/Nginx/http.conf index adc6213d0..05aea6864 100644 --- a/www/nginx/src/opnsense/service/templates/OPNsense/Nginx/http.conf +++ b/www/nginx/src/opnsense/service/templates/OPNsense/Nginx/http.conf @@ -78,6 +78,15 @@ include opnsense_http_vhost_plugins/*.conf; {% if OPNsense.Nginx.general.enabled is defined and OPNsense.Nginx.general.enabled == '1' %} {% for server in helpers.toList('OPNsense.Nginx.http_server') %} {% set single_servername = server.servername.split(",")[0] %} +{% if server.naxsi_whitelist_srcip is defined and server.naxsi_whitelist_srcip != '' %} + geo $naxsiwl{{ server['@uuid'].replace('-', '') }} { + default 0; + # Disable naxsi if client ip is trusted +{% for whitelist_srcip in server.naxsi_whitelist_srcip.split(',') %} + {{ whitelist_srcip }} 1; +{% endfor %} + } +{% endif %} server { {% set our_headers = [] %} {% do our_headers.append('X-Powered-By') %} @@ -260,6 +269,11 @@ server { } {% endif %} include {{ server['@uuid'] }}_pre/*.conf; +{% if server.naxsi_whitelist_srcip is defined and server.naxsi_whitelist_srcip != '' %} + if ($naxsiwl{{ server['@uuid'].replace('-', '') }}) { + set $naxsi_flag_enable 0; + } +{% endif %} {% if server.rewrites is defined %} {% for rewrite_uuid in server.rewrites.split(',') %} {% set rewrite = helpers.getUUID(rewrite_uuid) %}