一、简单WAF介绍
二、WAF-配管
上面看到的是WAF的引擎层,其实WAF还有一层[配管](配置管理控制台)。
配管是和用户、安全专家(运维)交互。用户配置域名、配置防护、安全专家配置规则、规则发布等。
实现的域名解析到引擎层和规则下发到引擎层。
三、配管架构图
四、配管域名相关
网站配置: DNS配置模式、 透明代理模式。
DNS配置模式:通过修改域名解析的方式,将被防护域名的访问流量指向WAF;WAF根据域名配置的源站服务器地址,将处理后的请求转发回源站服务器。
透明代理模式:将所配置的源站服务器公网IP的80端口接收到的HTTP协议的流量直接牵引到WAF,经WAF处理后再将正常的访问流量回注给源站服务器。
WAF透明代理模式满足条件:
-
WAF实例为包年包月模式;
-
源站服务器部署在阿里云ECS,且ECS实例所在地域为华北2(北京);
-
源站ECS实例拥有公网IP或已绑定弹性公网IP(EIP);
DNS配置模式:非云解析DNS、云解析DNS。
非云解析DNS( 网站的DNS解析没有托管在阿里云云解析DNS):
- 用户配置的网站数据传递给配管;
2. 配管对参数检验。转换成rsPolicyMo(用于存入配管数据库,和用户交互数据)、gfMo(用于下发Ddos高防服务); - 分配Vip和Cname;
- 开启防护功能中的精准访问控制(acl), 配管只是把数据先保存到配管数据库再下发到Etcd, 引擎去Etcd拉取配置,所有的防护功能都是这种增量模式拉取配置;
- 开启防护功能中的CC安全防护(cc), 配管处理同上;
- 开启防护功能中的WEB应用攻击防护,配管处理同上;
- 调用Ddos高防接口, 用户开启阿里云默认提供的最大5Gbps的DDoS基础防护能力;
- 调用dns接口(内部接口), 把用户域名解析到阿里云分配的Cname地址,该Cname地址解析到Vip(用户域名 —> 阿里云Cname —> Vip);
- 域名相关数据保存到配管数据库;
如果其中一个环节出错了,在try catch finally 回滚处理,通过flag判断哪个环节出错,作相应的回滚处理。
步骤和数据的处理其实都有一定的复杂性。
下面图片是当时用户配置的网站数据 —> rsPolicyMo —> gfMo 之间的转换,配管在很多数据的处理上都有一定的复杂性。
云解析模式 ( 网站的DNS解析托管在阿里云云解析DNS):
- 其他操作和非云解析模式保持一致。
- 调用阿里云云解析DNS解析管理接口的获取解析记录列表接口, 获取用户网站域名和源站服务器IP地址。
- 调用阿里云云解析DNS批量管理接口的批量添加解析记录接口, 更新域名的解析记录,将网站Web请求转发到WAF进行监控。
透明代理模式 :按照集团内部引流相关接口规范调用,没有太大复杂性,Eip的生命周期管理复杂性会大一些。
Eip生命周期步骤:
1. 需要用户先授权,授权后在user_profile表中记录(is_ecs_authorized =1);
2. 调用ECS open api同步授权用户的Eip,添加新的Eip, 删除旧的Eip;
3. 先删除引流再删除Eip;
4. 从user_eip表中淘汰未授权的uid,并删除相应的引流、Eip
5. 删除用户时,删除user_eip记录和相应的引流、Eip。
其中任何环节出问题(远程接口),不删除配管的数据,置为删除状态,下一次定时任务处理,多次失败后人工处理。
五、配管规则相关
规则相关:规则的添加、删除、修改、查询;规则组的添加、删除、修改、查询就是很简单的管理功能更,规则组其实有一个字段,保存了规则的主键。
复杂度相对高一点的是规则的发布:
1. 把所有的规则组和规则打成一条很大的记录;
2. 和上一个规则集全集版本对比,对比哪些规则是新增,哪些被删除,哪些是修改;
3. 生成发布单,按照发布模式(逐台、zone、region)生成引擎批次(批次状态有未开始、进行中、已完成);
4. 引擎会定时来拉取规则,会上报一个版本号,当引擎在灰度批次且版本号小于当前规则集版本号或等于0才允许引擎拉取;
5. master机器对每个不同类型的版本会启动一个消费线程,监听/修改批次的状态、引擎的拉取情况,开始下一批次,修改发布单的状态;
6. 任何阶段发布单状态可暂停,暂停阶段可以使用人工分批和自动分批继续发布;
7. 任何阶段发布单可退出,成功拉取的保持新规则,尚未拉取的不再拉取,正在拉取的需要保证拉取完成;
8. 正在拉取的引擎可跳过;
9. 回滚,就是把上一个发布单置为最新的发布单,再次发布;