[packages/nginx-mod_http_modsecurity_crs] - local exclusion hooks: REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf and RESPONSE-999-EXCLUSION-RULE

arekm arekm at pld-linux.org
Sat Sep 12 00:51:30 CEST 2026


commit f8c4604b86fd51d24de8ae146d4d2fd4c299ecbd
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Sat Sep 12 00:48:36 2026 +0200

    - local exclusion hooks: REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf and RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
    - rel 2

 REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf | 10 ++++++++++
 RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf |  6 ++++++
 nginx-mod_http_modsecurity_crs.conf         |  5 ++++-
 nginx-mod_http_modsecurity_crs.spec         |  7 ++++++-
 4 files changed, 26 insertions(+), 2 deletions(-)
---
diff --git a/nginx-mod_http_modsecurity_crs.spec b/nginx-mod_http_modsecurity_crs.spec
index 3264422..e15bd7a 100644
--- a/nginx-mod_http_modsecurity_crs.spec
+++ b/nginx-mod_http_modsecurity_crs.spec
@@ -3,10 +3,12 @@ Summary(pl.UTF-8):	Aktywacja OWASP Core Rule Set dla modułu ModSecurity nginx-a
 Name:		nginx-mod_http_modsecurity_crs
 # loader layout follows CRS 4 (plugins/*-{config,before,after}.conf), not a CRS release
 Version:	4.0
-Release:	1
+Release:	2
 License:	Apache v2.0
 Group:		Daemons
 Source0:	%{name}.conf
+Source1:	REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
+Source2:	RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
 URL:		https://coreruleset.org/
 # crs-setup.conf.example is copied at build time
 BuildRequires:	modsecurity-crs >= 4
@@ -42,6 +44,7 @@ install -d $RPM_BUILD_ROOT%{_sysconfdir}/modsecurity/rules.d
 cp -p %{SOURCE0} $RPM_BUILD_ROOT%{_sysconfdir}/modsecurity/rules.d/10_crs.conf
 # rule 901001 rejects every request unless a setup file is loaded before rules/
 cp -p %{_datadir}/modsecurity-crs/crs-setup.conf.example $RPM_BUILD_ROOT%{_sysconfdir}/modsecurity/crs-setup.conf
+cp -p %{SOURCE1} %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/modsecurity
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -57,4 +60,6 @@ fi
 %files
 %defattr(644,root,root,755)
 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/modsecurity/crs-setup.conf
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/modsecurity/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/modsecurity/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/modsecurity/rules.d/10_crs.conf
diff --git a/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf b/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
new file mode 100644
index 0000000..9e909e1
--- /dev/null
+++ b/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
@@ -0,0 +1,10 @@
+# Local rule exclusions evaluated BEFORE the CRS rules (loaded right after
+# crs-setup.conf and the plugins). Use this file for runtime exclusions with
+# ctl: actions, which must run before the rule they modify, e.g.
+#
+#   SecRule REQUEST_URI "@beginsWith /api/upload" \
+#       "id:10001,phase:1,pass,nolog,ctl:ruleRemoveById=920420"
+#   SecRule REQUEST_HEADERS:User-Agent "@endsWith (internal dummy connection)" \
+#       "id:10002,phase:1,pass,nolog,ctl:ruleEngine=Off"
+#
+# Use ids in the 1-99999 range; they are reserved for local rules.
diff --git a/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf b/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
new file mode 100644
index 0000000..97234c2
--- /dev/null
+++ b/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
@@ -0,0 +1,6 @@
+# Local rule exclusions evaluated AFTER the CRS rules are loaded. Use this file
+# for configure-time exclusions, which need the rule to exist already, e.g.
+#
+#   SecRuleRemoveById 950130
+#   SecRuleUpdateTargetById 942100 "!ARGS:password"
+#   SecRuleRemoveByTag "attack-protocol"
diff --git a/nginx-mod_http_modsecurity_crs.conf b/nginx-mod_http_modsecurity_crs.conf
index 5c9e23e..960fb88 100644
--- a/nginx-mod_http_modsecurity_crs.conf
+++ b/nginx-mod_http_modsecurity_crs.conf
@@ -1,7 +1,10 @@
 # OWASP Core Rule Set (modsecurity-crs) for nginx ModSecurity.
-# Order required by CRS: setup, plugin config, plugin before-rules, rules, plugin after-rules.
+# Order required by CRS: setup, plugin config, plugin before-rules, local before-rules,
+# rules, plugin after-rules, local after-rules.
 Include /etc/nginx/modsecurity/crs-setup.conf
 Include /usr/share/modsecurity-crs/plugins/*-config.conf
 Include /usr/share/modsecurity-crs/plugins/*-before.conf
+Include /etc/nginx/modsecurity/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
 Include /usr/share/modsecurity-crs/rules/*.conf
 Include /usr/share/modsecurity-crs/plugins/*-after.conf
+Include /etc/nginx/modsecurity/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/nginx-mod_http_modsecurity_crs.git/commitdiff/f8c4604b86fd51d24de8ae146d4d2fd4c299ecbd



More information about the pld-cvs-commit mailing list