JXWAF最佳实践-离线部署 – 作者:chenjc

前言

本文将介绍JXWAF的离线部署模式,相较于本地部署硬件WAF,云WAF接入或者JXWAF这种SAAS化部署的方式,总会带来一些顾虑,一个是业务流量会被感知,一个是担心WAF配置被篡改。所以JXWAF推出离线部署就是为了解决这个问题。

架构设计

先介绍正常模式下配置更新的流程 

WX20200114-141726@2x.png

WAF服务器会根据控制台配置的更新周期,定期发送配置更新请求到JXWAF控制台,JXWAF控制台返回最新的配置信息到WAF服务器,默认情况下是每五分钟同步一次。JXWAF控制台在接受到配置更新请求后,会对比请求中的MD5参数,如果一致则返回”no_update”标示,WAF服务器接受到请求后,如果判断存在这个标示,则不进行更新操作,等待下一个更新周期再去请求。

所以整个更新流程,其实就是定期去JXWAF控制台获取配置信息的流程,至于获取到的配置信息,可以通过  WAF管理 -> 全局配置 ->  配置备份  查看。

相应的,离线部署就是将正常模式下自动化的更新流程,变为手动,通过人工审核获取到的配置信息的完整性,来确保配置的安全。 

配置

开启离线模式很简单,在正常部署完成后,运行以下命令即可切换为离线模式。

$ cd jxwaf/tools$ python jxwaf_local_mode.pyusage:python jxwaf_local_mode.py --init python jxwaf_local_mode.py --update python jxwaf_local_mode.py --cancel$ python jxwaf_local_mode.py --init config file:  /opt/jxwaf/nginx/conf/jxwaf/jxwaf_config.jsonconfig result:waf_local  is true $ python jxwaf_local_mode.py --update config file path:  /opt/jxwaf/nginx/conf/jxwaf/jxwaf_config.jsonupdate success!$ /opt/jxwaf/nginx/conf/sbin/nginx -s reload

jxwaf_local_mode.py 一共有三个选项,init是开启本地模式,update是更新配置信息,cancel是取消本地模式。

注意:运行完命令后,都需要reload nginx服务器来使更新生效

配置文件更新的目录为 “/opt/jxwaf/nginx/conf/jxwaf”,首次运行会生成”jxwaf_local_config.json”文件,之后运行旧配置会被重命名。

$ python jxwaf_local_mode.py --updatebackup file path: /opt/jxwaf/nginx/conf/jxwaf/jxwaf_config.json.2020-01-14-11-39-26config file path:  /opt/jxwaf/nginx/conf/jxwaf/jxwaf_config.jsonupdate success!

可通过配置定时任务来实现每天定期备份配置文件

$ crontab -e

输入

0 0 * * * /usr/bin/python2.7 /root/jxwaf/tools/jxwaf_local_mode.py --update

当需要更新回滚配置文件的时候,重命名备份的文件名为”jxwaf_config.json”,之后运行命令即可

$ /opt/jxwaf/nginx/conf/sbin/nginx -s reload

差异


离线模式不支持节点监控功能,不支持CC防护功能中的人机识别防护模式。主要是因为人机识别防护模式的防护数据会定期更新,目前设置为一星期更新一次,所以可以通过配合定时任务来开启人机识别防护,建议每五天同步一次最新的数据。

来源:freebuf.com 2020-01-14 14:20:15 by: chenjc

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论