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

Могу ли я распечатать переменную среды apache в журнале ошибок?

Я хочу распечатать оценку аномалии 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