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

Ограничьте правило mod_security только одним виртуальным хостом

Я запускаю несколько доменов (через vhosts) с одной и той же установкой apache. Некоторые домены требуют других правил mod_security, чем другие. В отдельном файле exceptions.conf я собираю все эти правила и использую такой синтаксис:

<Location "/test">
    SecAuditEngine Off
    SecRuleRemoveById 950134
    SecRuleRemoveById 981265
    SecRuleRemoveById 981289
    SecRuleRemoveById 981244
    SecAuditEngine RelevantOnly     
</Location>

Но это правило будет соответствовать всем папкам / test на всех доменах! Но я хочу ограничить его только конкретным хостом. Как я могу ограничить эти правила для виртуального хоста только в глобальном файле exceptions.conf?

Вот несколько способов сделать это:

  • вместо глобального файла исключений поместите исключения внутри определений виртуальных хостов.
  • если вы хотите, чтобы файл исключений был отдельным от фактического определения виртуального хоста, не включайте его в конфигурацию основного сервера - вместо этого включайте его изнутри виртуального хоста.
  • Вместо того, чтобы использовать <Location>используйте SecRule и ctl:ruleRemoveByID действие. Пример:

SecRule SERVER_NAME "somedomain\.com$" "@streq /test/.*" "ctl:ruleRemoveByID=981244"

Если возможно, первый будет самым простым.