Я хочу распечатать оценку аномалии mod_security в журнал ошибок apache. я использую setenv
для установки переменной окружения и %{name}e
синтаксис для печати в журнале.
Конфигурация Modsecurity:
SecAction "id:90100,phase:5,pass, nolog, setenv:ModSecAnomalyScoreIn=%{tx.anomaly_score}, setenv:ModSecAnomalyScoreOut=%{TX.outbound_anomaly_score}"
Конфигурация Apache:
ErrorLogFormat "[...] [anomaly_score_in: %-{ModSecAnomalyScoreIn}e, anomaly_score_out: %-{ModSecAnomalyScoreOut}e ]"
Но вывод пустой: [...] [anomaly_score_in: -, anomaly_score_out: - ]
Если я добавлю SecAction "id:9990101,phase:5,pass, log, msg:'in: %{env.anomaly_score}, out: %{env.ModSecAnomalyScoreOut}'
, партитуры печатаются, но в новой строке журнала.
Где я неправ?
Есть ли %{name}e
в ErrorLogFormat равно %{VARNAME}e
в mod_log_config?
Почему между %
и {
в первом нерабочем примере?
Так же Справочное руководство Modsecurity говорит, что вам следует использовать %{modsecurity_variable_name}M
вместо того %{modsecurity_variable_name}e
.
Итак, я считаю, что ваша окончательная конфигурация должна быть:
ErrorLogFormat "[...] [anomaly_score_in: %{ModSecAnomalyScoreIn}M, anomaly_score_out: %{ModSecAnomalyScoreOut}M ]"
Также обратите внимание, что настраиваемые ErrorLogFormats работают только с ModSecurity 2.9.1 или выше: https://github.com/SpiderLabs/ModSecurity/pull/840