登录开放平台主页,找到“开发者中心 -> 安全中心-> Web 应用防火墙”页面,进入控制台。
在控制台页面中,找到“Web应用防火墙 -> 域名配置”,点击 “添加域名” 按钮。
在弹出的对话框中输入相关信息:
配置好域名后,WAF会自动分配给当前域名一个CNAME,可点击域名信息来查看。
这个CNAME在稍后配置DNS解析时会用到。如果您需要知道当前WAF的IP地址,可以通过ping一下这个CNAME的方式,一般情况下这个IP 不会频繁变动。
如果要防护HTTPS 站点,必须上传服务器的证书和私钥到WAF,否则访问 HTTPS 站点会有问题。勾选 HTTPS 后,会看到红色的“异常”字样,提示当前证书有问题,点击“上传证书”来上传。
WAF可以直接复制证书和私钥文本内容,一般如pem、cer、crt等证书格式,可用文本编辑器直接打开,有些格式(如PFX、P7B等)的证书需要先转换成这些格式,转换方式请参见此处。如果有多个证书文件(如证书链),可拼接合并后一起上传。
WAF能识别的证书样例格式如下:
私钥样例格式如下:
上传完毕后,HTTPS状态应该变为正常:
WAF控制台提供了最新的回源IP 段列表。
回源 IP 是 WAF 用来代理客户端请求服务器时用的源 IP,在服务器看来,接入 WAF后所有源 IP 都会变成 WAF 的回源 IP,而真实的客户端地址会被加在 HTTP 头部的 XFF 字段中。
强烈建议接入WAF后卸载掉服务器上的其他安全软件,如安全狗、云锁等,至少确保源站已将WAF的全部回源IP放行(加入白名单),否则可能会出现网站打不开或极其缓慢的情况。
接入 WAF 后,WAF 作为一个反向代理存在于客户端和服务器之间,服务器的真实IP 被隐藏起来,客户端只能看到 WAF,而看不到源站,如下图所示。
在源站(真实服务器)看来,所有的请求源IP都会变成 WAF 的回源IP段。
由于来源的 IP 变得更加“集中”,频率会变得更快,服务器上的防火墙或安全软件很容易认为这些 IP 在发起攻击,从而将其拉黑。一旦拉黑,WAF 的请求将无法得到源站的正常响应,故务必要确保回源IP在源站上没有被拦截。
在把业务流量切到 WAF 上之前,建议先通过本地验证的方式确保一切配置正常,WAF转发正常。
首先需要修改本地 hosts 文件( 什么是 hosts 文件),使本地对于被防护站点的请求先经过WAF。以Windows为例,hosts文件的位置一般位于“C:\Windows\System32\drivers\etc\hosts”,用记事本或 notepad++ 等文本编辑器打开,在最后一行添加 WAF 的 IP 被防护域名。
以步骤一中添加的域名“www.aliyundemo.cn”为例,hosts文件应该添加如下内容:
其中前面的 IP 地址为对应的 WAF IP 地址,WAF 的 IP 可以通过 ping 提供的 CNAME 来获得。
修改 hosts 文件后保存。然后本地 ping 一下被防护的域名,预期此时解析到的 IP 地址应该是刚才绑定的 WAF IP 地址。如果依然是源站地址,可尝试刷新本地的 DNS 缓存(Windows 的 cmd 下可以使用 ipconfig/flushdns 命令)。
确认 hosts 绑定已经生效(域名已经本地解析为 WAF 的 IP)后,打开浏览器,输入该域名进行访问,如果 WAF 的配置正确,网站预期能够正常打开。
同时也可以尝试一下手动模拟一些简单的 web 攻击命令,如 在 URL 后面加一个/?alert(xss),这是一个测试的 web 攻击请求,如 www.aliyundemo.cn/?alert(xss) 预期 WAF 能够弹出阻拦页面:
通过修改 DNS 解析到 WAF,完成业务正式接入。本章节以万网为例,给出 DNS 配置的方式,其他的 DNS 提供商可以参考该配置。
WAF支持 CNAME 解析接入,也可以 A ,但我们强烈推荐使用 CNAME 解析,因为在某些极端情况下(如节点故障、机房故障等),CNAME 接入可以实现自动切换节点 IP 甚至将解析切回源站,从而最大程度保证业务稳定,提供了高可用性和灾备能力。
必须使用 A 记录接入的情况(比如 @ 记录与 MX 记录冲突等),可以 ping 一下 CNAME 得到 WAF 的 IP 地址(这个地址一般不会频繁变化),采用 A 记录解析接入。
以域名 abc.com 为例:
www:用以精确匹配 www 开头的域名,如 www.abc.com,不能匹配 abc.com
@:可以匹配直接访问 abc.com 的情况
*:泛域名,可匹配任意域名,如 blog.abc.com, www.abc.com,abc.com
登录万网控制台,找到对应域名的“域名解析”->“解析设置”,正常情况下会有已经存在的一些解析,如下图:
将记录类型改成 CNAME,记录值改成 WAF 控制台提供的 CNAME,如下图:
当然,对应多个记录类型,WAF 会提供多个 CNAME,分别修改记录就可以了。
TTL 值一般建议 600 秒,这个值越大,DNS 记录的同步和更新越慢。