Назад | Перейти на главную страницу

Как использовать modsecurity RemoveTargetById для изменения существующего правила

У меня есть правило, которое я пытаюсь изменить только для одного хоста. Вот правило:

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"