以办理《计算机信息系统安全专用产品销售许可证》为目标,ShareWAF功能过检测评功能方法全解。

参考:《信息安全技术 web应用防火墙安全技术要求与测试评价方法》

等级:基本级。

评测依据:5.2.1安全功能要求测试评价方法。

测试需知:

1、本地测评时,需通过hosts进行本地域名解析

2、需在ShareWAF中添加好被保护测试目标;

3、ShareWAF管理员后台入口:url(SharewWAF安装地址:管理后台端口)/admin.html;

4、被保护网站管理入口:url(SharewWAF安装地址:管理后台端口);

5、被保护测试网站,用域名访问,域名为上面1中设置的本地解析域名;

6、每个功能测试完毕后,需还原或使之失效,以防影响其它功能测试。

测试细节:

5.2.1.1、HTTP过滤功能

5.2.1.1.1、允许、禁止HTTP请求类型

1、配置

打开ShareWAF目录下permit.js文件,设置enable值为1;

(注:后面涉及到permit.js文件中的功能,都需先设置enable值为1;全文使用小写字母)

设置禁止HTTP请求类型,在上图中,加入要禁止的类型。

本例,测试post请示,确定经设定后post请求是否会被限制。

2、访问

浏览器访问被保护网站,发起post请求:

ShareWAF后端显示:

(需在config.js中设置debug值为1,即:开启调试模式,ShareWAF才会在命令行下输出调试信息)

ShareWAF前端显示拦截信息:

其它请求方法,GET、PUT等如上同样测试。

以上是禁止方法,允许的方法是:不将对应的请求方法名写入以上字段。

以上描述较详细,后文测试将简化说明。

5.2.1.1.2、HTTP协议头各个字段的长度限制

1、配置

permit.js中req_headers_key_length_limit字段,填入要限制的协议头字段名,如:user-agent。

重启ShareWAF。

2、测试

浏览器发起访问,访问会被拦截,拦截原因从后端命令行可查看:

允许方法同上。

5.2.1.1.3、后缀名过滤

1、配置

permit.js中forbidden_request_extname字段,填入要禁止的后缀名,如:.zip。

重启ShareWAF。

2、测试

浏览器访问一个zip文件,被禁止:

后台调试信息输出的禁止原因:

其它文件格式,如:rar、doc、exe、asp、htm等测试方法同上。

5.2.1.1.4、支持多种HTTP请求参数编码方式

测试要求自动识别UNICODE、BASE64、二进制、十六进制并能自动转化为明文。

1、测试web字符准备

如BASE64编码:SlPku6PnoIHmt7fmt4bvvIzlvZPnhLbnlKhKU2hhbWFu77yB

2、测试

将以上编码通过url传入并访问:

可见,“SlPku6PnoIHmt7fmt4bvvIzlvZPnhLbnlKhKU2hhbWFu77yB”,识别后的明文是:

“JS代码混淆,当然用JShaman!”。

再如:十六进制编码字符串:

4a53e4bba3e7a081e6b7b7e6b786efbc8ce5bd93e784b6e794a84a5368616d616eefbc81

自动解码识别为明文:

二进制识别:

UNICODE识别:

5.2.1.1.5、识别和限制HTTP响应码

1、配置

permit.js中forbidden_response_code字段,填入要禁止的返回码,如:200、301、302等。

重启ShareWAF。

2、测试:

200返回码被限制:

后台输出拦截原因:

5.2.1.1.5、URL关键字过滤

1、配置

permit.js中url_fliter字段,填入要禁止的关键字,如:nice。

重启ShareWAF。

2、测试

浏览器访问:

后台输出:

中文编码识别:

5.2.1.1.6、WEB服务器返回内容过滤

1、配置

permit.js中content_fliter字段,填入要禁止的关键字,如:电脑提速大师。

某网页保护前:

重启ShareWAF。

2、测试

用浏览器再次访问之前页面:

后台输出阻止原因:

5.2.1.2、安全防护功能

5.2.1.2.1、WEB应用防护功能

对于WEB服务器漏洞防护,ShareWAF通过隐藏WEB信息、服务器信息等,实现。

未保护前:

经ShareWAF防护后:

防护后WEB信息得以隐藏,攻击者无法获取到服务器信息,自然也不可以/不会利用相应漏洞进行攻击。

即:不知道目标是IIS7.5,即不会用IIS7.5的漏洞去攻击。

另外,也可以在后台攻击特征匹配中配置规则进行有针对性的防护,如.jpg/.png接.php漏洞。可以配规则:.jpg+.php、.png+.php进行防护。

