Я пытаюсь написать исключения из правил modsecurity и, похоже, не могу заставить ctl:ruleRemoveTargetById
работать согласно справочному руководству.
Мой сервер работает под управлением Debian 9 с apache2 2.4.25-3 + deb9 У меня естьпопытался следовать справочному руководству по github и попытался эмулировать примеры правил в файле> REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.Я написал простое правило для определенных аргументов, а затем попытался исключить его, но оно не исключает правило, основанное на аргументах.Я вижу и идентификатор правила, и идентификатор исключения из правил в журналах.
Я произвольно поместил приведенное ниже правило в файл REQUEST-905-COMMON-EXCEPTIONS.conf
SecRule ARGS "@rx propfind" "id:905999,phase:2,log,msg:'test msg delete rule'"
Это стреляет как надо.На моей странице настроек nextcloud есть аргумент с именем <?xml version
, который содержит шаблон «propfind», который я использую для тестирования.
Я также написал исключение и поместил его в REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
SecRule ARGS_NAMES "@rx <\?xml\sversion" "phase:2,log,id:1030,ctl:ruleRemoveTargetById=905999;ARGS:/<\?xml\sversion/"
Это правило срабатывает, как и ожидалось, но не мешает правилу 905999 запустить аргумент с именем <?xml version
Я упростил правила до двух нижеи это работает как ожидалось;при вводе example.com/?test=trigger
я вижу в журнале правило 905999, но при отправке example.com/?testarg=trigger
я вижу только то правило исключения 1030, которое ожидалось.
SecRule ARGS "@rx trigger" "id:905999,phase:2,log,msg:'test msg delete rule'"
SecRule ARGS_NAMES "@rx testarg" "phase:2,log,id:1030,ctl:ruleRemoveTargetById=905999;ARGS:testarg"
Когда я открываю вкладку настроек nextcloud, запрос HTTPсодержит
<?xml version="1.0"?><d:propfind xmlns:d="DAV:"><d:prop><d:resourcetype/></d:prop></d:propfind>
, который Modsec интерпретирует как имя аргумента <?xml version
, содержащее значение "1.0"?><d:propfind xmlns:d="DAV:"><d:prop><d:resourcetype/></d:prop></d:propfind>
Я бы ожидал, что мое правило 1030 остановит запуск 905999, но я все еще вижу обаправила в журнале.Я предполагаю, что это из-за пробела между «xml» и «version», но не могу понять, как исключить цель.