针对挂马的检测策略同理,我们可以根据设定检测HTTP请求体中的特征,发现PHP挂马程序,代码如下所示:req-body contains "<?php", req-body contains "eval";
如果网站中存在木马或病毒文件,ModSecurity就不能拦截它们,除非它们在网络数据交互期间触发ModSecurity的保护规则。
对WAF防火墙保护规则的编写进行了探讨。
一、Security公司的角色。
Mod_security可以防止下列错误:
SQLInjection(SQLi):防止SQL注入。
交叉站点脚本:防止跨站点脚本攻击(XSS)。
局部文件包含(LFI):通过利用局部文件包含的漏洞防止攻击。
Remote文件包含:利用远程文件包含防止攻击的漏洞。
RCE:利用远程命令的执行漏洞来阻止攻击的发生。
PHP代码注入:避免了PHP代码的注入。
破坏协议:防止恶意访问破坏协议。
恶毒:利用远程代理感染漏洞阻止攻击。
Shellshock:使用Shellshock漏洞来阻止攻击。
SessionSecurities:防止使用会话来识别恒定漏洞。
扫描检测:阻止黑客扫描站点。
Metadata/Errors:防止源代码/Errors泄漏。
“蜜罐计划”的黑名单:“蜜罐计划”的黑名单,也就是“入侵保存”的黑名单。
IP国别:IP国别根据确定的IP地址属性而定。
二、保护模型规则的格式。
SecRuleARGS"@rx攻击"阶段:1,记录,拒绝,状态:406,ID:1,Message:"Rulemsg",t:小写。
再次,ModSecurity检测变量。
侦测变数或设定侦测位置。使用105个Mod_security检测变量,其中仅列出一些常用变量:
REQUEST_URI:被请求站点的URL,包括GET请求的参数,但是没有域名,例如/index.php?P=X
包含GET请求参数和域名的完整网址,如http://www.example.com/index.php?p=x
ServerName:服务器的域名或IP地址。
Remote_ADDR:客户端的IP地址。
Request体:Request体,包含所有请求参数和请求值。
多个检测变量可以同时设置,并以“|”分隔。
谓词(verb的缩写词)阶段。
Mod_security分为以下五个处理阶段:
要求标题阶段,与编号1对应。
申请主体阶段,对应2号。
响应标题阶段的编号为3。
响应阶段,对应4号。
与编号5对应的日志记录阶段。
不能任意定义处理阶段,并且需要与检测变量所在的阶段匹配。例如,REQUEST_BODY是请求体,而处理阶段需要设置为2,但是不能设置为1,这是因为1是不包含请求数据的请求头阶段,不能被截获。
动词ModSecurity不及日志设置。
有五个参数用于日志设置:
记录:记录日志,将日志内容保存到错误日志站点。
请勿登录。
审计日志:作为审核日志记录下来,并且日志内容保存在配置的审计日志文件/文件夹中。
Noauditlog:审核日志不被记录。
记录资料:设定记录内容。
七.安全运行模式。
动作关键词共47个,常见行为如下:
Discovery:阻止此访问并向客户端返回错误消息。
状况:在访问被拦截时,设置HTTP状态码并返回给客户机,它只能用来拒绝和重定向。
Discovery:立即中断并删除TCP链接。这时,客户机接收到的响应超时。
许可:允许这种访问。
Pass:允许这样的访问,但是它会被丢弃,然后通过其他规则进行过滤。
链接:将当前规则与另一个规则关联,从而创建规则链。规则链中的所有规则均已成功匹配,才能执行规则中设置的操作。
Ctl:暂时更改Mod_security的默认配置,只有当前配置才是有效的。