5.2.1.2.2、WEB攻击防护功能

1、SQL注入防护

ShareWAF对SQL注入有多种防护方式:前端WAF防护、正则防护、内核防护。

这里以正则防护功能,展示对SQL注入的防护。

(1)、进入后台,开启正则防护:

(2)、防护GET方式发起的攻击

典型SQL注入:select * from admin,攻击被拦截。还可以换用其它SQL注入攻击语句测试。

(3)、防护POST方式发起的攻击

拦截和后台输出:

2、XSS跨站脚本攻击防护

配置和测试方式与SQL注入防护类似。

注:正则防护规则配置文件在ShareWAF根目录下regexp.js文件中,可编辑此文件,调整规则。

3、盗链防护

(1)配置

ShareWAF对盗链防护,可使用“变形元素”功能。

如上图,如要保护图中图片,确定其路径特征字:images,在ShareWAF后台,在变形元素中填入images关键字:

保护后,网页中的涉及images路径的图片,会成为动态变形的路径:

如果复制此图片路径,另外打开或使用,则图片无法打开:

注:使用此功能时,不可以使用“缓存”功能,且测试时要留意浏览器缓存。

4、防扫描

(1)、配置

管理后台开启“反扫描”功能,并配置好攻击特征码。

注:特征码请向官网索取。

(2)、测试

使用扫描器进行扫描,本例使用WVS(Web Vulnerability Scanner)。

使用ShareWAF防护前,扫描结果 :

使用ShareWAF防护后,扫描结果:

且是两个误报:

5、反爬虫

ShareWAF的反爬虫,有几种方法:

a、网页源码加密,开启后,可使客户端获取的网页源码成为密文,使基于网页源码的爬虫无法工作;

开启后,网页源码效果:

b、前端WAF的防爬虫功能,开启后,可隐藏网页中的链接地址,使基本页面内容分析的爬虫无法工作;

开户后,网页中链接消失(不影响正常点击):

同样用WVS爬取,保护前:

可见网站结构、页面都可被爬取。

启用保护,从后台开启“反爬虫”、“网页源码加密”、“防扫描”:

扫描无法获取网站结构,也无法获取页面。

6、CSRF攻击防护

(1)、设置

从后台开启CSRF防护功能:

(2)、测试

防护前,通过CSRF漏洞,可非法获取到COOKIE:

(注:具体测试方法参照ShareWAF功能说明书)

防护后,CSRF漏洞不可被利用:

7、POST、GET方法的命令行注入防护

配置、测试过程同SQL注入防护

8、POST方式非法文件上传防护

(1)、配置

permit.js中upload_fliter字段,填入要禁止的上传关键字,如:.asp、.php等,本测试中过滤.doc。

(2)、测试

客户端选择文件,并进行上传。

ShareWAF后端会看到拦截信息如下:

看到此提示信息时,文件不会被上传。

9、GET方式非法文件下载防护

防护测试方法同上文:5.2.1.1.3、后缀名过滤。

10、Http flood攻击防护

(1)、配置

管理后台中,启用“防应用层DDOS”功能。

(2)、测试

本动测试,快速刷新某页面(一般是与数据库操作有关的页面、或有大量运算的页面)。

操作很快会被阻止,弹出如下拦截页:

检测时会用专用设备进行测试。

5.2.1.3、其它功能

5.2.1.3.1、自定义错误页面

(1)、配置

在管理后台,开启“自定义404页面地址”,并输入页面地址。

(注:此地址需是真实存在于被保护网站)

(2)、测试

a、访问一个不存在的页面地址;

b、发起攻击,如url中加入SQL注入参数。

都会跳转到上面定义的404页面:

5.2.1.3.2、规则库管理

因为ShareWAF有多种防护:前端WAF、正则防护、内核防护,所以规则库管理也有多种:

a、前端WAF规则

在目录witch-cape下的anti_sql_inject.js文件中,存放着前端WAF规则:

手动修改后,重启ShareWAF生效果。

b、内核防护规则

从管理后台的"攻击特征匹配"处修改:

修改后进行“更新”,无需重启ShareWAF即可生效。

如上图中添加ab+cd规则后,浏览器访问:

删除此条规则后,立刻又可正常访问:

c、正则防护规则

手动修改regexp.js文件中的规则 :

修改后,需重启ShareWAF,修改才会生效。

5.2.1.3.3、报警功能

ShareWAF使用屏幕报警,无需配置,自动、持续开启。

