景安微信
右侧QQ联系不上,可以加我微信
您好,欢迎来到景安网络!
加盟景安
主页 >web安全 >浅谈WAF防火墙防护规则编写

浅谈WAF防火墙防护规则编写


来源:景安网络发表日期:2017-03-20浏览次数:Tags:WAF防火墙
景安网络专业的数据中心服务商,长期提供数据中心托管服务,私有云,互联网解决方案,互联网增值服务。针对工信委大力实施“万企业上云”计划,景安以我所能,为你而+,推出上云特惠,核心云计算产品降幅达50%!!也欢迎来聊右侧qq
ModSecurity是一个开源的、跨平台的WAF防火墙,它可以通过过滤Web服务接收到的数据,以及发出去的数据来对网站进行安全防护,但是如果网站中已经存在木马或病毒文件,ModSecurity将无法拦截这些文件,除非这些文件在进行Web数据交互时触发了ModSecurity的防护规则。
浅谈WAF防火墙防护规则编写
一、ModSecurity作用
 
Mod_security有可以防护以下入侵行为:
 
SQL Injection (SQLi):阻止SQL注入
 
Cross Site Scripting (XSS):阻止跨站脚本攻击
 
Local File Inclusion (LFI):阻止利用本地文件包含漏洞进行攻击
 
Remote File Inclusion (RFI):阻止利用远程文件包含漏洞进行攻击
 
Remote Code Execution (RCE):阻止利用远程命令执行漏洞进行攻击
 
PHP Code Injection:阻止PHP代码注入
 
HTTP Protocol Violations:阻止违反HTTP协议的恶意访问
 
HTTPoxy:阻止利用远程代理感染漏洞进行攻击
 
Shellshock:阻止利用Shellshock漏洞进行攻击
 
Session Fixation:阻止利用Session会话ID不变的漏洞进行攻击
 
Scanner Detection:阻止黑客扫描网站
 
Metadata/Error Leakages:阻止源代码/错误信息泄露
 
Project Honey Pot Blacklist:蜜罐项目黑名单,即将入侵行为保存进黑名单中,然后进行拦截
 
GeoIP Country Blocking:根据判断IP地址归属地来进行IP阻断
 
二、ModSecurity防护规则格式
 
SecRule ARGS "@rx attack" "phase:1,log,deny,status:406,id:1,msg:'Rule msg',t:lowercase"
 
三、ModSecurity检测变量
 
检测变量,即设置需要检测的位置,Mod_security检测变量共105个,在此只列举几个个人常用的:
 
REQUEST_URI:请求的网站URL,包含GET请求的参数,但不包含域名,如/index.php? p=X
 
REQUEST_URI_RAW:完整的网站URL,包含GET请求的参数,同时包含域名,如http://www.example.com/index.php?p=X
 
SERVER_NAME:服务端的域名或IP地址
 
REMOTE_ADDR:客户端的IP地址
 
REQUEST_BODY:请求体,包含所有的请求参数以及请求值
 
检测变量可以同时设置多个,以“|”分隔即可
 
 
五、ModSecurity处理阶段
 
Mod_security共分5个处理阶段,分别是:
 
请求头阶段,对应编号1
 
请求体阶段,对应编号2
 
响应头阶段,对应编号3
 
响应体阶段,对应编号4
 
记录日志阶段,对应编号5
 
处理阶段不可随意定义,需要与检测变量所在的阶段匹配,比如REQUEST_BODY为请求体,处理阶段需要设置为2,但不能设置为1,因为1为请求头阶段,请求头中不包含请求数据,因此无法进行拦截。
 
六、ModSecurity日志设置
 
日志设置有五个参数:
 
log:记录日志,日志的内容保存在网站的错误日志中
 
nolog:不记录日志
 
auditlog:记录为审计日志,日志的内容保存在配置的审计日志文件/文件夹中
 
noauditlog:不记录审计日志
 
logdata:设置日志记录的内容
 
七、ModSecurity行动
 
行动关键字共47个,常用的行为有以下:
 
deny:阻断此次访问,并向客户端返回错误信息
 
Status:当访问被拦截后,设置一个HTTP状态码返回至客户端,只能与deny与redirect搭配使用
 
drop:立即中断此次TCP链接并丢弃,此时客户端收到的响应为链接超时
 
allow:允许此次访问
 
pass:允许此次访问,但会将此次访问扔会被其他规则继续进行过滤
 
chain:将当前规则与其他规则进行关联,创造出规则链,当规则链中的所有规则都被匹配成功后,才会执行规则中设置的行动
 
ctl:临时改变Mod_security的默认配置,只对当前配置的规则有效
 
八、ModSecurity规则ID
 
每条规则都必须设置一个数字格式的规则ID,且不能重复
 
九、Mod_security信息
 
用于设置规则的名称或用途,可以不设置
 
十、Mod_security数据操作函数
 
数据操作函数即通过一系列函数对数据进行处理,然后再进行规则匹配。使用方式为“t:数据操作函数”,操作函数共37个,个人常用的有以下:
 
lowercase:将所有字符设置为小写
 
trim:移除所有空格
 
十一、误拦截
 
由于Mod_security的很多防护规则是匹配一些危险的字符进行防护,但有时候可能我们正常输入的信息恰恰包含这些字符,结果导致我们的访问被拦截,出现这种误拦截情况,可以通过以下
 
两种方式进行处理:
 
1.停用指定的防护规则
 
停用指定的防护规则有两种方式:
 
在规则前加注释符“#”,或利用SecRuleRemoveById配置指令,即可将规则停用
 
2.将被拦截的URL加入白名单
 
通过行动中的allow与ctl关键字,我们可以将URL设置为白名单,如:
 
SecRule REQUEST_URI "^/wp-admin/post.php.*" "phase:1,t:none,nolog,allow,ctl:ruleEngine=Off,ctl:auditEngine=Off,id:2008"
 
此规则就是指定/wp-admin/post.php这一文件进行的所有数据传输都不进行拦截,从而达到白名单的目的
 

0(好文)
0(太水)
版权声明:部分文章源于网络,如侵权请联系我们删除
买购快云Plus,云服务器折上折

专题页