将网站接入WAF防护(独享模式)
如果您的业务服务器部署在华为云,您可以通过WAF独享模式将您的网站域名或IP添加到WAF进行防护。
如果您已开通企业项目,您可以在“企业项目”下拉列表中选择您所在的企业项目,在该企业项目下添加防护网站。
独享模式在部分区域已经停售,详见独享模式停售通知。
方案概述
独享模式下,将网站接入WAF后,网站流量会通过ELB传给WAF,经过WAF检测后,异常请求将被拦截,正常请求会通过WAF独享引擎回源IP转发到源站服务器。网站接入WAF后,流量访问示意图如图1所示。
流量访问说明如下:
- 用户在浏览器输入域名后,客户端会向DNS发送请求,查询域名解析地址。
- DNS返回域名解析地址。
- 如果无代理(例如CDN、DDos高防等),DNS返回的域名解析地址为ELB的公网IP地址,客户端通过该公网IP访问ELB。如果存在代理:
- DNS返回的域名解析地址为代理IP,客户端通过代理IP访问代理。
- 代理通过ELB的公网IP访问ELB。
- ELB将流量传给WAF。
- 经过WAF检测后,异常请求将被拦截,正常请求会通过WAF独享引擎回源IP转发到源站服务器。
接入流程
根据网站是否使用代理(例如高防、CDN、云加速等),您需要完成如下接入操作。
操作步骤 |
说明 |
---|---|
介绍如何将防护域名 、源站信息等添加到WAF。 |
|
介绍如何为WAF独享引擎实例配置负载均衡器和健康检查。 |
|
介绍如何为WAF独享引擎实例的负载均衡器绑定源站服务器的弹性公网IP,使网站请求流量经过WAF独享引擎检测。 |
|
介绍如何放行独享引擎的回源IP。 |
|
介绍如何验证WAF转发和ELB运行是否正常、基础防护是否生效。 |
前提条件
- 已购买独享型负载均衡。有关ELB类型的详细介绍,请参见共享型弹性负载均衡与独享型负载均衡的功能区别。
2023年4月之前的独享引擎版本,不支持与独享ELB网络型配合使用。因此,如果您使用了独享ELB网络型(TCP/UDP)负载均衡,请确认独享WAF实例已升级到最新版本(2023年4月及之后的版本),独享引擎版本详情请参见独享引擎版本迭代。
- 在该独享引擎实例所在安全组中已放开了相关端口。
有关添加安全组规则的详细操作,请参见添加安全组规则。
步骤一:添加防护网站
为了将业务接入WAF防护,您需要将防护域名、源站信息等,添加到WAF。
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域或项目。
- 单击页面左上方的,选择 。
- 在左侧导航树中,选择“网站设置”页面。 ,进入
- 在网站列表左上角,单击“添加防护网站”。
- 选择“独享模式接入”并单击“开始配置”。
- 基础信息配置,如图2所示,参数说明如表1所示。
表1 基本信息参数说明 参数
参数说明
取值样例
防护对象
防护的域名或IP(公网IP/私网IP),域名支持单域名和泛域名。
说明:- WAF支持添加“*”泛域名,表示可以防护任意的域名。“防护对象”配置为“*”时,只能防护除80、443端口以外的非标端口。
- 如果各子域名对应的服务器IP地址相同:输入防护的泛域名。例如:子域名a.example.com,b.example.com和c.example.com对应的服务器IP地址相同,可以直接添加泛域名*.example.com。
- 如果各子域名对应的服务器IP地址不相同:请将子域名按“单域名”方式逐条添加。
- WAF支持防护公网IP、私网IP,如果配置为私网IP,必须确保相应的网络路径是可访问的,以便于WAF能够正确地对流量进行监控和过滤。
-
网站名称(可选)
自定义网站名称。
WAF
网站备注(可选)
网站的备注信息。
waftest
防护端口
要防护的端口。
- 配置为80、443端口时,在下拉框中选择“标准端口”。
- 配置为其他端口时,所选端口必须在可选端口范围内。您可以单击“查看可添加端口”,查看WAF支持的HTTP和HTTPS端口。更多信息请参见WAF支持的端口范围。
说明:如果配置了除80/443以外的其他端口,访问网站时,需要在网址后面增加非标准端口进行访问,否则访问网站时会出现404错误。
81
服务器配置
网站服务器地址的配置。包括对外协议、源站协议、VPC、源站地址和源站端口。
- 对外协议:客户端请求访问服务器的协议类型。包括“HTTP”、“HTTPS”两种协议类型。
- 源站协议:网站服务器支持的协议类型。也是Web应用防火墙转发客户端请求的协议类型。包括“HTTP”、“HTTPS”两种协议类型。
说明:
- 如果“对外协议”与“源站协议”不一致,WAF会将“对外协议”转换为“源站协议”,使用“源站协议”来转发客户端的请求。
- WAF支持WebSocket/WebSockets协议,且默认为开启状态。
- VPC:选择独享引擎实例所在的VPC。
说明:
为了实现业务双活,避免业务单点故障,建议在同一VPC下购买两个WAF实例。
- 源站地址:网站服务器的私有IP地址。
登录ECS或ELB控制台,在实例列表中查看对应服务器的私有IP地址。
说明:源站地址不能与防护对象一致。
支持以下两种IP格式:- IPv4,例如:XXX.XXX.1.1
- IPv6,例如:fe80:0000:0000:0000:0000:0000:0000:0000
- 源站端口:WAF独享引擎转发客户端请求到服务器的业务端口。
对外协议:HTTP
源站协议:HTTP
源站地址: XXX .XXX.1.1
源站端口:80
证书名称
“对外协议”设置为“HTTPS”时,需要选择证书。
- 如果您未创建证书,单击“导入新证书”,在“导入新证书”对话框,填写证书相关参数。更多信息,请参见上传证书。
成功导入的新证书,将同步添加到“证书管理”页面的证书列表。
- 如果已创建证书,在下拉框“已有证书”中选择正确、有效的证书。
- 如果您已经在同一个账号下使用了CCM中证书,也可以直接在下拉框中选择SCM证书,此处选择的SCM证书名称与CCM里证书名称一致。
须知:- WAF当前仅支持PEM格式证书。如果证书为非PEM格式,请参考如何将非PEM格式的证书转换为PEM格式?将证书转换为PEM格式,再上传。
- 目前华为云SCM证书只能推送到“default”企业项目下。如果您使用其他企业项目,则不能选择使用SCM推送的SSL证书。
- 如果您的证书即将到期,为了不影响网站的使用,建议您在到期前重新使用新的证书,并在WAF中同步更新网站绑定的证书。
WAF支持证书过期时发送告警通知,您可以在“告警通知”界面配置证书过期提醒,具体的操作请参见开启告警通知。
- 域名和证书需要一一对应,泛域名只能使用泛域名证书。如果您没有泛域名证书,只有单域名对应的证书,则只能在WAF中按照单域名的方式逐条添加域名进行防护。
--
是否使用七层代理
- 是:使用了DDoS高防(七层代理)、CDN、云加速等Web代理产品。
- 否:没有使用七层代理。
须知:选择“是”后,即在WAF前使用了七层代理,WAF将从配置的Header头中的相关字段获取用户真实访问IP,详见配置攻击惩罚的流量标识。
七层代理
- 高级配置。
选择“防护策略”:默认为“系统自动生成策略”,您也可以选择已创建的防护策略或在域名接入后根据防护需求配置防护规则。
系统自动生成的策略说明如下:
- Web基础防护(“仅记录”模式、常规检测)
仅记录SQL注入、XSS跨站脚本、远程溢出攻击、文件包含、Bash漏洞攻击、远程命令执行、目录遍历、敏感文件访问、命令/代码注入等攻击行为。
- 网站反爬虫(“仅记录”模式、扫描器)
仅记录漏洞扫描、病毒扫描等Web扫描任务,如OpenVAS、Nmap的爬虫行为。
“仅记录”模式:发现攻击行为后WAF只记录攻击事件不阻断攻击。
- Web基础防护(“仅记录”模式、常规检测)
- 单击“确认”,添加域名完成。
可根据界面提示,完成配置负载均衡、为弹性负载均衡绑定弹性公网IP和放行独享引擎回源IP的操作,建议单击“稍后”。后续参照步骤二:为WAF独享引擎实例配置负载均衡、步骤三:为弹性负载均衡绑定弹性公网IP和步骤四:放行独享引擎回源IP完成相关操作。
步骤二:为WAF独享引擎实例配置负载均衡
添加防护网站后,您需要使用华为云弹性负载均衡(Elastic Load Balance,简称ELB)为WAF独享引擎实例配置负载均衡和健康检查,以确保WAF的可靠性和稳定性。
华为云ELB按流量单独计费。有关ELB的计费详情,请参见ELB价格详情。
- 为负载均衡添加监听器,详细操作请参见添加HTTP监听器或添加HTTPS监听器。
添加监听器时,相关参数的配置说明如下:
- “前端端口”:客户端与负载均衡监听器建立流量分发连接的端口,可配置为任意端口,此处建议配置为WAF中配置的源站端口。
- “前端协议”:只能选择HTTP或HTTPS协议 。
- “分配策略类型”选择“加权轮询算法”时,请关闭“会话保持”,如果开启会话保持,相同的请求会转发到相同的WAF独享引擎实例上,当WAF独享引擎实例出现故障时,再次到达该引擎的请求将会出错。
- 配置健康检查后,“健康检查结果”的“状态”必须为“正常”,否则会导致网站不能正常接入WAF。有关配置健康检查的详细操作,请参见配置健康检查。
- 单击页面左上方的,选择“安全总览”页面。 ,进入
- 在左侧导航树中,选择“独享引擎”页面。 ,进入
- 在目标实例所在行的“操作”列,单击 。
- 在“添加到ELB”页面中,选择1中配置的“ELB(负载均衡器)”、“ELB监听器”和“后端服务器组”。
图3 添加到ELB
“健康检查结果”的“状态”必须为“正常”,否则会导致网站不能正常接入WAF。健康检查异常的排查思路请参见健康检查异常。
- 单击“确认”,为WAF实例配置业务端口,“业务端口”需要配置为WAF独享引擎实例实际监听的业务端口,即步骤一:添加防护网站中配置的“防护对象端口”。
步骤三:为弹性负载均衡绑定弹性公网IP
如果WAF独享引擎实例已配置负载均衡,请解绑源站服务器的弹性公网IP(Elastic IP,简称EIP),将解绑的弹性公网IP绑定到WAF独享引擎实例配置的负载均衡上。绑定后,请求流量会先经过WAF独享引擎进行攻击检测,然后转发到源站服务器,从而确保源站安全、稳定、可用。
本章节以解绑源站服务器的弹性公网IP(Elastic IP,简称EIP),将解绑的EIP绑定到WAF独享引擎的弹性负载均衡(Elastic Load Balance,简称ELB)上为例说明,具体操作请以实际业务为准。
- 单击页面左上方的,选择“负载均衡器”页面。 ,进入
- 在“负载均衡器”页面,解绑源站服务器的弹性公网IP。
- 解绑IPv4公网IP,在目标源站的负载均衡器所在行“操作”列,选择 。
- 解绑IPv6公网IP,在目标源站的负载均衡器所在行“操作”列,选择 。
图4 解绑弹性公网IP
- 在弹出的对话框中,单击“是”,解绑EIP。
- 在“负载均衡器”页面,找到WAF独享引擎的ELB的负载均衡器,绑定源站服务器的弹性公网IP。
- 绑定IPv4公网IP,在WAF独享引擎的ELB的负载均衡器所在行“操作”列,选择 。
- 绑定IPv6公网IP,在WAF独享引擎的ELB的负载均衡器所在行“操作”列,选择 。
- 在弹出对话框中,选择2中解绑的EIP,单击“确定”,绑定EIP。
步骤四:放行独享引擎回源IP
网站以“独享模式”成功接入WAF后,所有网站访问请求将先经过独享引擎配置的ELB然后流转到独享引擎实例进行监控,经独享引擎实例过滤后再返回到源站服务器,流量经独享引擎实例返回源站的过程称为回源。在服务器看来,接入WAF后所有源IP都会变成独享引擎实例的回源IP(即独享引擎实例对应的子网IP),以防止源站IP暴露后被黑客直接攻击。
源站服务器上的安全软件很容易认为独享引擎的回源IP是恶意IP,有可能触发屏蔽WAF回源IP的操作。一旦WAF的回源IP被屏蔽,WAF的请求将无法得到源站的正常响应,因此,网站以“独享模式”接入WAF防护后,您需要在源站服务器上设置放行创建的独享引擎实例对应的子网IP,不然可能会出现网站打不开或打开极其缓慢等情况。
根据您的源站服务器部署位置,选择以下方式进行操作。
如果您的源站服务器直接部署在华为云ECS上,请参考以下操作步骤设置安全组规则,放行独享模式回源IP。
- 单击页面左上方的,选择“安全总览”页面。 ,进入
- 在左侧导航树中,选择“独享引擎”页面。
,进入图5 独享引擎列表
- 在独享引擎列表的“IP地址”栏,获取所有创建的独享引擎对应的子网IP地址。
- 单击页面左上方的,选择 。
- 在目标ECS所在行的“名称/ID”列中,单击目标ECS实例名称,进入ECS实例的详情页面。
- 选择“安全组”页签,单击“更改安全组”。
- 在“更改安全组”对话框中,选择目标安全组或新建安全组并单击“确定”。
- 单击安全组ID,进入安全组基本信息页面。
- 选择“入方向规则”页签,单击“添加规则”,进入“添加入方向规则”页面,参数配置说明如表2所示。
图6 添加入方向规则
表2 入方向规则参数配置说明 参数
配置说明
协议端口
安全组规则作用的协议和端口。选择“自定义TCP”后,在TCP框下方输入源站的端口。
源地址
逐一添加3中获取的所有独享引擎实例的子网IP地址。
说明:一条规则配置一个IP。单击“增加1条规则”,可配置多条规则,最多支持添加10条规则。
- 单击“确定”,安全组规则添加完成。
成功添加安全组规则后,安全组规则将允许独享引擎回源IP地址的所有入方向流量。
您可以使用Telnet工具测试已接入WAF防护的源站IP对应的业务端口是否能成功建立连接验证配置是否生效。
例如,执行以下命令,测试已接入WAF防护的源站IP对外开放的443端口是否能成功建立连接。如果显示端口无法直接连通,但网站业务仍可正常访问,则表示安全组规则配置成功。
Telnet 源站IP 443
如果您的源站服务器使用华为云ELB进行流量分发,请参考以下操作步骤设置访问控制(白名单)策略,只放行独享模式回源IP。
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域或项目。
- 单击页面左上方的,选择“安全总览”页面。 ,进入
- 在左侧导航树中,选择“独享引擎”页面。
,进入图7 独享引擎列表
- 在独享引擎列表的“IP地址”栏,获取所有创建的独享引擎对应的子网IP地址。
- 单击页面左上方的,选择 。
- 在独享引擎绑定的ELB所在行的“名称”列中,单击ELB名称,进入ELB的详情页面。
- 在目标监听器所在行的“访问控制”列,单击“设置”。
图8 监听器列表
- 在弹出的对话框中,“访问控制”选择“白名单”。
- 单击“确定”,白名单访问控制策略添加完成。
成功配置访问控制策略后,访问控制策略将允许独享引擎回源IP地址的所有入方向流量。
您可以使用Telnet工具测试已接入WAF防护的源站IP对应的业务端口是否能成功建立连接验证配置是否生效。
例如,执行以下命令,测试已接入WAF防护的源站IP对外开放的443端口是否能成功建立连接。如果显示端口无法直接连通,但网站业务仍可正常访问,则表示安全组规则配置成功。
Telnet 源站IP 443
后续操作
- 防护网站的初始“接入状态”为“未接入”,当访问请求到达该网站的WAF时,该防护网站的接入状态将自动切换为“已接入”。如果接入失败,请参见域名接入状态显示“未接入”,如何处理?排查处理。
- 网站接入后推荐配置
- 防护网站的“对外协议”使用了“HTTPS”协议时,支持配置PCI DSS/3DS合规与TLS、开启HTTP2协议、开启Cookie安全属性。
- 开启IPv6防护:帮助源站实现IPv6协议请求的安全防护。
- 配置WAF到网站服务器的连接超时时间:WAF到源站的连接超时时长默认为30秒,支持自定义“连接超时”、“读超时”、“写超时”的时间。
- 配置攻击惩罚的流量标识:配置客户端IP标识、Session标识或User标识,实现IP、Cookie或Params恶意请求的攻击惩罚功能。
- 配置Header字段转发:添加Header字段后,WAF会将该字段插入到Header中,转发给源站,用以标记请求。
- 修改拦截返回页面:自定义触发WAF拦截时的返回页面。
- 根据防护需求,调整防护域名配置的防护策略,详见防护配置概述。