从管理中心打开”实时态势感知“,当有攻击发生时,便会在界面中出现报警:

注:如果是在本地或局域网模拟攻击(如URL中进行SQL注入),报警时,会在3D地球中显示一个随机位置以做示意。如果是真实攻击,则会根据IP地址在地球中显示出相应的攻者位置(经纬度),并从位置攻击升起动画、提示攻击。

攻击会被记录。

根据配置不同,记录位置也不同。

如果在config.js中未开启sqlite3,也就是不记录到sqlite3数据库,则会记录为文本,位置在ShareWAF目录下的logs目录下。记录内容包含:日期、时间、被攻击域名、攻击者IP、触发防护规则、攻击者Agent:

如果sqlite3、mongodb(记录)开启,在相应的数据库的也会有同样数据存储。

5.2.2、自身安全测试评价方法

5.2.2.1、唯一性标识

检测要求:

创建用户:

唯一性标识:

ShareWAF的保护域名与帐号对应且相同,且唯一,如果帐号已经存在,无法再次创建:

登录并操作(更新):

记录(登录和更新):

ShareWAF目录下log.txt中的操作记录:

5.2.2.1.2、身份鉴别

检测要求:

管理员登录,成功和失败:

用户登录后台,成功和失败:

5.2.2.1.3、鉴别数据保护

鉴别数据(Authentication Data),即帐号的密码(口令)。

以上两处要求,无论以什么身份,都不能修改其它管理员口令。

ShareWAF目录下admin.js中存放的是管理员帐号密码:

密码是密文存储,只可通过管理员后台登录后修改:

5.2.2.1.4、鉴别失败处理

登录失败5次后,限制登录一分钟:

ShareWAF后台也会有信息提示:

5.2.2.2、安全审计

5.2.2.2.1、审计数据生成

(1)、成功和失败的WEB访问事件,log目录下的文本文件中记录:

(permit.js中的相关功能,审计记录在permit_log.txt,其它功能的审计记录都在log.txt)

visitor是访问成功记录、此外的标识为禁止的标识。

以上记录中,还有日期、时间、IP、URL等。

注:config.js中配置use_sqlite3值为0,此时会将访问、附上历史记录在文本文件中。

(2)、管理员成功和失败的登录记录:

ShareWAF目录下log.txt文件中:

5.2.2.2.2、审计日志管理功能

审计日志存放在log.txt中,因为是txt文本,非数据库,非自定义格式,且在本地存储。

所以用记事本等常见编辑工具打开即可进行查询,亦可复制粘贴进行备份,将文件存放在别的地方。

手动复制粘贴产生的备份文件,内容必定与原文件一致。

5.2.2.2.3、可理解的格式

纯文本格式,易于查看、理解。

5.2.2.2.4、防止审计数据丢失

纯文本txt格式,即时写入,不经内存缓存,正常关机数据不会丢失。

管理员后台在磁盘空间监控功能,磁盘满之前会有提示。收到提示,进行备份或清理磁盘。

5.2.2.3、统计功能

注:统计功能需在config.js中设置use_sqlite3或use_mongodb值为1,即启用sqlite3、mongodb才能使用。

各种总量:

其它统计:

统计某IP总量:

搜索,可获得指定IP的相关数据总量:

5.2.2.4、远程管理加密

为防数据包分析工具,可通过Https访问管理后台,如:https://127.0.0.1:8090/

端口号通过permit.js文件中permit_https_port参数设置。

访问可能会提示:

这是由于证书过期或证书与域名不符导致(可以用匹配域名的证书文件.pem、key替换ssl目录下的default.pem、default.key文件),选择接受风险并继续,即可正常使用:

5.2.2.5、状态监测

管理员后台,状态监测:

在permit.js中,可设定UPU、内存、磁盘告警值:

如上图中设置CPU告警值为0.01,即CPU使用率超过1%告警,显示信息中,会出现“warn"告警字样:

5.2.2.6、双机热备

双机热备借助NGINX实现

一个NGINX,后接两个ShareWAF,访问先到转NGINX,再由NGINX转发给SHAREWAF。

这个功能测的其实不是ShareWAF,而是NGINX的配置,NGINX实现双机热备的实现方法。

测试结束。

以上测评功能,是办理销售许可用需求的各功能,只是ShareWAF功能的一小部分。

除此之外ShareWAF还具有更多强大功能,如:前端WAF、大数据保护、JS代码加密、动态令牌、人机识别、设备指纹等等。