1、部署参考文章:https://www.cnblogs.com/xll970105/p/10250697.html
2、规则介绍参考:http://www.modsecurity.cn/chm/phase.html
3、关于规则的问题记录:
(1)分为5个阶段:
Request Header(phase:1):处理 requesst line 和 request headers
Request Body(phase:2):处理 request body
Response Header(phase:3):处理 response headers
Response Body(phase:4):处理 response body
Logging(phase:5):日志记录,添加header
(2)添加例外:修改modsecurity.conf配置
a、通过规则id: 添加SecRuleRemoveById id
b、SecRuleRemoveByMsg指令:通过Rule Msg禁用指定规则
c、url加白 :对指定路径关闭WAF检测/或只记录不拦截
(3)规则新规则:
黑名单
#SecRule REMOTE_ADDR "@pmFromFile host.deny.data" "id:10087,phase:1,log,auditlog,deny,status:403,msg:'jinzhifangwen'"
#SecRule REMOTE_ADDR "@pmFromFile host.deny.data" "id:10088,phase:2,log,auditlog,deny,status:403,msg:'jinzhifangwen'"
白名单:SecRule REMOTE_ADDR "@pmFromFile host.allow.data" "id:10085,phase:1,nolog,pass,ctl:ruleEngine=off"
SecRule REMOTE_ADDR "@pmFromFile host.allow.data" "id:10086,phase:2,nolog,pass,ctl:ruleEngine=off"
(2)SecAuditLogParts
A:审计日志头(必须配置)
B:请求头
C:请求体(仅在请求体存在并且ModSecurity配置为拦截它时才存在。 这需要将SecRequestBodyAccess设置为On)
D:该值是为中间响应头保留,尚未有任何实际作用
E:中间响应体(仅当ModSecurity配置为拦截响应体并且审计日志引擎配置为记录时才存在。 拦截响应体需要将SecResponseBodyAccess设置为On)。 除非ModSecurity拦截中间响应体,否则中间响应体与实际响应体相同,在这种情况下,实际响应体将包含错误消息(Apache默认错误消息或ErrorDocument页面))
F:最终响应头(不包括日期和服务器标题,Apache始终在内容交付的后期阶段添加)
G:该值是为实际响应体保留,尚未有任何实际作用
H:审计日志追踪内容;
I:该部分是C的替代品。除了使用multipart/form-data编码,否则它在所有情况下记录的数据与C相同。 在这种情况下,它将记录一个假应用程序/ x-www-form-urlencoded正文,其中包含有关参数的信息,但不包含有关文件的信息。 如果您不想在审核日志中存储(通常很大)的文件,使用I比使用C更方便。
J:该部分包含有关使用multipart/form-data编码上传的文件的信息。
K:该部分包含了本次访问中所匹配到的所有规则(按每行一个进行记录)。规则是完全合格的,因此将显示继承的操作和默认操作符。V2.5.0以上支持。
Z:结尾分界线,表示本次日志记录完毕(必须配置)
(2)
REQUEST-910-IP-REPUTATION.conf(可疑IP匹配)
REQUEST-912-DOS-PROTECTION.conf(DDOS攻击)
REQUEST-913-SCANNER-DETECTION.conf(扫描器检测)
REQUEST-920-PROTOCOL-ENFORCEMENT.conf(HTTP协议规范相关规则)
REQUEST-921-PROTOCOL-ATTACK.conf(协议攻击)
举例:HTTP Header Injection Attack、HTTP参数污染
REQUEST-930-APPLICATION-ATTACK-LFI.conf(应用攻击-路径遍历)
REQUEST-931-APPLICATION-ATTACK-RFI.conf(远程文件包含)
REQUEST-932-APPLICATION-ATTACK-RCE.conf(远程命令执行)
REQUEST-933-APPLICATION-ATTACK-PHP.conf(PHP注入攻击)
REQUEST-941-APPLICATION-ATTACK-XSS.conf(XSS)
REQUEST-942-APPLICATION-ATTACK-SQLI.conf(SQL注入)
REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION.conf(会话固定)
REQUEST-949-BLOCKING-EVALUATION.conf()
RESPONSE-950-DATA-LEAKAGES.conf(信息泄露)
RESPONSE-951-DATA-LEAKAGES-SQL.conf(SQL信息泄露)
RESPONSE-952-DATA-LEAKAGES-JAVA.conf(JAVA源代码泄露)
RESPONSE-953-DATA-LEAKAGES-PHP.conf(PHP信息泄露)
RESPONSE-954-DATA-LEAKAGES-IIS.conf(IIS信息泄露)