4.5. 复杂 ModSecurity 规则的示例
您可以定义以下复杂的 ModSecurity 规则,例如,检查请求是否已更改历史记录:
SecRule REQUEST_URI|REQUEST_BODY|REQUEST_HEADERS_NAMES|REQUEST_HEADERS "history.pushstate|history.replacestate" "phase:4,deny,log,msg:'history-based attack detected'
前面的 ModSecurity 规则由以下组件组成:
SecRule
一个 配置指令,它会创建一个规则来利用指定的 Operator 分析指定的变量
注意大多数 ModSecurity 规则使用此配置指令。
- `REQUEST_URI|REQUEST_BODY|REQUEST_HEADERS_NAMES|REQUEST_HEADERS `
- 由管道分隔 的变量列表,用于定义规则检查的请求的不同部分
"history.pushstate|history.replacestate"
-
检查 JavaScript
history.pushstate ()
和history.replacestate ()
方法的以管道分隔的 运算符 对 "phase:4,deny,log,msg:'history-based attacks detected'"
- 如果找到指定的 operator 值,则规则 执行的操作 或 转换
根据前面的示例,在 Apache 请求周期的第 4 阶段,规则检查 history.pushstate ()
和 history.replacestate ()
方法的请求周期的不同部分。如果规则在请求 URL 字符串、请求正文、请求标头名称或请求标头中找到这些方法,规则将执行以下操作:
deny
停止规则处理并截获事务
log
将规则成功与 Apache 错误日志文件和 ModSecurity 审计日志匹配
msg
输出在日志中
检测到的基于历史记录的攻击
的消息