У меня есть правило, которое я пытаюсь изменить только для одного хоста. Вот правило:
SecRule REQUEST_FILENAME "@pmFromFile restricted-files.data" \
"id:930130,\
phase:2,\
block,\
capture,\
t:none,t:utf8toUnicode,t:urlDecodeUni,t:normalizePathWin,t:lowercase,\
msg:'Restricted File Access Attempt',\
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',\
tag:'application-multi',\
tag:'language-multi',\
tag:'platform-multi',\
tag:'attack-lfi',\
tag:'paranoia-level/1',\
tag:'OWASP_CRS',\
tag:'OWASP_CRS/WEB_ATTACK/FILE_INJECTION',\
tag:'WASCTC/WASC-33',\
tag:'OWASP_TOP_10/A4',\
tag:'PCI/6.5.4',\
ver:'OWASP_CRS/3.2.0',\
severity:'CRITICAL',\
setvar:'tx.lfi_score=+%{tx.critical_anomaly_score}',\
setvar:'tx.anomaly_score_pl1=+%{tx.critical_anomaly_score}'"
Он извлекает данные из файла restricted-files.data
Вот конец этого файла:
bower.json
.bowerrc
.eslintrc
.jshintrc
.gitlab-ci.yml
.travis.yml
database.yml
Dockerfile
Я хотел бы удалить отдельные записи из этого файла без редактирования самого файла, поскольку другие хосты используют полный набор данных. Допустим, я хочу пропустить правило .travis.yml
файлы для определенного условия. Я написал следующее правило, но оно не работает. Я знаю, что регулярное выражение "@rx ^/remote\.php/(?:dav|webdav)/"
работает, потому что я это тестировал. Я не уверен, что понимаю, как ctl:ruleRemoveTargetById
должен работать. У меня создалось впечатление, что это изменит существующее правило.
SecRule REQUEST_FILENAME "@rx ^/remote\.php/(?:dav|webdav)/" \
"id:1007,\
phase:2,\
pass,\
t:none,\
nolog,\
ctl:ruleRemoveTargetById=930130;ARGS:.travis.yml"