ShareWAF简介
ShareWAF是一款创新型WAF产品。
具备众多超越传统WAF的先进、实用功能。
如:前端WAF、大数据防护、JS混淆加密、反爬虫、网页防篡改、设备指纹、网页源码加密、AI风控、防自动化攻击、自定义编程防护等。
实现了对网站的多维度防护,涵盖:浏览器端、传输中、服务器。
ShareWAF旨在成为更强大、更具先进性的下一代WAF。
说明
①本白皮书会对ShareWAF大多数功能进行文字性解说。
②功能标题中会有一到三个☆号,星号越多表示功能越重要。
③由于功能更新换代等原因,部分计划弃用的老旧功能、较不重要的功能、不适合纯文字描述的功能将不在本书中体现。
须知
①非所有功能适用于所有网站。
②个别功能可能不兼容某些个别环境。
目录
1.JS混淆加密☆☆☆ 1
2.网页源码加密☆☆ 1
3.前端WAF☆☆☆ 1
4.变形元素☆☆☆ 2
5.防扫描☆☆☆ 2
6.Web服务器信息伪装☆ 3
7.AI风控防护☆☆☆ 3
8.自定义编程☆☆☆ 3
9.Web API☆☆ 4
10.网页防篡改☆☆☆ 4
11.正则防护☆☆☆ 4
12.防内容爬虫☆☆☆ 5
13.负载均衡☆ 5
14.内核防护☆☆ 5
15.人机识别☆ 6
16.请求类型限制☆ 6
17.协议头长度限制☆ 6
18.请求后缀限制☆ 7
19.Url关键字限制☆ 7
20.响应码限制☆ 7
21.内容关键字限制☆ 8
22.文件上传限制☆ 8
23.数据库☆☆☆ 8
24.调试模式☆☆ 9
25.数据统计☆ 9
26.实时攻击态势☆☆☆ 9
27.日志☆ 9
28.OEM定制☆ 10
28.守护进程☆ 10
29.集群☆ 11
30.部署方式☆ 11
31.IP黑名单☆ 11
32.URL白名单☆ 12
33.例外☆ 12
34.管理后台☆☆ 12
35.自定义404页面☆ 12
1.JS混淆加密☆☆☆
对JS文件和网页中的JS代码,进行自动、动态混淆加密。
功能用途:
提高JS代码安全性,防止代码被分析、复制、盗用等。
所谓动态,是指每次访问,用户获取到的都是不同的加密代码。①
使用方法:
从ShareWAF后台,启用“JS混淆加密”功能即可。
注释:
①如浏览器发生缓存,会影响动态效果。
2.网页源码加密☆☆
对网页源码进行加密。
功能用途:
使网页源码呈密文状态①,防网页源码型爬虫。
使用方法:
从ShareWAF后台,启用“网页源码加密”功能即可。
注释:
①查看网页源码时看到的是密文,但不影响浏览器解析。因此各页面元素依然可以被正常解析、渲染。也不影响搜索引擎收录。
3.前端WAF☆☆☆
独立运行于浏览器端的WAF引擎,可为网站提供另一重安全屏障。
功能用途:
包含有以下子功能:大数据防护、设备指纹识别、防自动化攻击①、防Xpath定位、防SQL注入、防XSS、防CRSF、防爬虫②、防Iframe嵌套、禁用网页右键菜单。
使用方法:
从ShareWAF后台,启用“前端WAF”相关功能即可。
注释:
①可防自动输入脚本、自动按键软件等。
②前端WAF中的反爬虫用于防链接类爬虫。
③除ShareWAF的前端WAF模块外,另有独立的前端WAF:BrowserWAF,可单独、手动使用。
JS混淆加密、网页源码加密、前端WAF几个功能结合,可以实现很好的前端加固效果。
4.变形元素☆☆☆
对页面中的某些关键元素名称、ID进行动态变形。
功能用途:
使关键元素如用户名、ID、Email等无法定位①,从而实现防批量注册、暴力破解、撞库等自动化攻击,并可用于防上述敏感信息嗅探②③。
使用方法:
从ShareWAF后台,启用“变形元素”功能,并设定要“变形”的元素ID或名称。
注释:
①不可使用password等前端语法关键字。
②变形元素标识是随机且动态的,无法被自动化嗅探。
③如发生缓存,会影响变形元素效果。
④注意防止名称雷同,影响其它内容。
5.防扫描☆☆☆
即:防漏扫。
功能用途:
防止各种扫描工具对网站发起的漏洞扫描。防护后将基本扫描不出漏洞信息。
使用方法:
ShareWAF有3种方法可实现防扫描,可同时使用:
①从ShareWAF后台启用“防扫描”功能,并设定扫描特征,即:攻击特征。特征为扫描器标识。
②使用AI风控规则:
从rules.js规则文件中设定“访问规则”:任意页面,一定时间范围时,如0.1分钟,发生大量访问,即可基本认定为是扫描器或类似的自动化攻击工具行为。
③从ShareWAF后台,开启“防应用层DDOS”功能,也与②有异曲同工之效果。
6.Web服务器信息伪装☆
自动①修改网站反馈给浏览器或扫描软件的Web服务器响应信息,抹去IIS、Apache、Nginx等信息特征。
功能用途:
隐藏、伪造Web服务器关键信息,防止针对性的攻击,如:溢出。
注释:
①此功能无需操作,ShareWAF运行时自动实现 。
7.AI风控防护☆☆☆
ShareWAF中基于传统规则思路的独立防护模块、可高度自定义规则的AI风控功能①。
是又一重Web安全防线,更是易用且强大的风控系统。
功能用途:
通过规则设计,可实现众多Web安全防护效果,如:防SQL注入、防木马上传等。
更可实现风控功能:防自动发贴、防批量注册、防爬虫②、防撞库等。
使用方法:
打开rulemode.js文件,设置enable值为1,然后在rule.js文件中编辑防护规则,重启即可。
注释:
①所谓AI,指用类似人的思维进行条件式规则设计,以此实现的防护,有接近人工智能的聪明、实用效果,为体现此特点,故对此功能冠名AI。
②通过控制访问频率,限制各种爬虫连续访问。
8.自定义编程☆☆☆
ShareWAF开放核心功能二次开发接口,可根据自身需求进行自定义编程。
功能用途:
①实现私有化防护功能,可以是很强大的功能,甚至是一个新的防护引擎。
②对已有功能进行微调,比如:网页源码加密算法、响应头等。
③实现自己需要的个性化功能,比如:以Syslog协议传输日志到远程日志服务器。
使用方法:
①编程语言限:JavaScript。
②开发接口文件为:developer.js,内有相关说明及例程。
9.Web API☆☆
ShareWAF有Web API接口功能,可通过独立的接口服务器提供服务。
功能用途:
接口功能涵盖:注册、登录、配置、文件上传等多方面,可用于实现ShareWAF后端UI二次开发。
10.网页防篡改☆☆☆
功能用途:
可将静态①文件缓存于ShareWAF,将ShareWAF当为一个Web服务器。如此,即使原网站服务器文件被非法修改、甚至网站被删除,也却并会不影响正常访问,因为原网站只是影子服务器,真正的Web服务器其实成了ShareWAF。
另外,此功能也可用于访问加速,规避因为部署WAF带来的访问性能影响。
使用方法:
①从ShareWAF后台,启用“网页防篡改”,即:缓存功能。然后设定要缓存的文件后缀名,再启用“缓存更新”,最后访问被保护的网站,访问后的文件就缓存到ShareWAF了。
②也可使用手工操作方法,相较更为简单,且更适用文件量较大的情况:直接复制网站文件到ShareWAF目录下Cache目录中的“网站域名”子目录,即可。
注释:
①适用于静态文件,如:html、js、css、图片、视频等。Asp、php等动态文件不可用。
11.正则防护☆☆☆
基于正则表达式①的基础防护功能。
功能用途:
正则表达式匹配,是WAF用于安全防护的传统手段,是基于规则的基础防护方式。
通常用于防护:Sql注入、Xss、木马上传、拖库、Cookie注入等。
使用方法:
从ShareWAF后台,启用“正则防护”即可。
正则规则置于regexp.js文件中,打开即可对规则进行编辑。
注释:
①使用标准正则表达式语法。
12.防内容爬虫☆☆☆
ShareWAF独立的功能子模块。通过动态字体加密技术,防内容型爬虫。
功能用途:
通过建立动态字典文件①,并结合字体路径加密技术。实现:防网页文字拷贝。
防护效果:使爬取失败。拷贝的文字内容中,将含有大量乱码,无法正常使用。
使用方法:
独立部署防内容爬虫功能模块。
注释:
①ttf、woff等字体文件。
13.负载均衡☆
ShareWAF独立的负载均衡子模块。
功能用途:
有状态①负载均衡、分流。
使用方法:
独立部署负载均衡功能模块。
注释:
①有状态指:带有类似登录的操作行为时,目标总会被到负载到同一服务器。
14.内核防护☆☆
对于常见网络攻击,ShareWAF有多重防护,如:前端WAF防护、大数据防护、AI风控防护、正则防护,以及最后的内核防护。合而为:ShareWAF五大防护引擎。多重防护的存在,可以为网站建立起多道防线,提供更高的安全强度①。
功能用途:
内核防护也是基于规则的防护,同样用于防护:Sql注入、Xss、Cookie注入等常见攻击。
使用方法:
在后台“攻击特征”中配入防护规则,启动ShareWAF后,防护即会生效。
注释:
①安全没有100%的绝对,从来都是相对而言的。攻防从来都是在不断的对抗中。多一重安全防护,就会少一成被绕过的可能性、就会增加一分攻击成本,当攻击成本高到一定程度,就实现了安全。所以,多重防护引擎,带来的是更高的网站安全性。
15.人机识别☆
根据特征和行为,自动识别大量三方脚本和软件访问、自动判断人机行为。自动拦截脚本和软件发起的访问。
使用方法:
从ShareWAF后台启用“人机识别”即可。
注释:
①前端WAF的防自动化攻击、防爬虫,也具备识别机器访问能力,如要反人机,建议也启用。
16.请求类型限制☆
功能用途:
限制指定类型的请求方法,比如:post、put等。
使用方法:
①打开permit.js,设置enable值为1;
②在forbidden_request_type中设置要限制、禁止的请求类型。
③重启ShareWAF。
17.协议头长度限制☆
功能用途:
限制指定协议头长度,超出长度则请求无法通过。
使用方法:
①打开permit.js,设置enable值为1;
②在req_headers_key_length_limit中设置要限制的请求头类型、长度。
③重启ShareWAF。
18.请求后缀限制☆
功能用途:
禁止指定后缀名的请求路径。
使用方法:
①打开permit.js,设置enable值为1;
②在forbidden_request_extname中设置要限制的请求后缀名。
③重启ShareWAF。
19.Url关键字限制☆
功能用途:
检测到Url中出现指定关键字时,禁止访问。
使用方法:
①打开permit.js,设置enable值为1;
②在url_fliter中设置要限制的关键字,可以为中英文,甚至乱码。
③重启ShareWAF。
20.响应码限制☆
功能用途:
限制指定响应码内容反馈给客户端。
使用方法:
①打开permit.js,设置enable值为1;
②在forbidden_response_code中设置要限制的响应码,如:404、405。
③重启ShareWAF。
21.内容关键字限制☆
功能用途:
当检测到页面中有指定关键字、语句时,限制网页显示。
使用方法:
①打开permit.js,设置enable值为1;
②在content_fliter中设置要限制的关键字或语句。
③重启ShareWAF。
22.文件上传限制☆
功能用途:
限制指定后缀文件的上传。
使用方法:
①打开permit.js,设置enable值为1;
②在upload_fliter中设置要限制的文件后缀名。
③重启ShareWAF。
23.数据库☆☆☆
ShareWAF有三种数据存储方式:MongoDB数据库、Sqlite数据库、无数据库:文本存储。
①MongoDB:适用于集群部署时使用。
②SQLite:适用于单机部署时使用。
③文本数据存储:适用于嵌入式系统部署、无数据库部署时使用。
使用方法:
①打开config.js,设置use_mongodb值为1,并在mongodb_server字段中配置好远程地址,即启用MongoDB。启用时,配置信息、攻击记录、访问记录信息都会存储在MongoDB数据库中。
②当设置use_mongodb值为0、use_sqlite3值为1,即启用本地Sqlite存储,攻击记录、访问记录会存储在本地sqlite数据库中。
③当设置use_mongodb值为0、use_sqlite3值为0,即不启用数据库。攻击记录、访问记录会存储在log目录下的日志文件中。在此种模式下,ShareWAF后台中无法进行数据统计、展示。
24.调试模式☆☆
ShareWAF有调试模式。在初始部署阶段或出现问题需要调试时,调试模式很有用。
功能用途:
调试模式下,ShareWAF运行时会输出各种信息,以供调试、分析、确定问题原因,为解决问题提供有力帮助。
使用方法:
打开config.js,设置debug值为1,重启即进入调试模式。
25.数据统计☆
ShareWAF有丰富的数据统计功能,用于展示:访问数量、各种攻击数量、一定时间范围内的攻击数量、攻击详情、满足一定条件的攻击详情等。以及可对各种数据以饼型图、柱型图、线型图进行展示。
使用方法:
进入ShareWAF后台,切换到“数据统计”即可查看、使用相关功能。
26.实时攻击态势☆☆☆
功能用途:
用于大屏展示,以3D效果实时显示当前网站访问、网络攻击态势。
访问效果会以小的动画线段在3D地图中显示。
攻击效果会以告警的方式、以定位动画并配告警声音在3D地图中发出显著提醒。
使用方法:
从ShareWAF后台“实时攻击态势”打开。
27.日志☆
①操作、审记日志:记录帐号登录成功、失败、操作等行为。以及permit.js中相关功能的记录。日志记录在log.txt文件中。
②调试日志:此需手工操作,使用命令行重定向,可在启动调试时将调试信息写入到文件中做为日志保存。
28.OEM定制☆
ShareWAF支持OEM定制。
功能用途:
实现自定义产品名称、数据库、链接等。
使用方法:
①打开oem.js,编辑oem_name可定制软件名称。限使用英文名称。修改会影响启动时显示的软件名、拦截界面中的软件名及sqlite数据库名。
②打开oem.js,编辑oem_url可定制软件官网链接。修改会影响启动时显示的链接,以及访问到未配置保护的域名时的默认跳转链接。
③打开admin目录下的oem.js,可编辑oem_title、oem_name、oem_url,修改分别影响ShareWAF后台、ShareWAF管理员后台中的标题、名称、链接。
以上OEM修改,仅影响软件名、链接等。如要进行更深一步OEM定制,实现很不一样的展示,可使用WEB API等,进行功能、UI再开发。
28.守护进程☆
功能用途:
为防止ShareWAF意外中止服务①,以及在远程终端关闭时不中断服务,可使用ShareWAF的守护进程②。
ShareWAF的守护进程程序为:daemon.js。
当用它启动ShareWAF时,每隔10秒就会对ShareWAF进行一次检测,如发现异常,会自动重启ShareWAF。
使用方法:
①守护进程运行依赖于一个nodejs模块:forever,因此使用前需先安装此模块:
Npm install forever -g
②然后通过守护进程启动ShareWAF:
Node daemon.js
注释:
①ShareWAF稳定性颇高,然为高稳定性考虑,使用此方案以为达到有备无患。
②也可直接使用forever start sharewaf.js启动。
③调试阶段请勿使用此方式启动ShareWAF,不方便。
29.集群☆
ShareWAF有集群功能。
功能用途:
集群可提高程序稳定性、提升性能。
当集群启用时,会有多个ShareWAF进程同时启动,共同提供功能服务。如其中某个甚至某几个进程出错或意外关闭,其它进程还可以正常工作,并不影响整体功能。
同时,多进程还会最大化的提升系统资源利用率,提升ShareWAF整体性能。
使用方法:
打开config.js,设置cluster_enable值为1,重启即可。
30.部署方式☆
ShareWAF可以软件、云、硬件的形式,以反向代理、透明代理、旁路方式进行部署。
解释:
①默认部署是软件WAF。也可视其为云,可做为公有云WAF、私有云WAF使用。因为ShareWAF本身即设计为了云模式,支持128个网站接入。
②如果使用Linux类系统机器,可以制作为硬件WAF。还可以配Bypass网卡,做成无视断电、死机的高可用硬件WAF。
③如果是Linux类型机器或硬件,可以进行透明代理部署,实现无感知接入。
31.IP黑名单☆
功能用途:
IP黑名单,自定义屏蔽特定IP。
使用方法:
在ShareWAF后台,将要屏蔽的IP填入IP黑名单即可。
32.URL白名单☆
功能用途:
测试使用,对比保护前后效果。
或者对某些不希望保护的路径进行放行。
使用方法:
在ShareWAF后台,将要列入白名单的URL路径或路径特征①填入URL白名单即可。
解释:
①注意防止特征雷同而产生漏保护。
33.例外☆
功能用途:
如某一服务器有多个网站,部署ShareWAF后要共用ShareWAF端口,如:80。而不希望对其中某个或某几个网站进行保护,可使用“例外”功能。
使用方法:
打开config.js,在skip_to中依例填入要“例外”的网站,重启ShareWAF即可。
34.管理后台☆☆
ShareWAF后台,默认指用户后台。此外还有管理员后台。
ShareWAF后台可以进行自主注册帐号、登入、配置、查看报表等操作。
而管理后台,是为方便管理员操作而存在的,可用于管理网站、监测服务器信息、重启ShareWAF等操作。
使用方法:
用管理员帐号登入管理后台,即可进行各种操作。
默认管理员帐号、密码:admin。
35.自定义404页面☆
功能用途:
如标题名,即:自定义404页面。如未启用此功能,则404页面是ShareWAF默认的404错误页。
使用方法:
在ShareWAF后台,配置404页面地址即可。注:需是Web服务器上存在的页面地址。