• 沒有找到結果。

获取客户端真实IP_Web应用防火墙 WAF_最佳实践_华为云

N/A
N/A
Protected

Academic year: 2022

Share "获取客户端真实IP_Web应用防火墙 WAF_最佳实践_华为云"

Copied!
88
0
0

加載中.... (立即查看全文)

全文

(1)

最佳实践

文档版本 43

发布日期 2022-02-11

(2)

版权所有 © 华为技术有限公司 2022。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。

商标声明

和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

(3)

目 录

1 Web 漏洞防护最佳实践...1

1.1 Apache Dubbo 反序列化漏洞...1

1.2 开源组件 Fastjson 拒绝服务漏洞... 1

1.3 开源组件 Fastjson 远程代码执行漏洞...2

1.4 Oracle WebLogic wls9-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)... 3

2 通过配置 TLS 最低版本和加密套件提升客户端访问域名的通道安全... 5

3 CC 攻击防御最佳实践... 14

3.1 简介... 14

3.2 基于 IP 限速的配置... 14

3.3 基于 Cookie 字段的配置...16

4 通过配置反爬虫防护策略阻止爬虫攻击... 20

5 通过配置 ECS/ELB 访问控制策略保护源站安全... 27

6 Web 基础防护功能最佳实践...32

7 通过误报处理提升 Web 基础防护效果... 36

8 使用 Postman 工具模拟业务验证误报屏蔽规则... 41

9 WAF 接入配置最佳实践... 49

9.1 准备阶段... 49

9.2 单独使用 WAF 配置指导... 50

10 独享引擎实例升级最佳实践... 55

11 获取客户端真实 IP... 59

12 通过 LTS 快速查询分析 WAF 访问日志...66

13 “CDN+WAF”联动,提升网站防护能力和访问速度...69

14 “DDoS 高防+WAF”联动,提升网站全面防护能力...75

A 修订记录... 82

(4)

1 Web 漏洞防护最佳实践

1.1 Apache Dubbo 反序列化漏洞

2020年02月13日,华为云安全团队监测到Apache Dubbo官方发布了CVE-2019-17564 漏洞通告,漏洞等级中危。当用户选择http协议进行通信时,攻击者可以通过发送 POST请求的时候来执行一个反序列化的操作,由于没有任何安全校验,该漏洞可以造 成反序列化执行任意代码。目前,华为云Web应用防火墙(Web Application

Firewall,WAF)提供了对该漏洞的防护。

影响的版本范围

漏洞影响的Apache Dubbo产品版本包括: 2.7.0~2.7.4、2.6.0~2.6.7、2.5.x的所有版 本。

安全版本

Apache Dubbo 2.7.5版本(https://github.com/apache/dubbo/tree/

dubbo-2.7.5)。

解决方案

建议您将Apache Dubbo升级到2.7.5版本。

如果您无法快速升级版本,或者希望防护更多其他漏洞,可以使用华为云Web应用防 火墙对该漏洞进行防护,请参照以下步骤进行防护:

步骤1 购买WAF。

步骤2 将网站域名添加到WAF中并完成域名接入,详细操作请参见添加防护域名。

步骤3 将Web基础防护的状态设置为“拦截”模式,详细操作请参见配置Web基础防护规 则。

----结束

1.2 开源组件 Fastjson 拒绝服务漏洞

2019年09月03日,华为云安全团队检测到应用较广的开源组件Fastjson的多个版本出 现拒绝服务漏洞。攻击者利用该漏洞,可构造恶意请求发给使用了Fastjson的服务器,

最佳实践 1 Web 漏洞防护最佳实践

(5)

使其内存和CPU耗尽,最终崩溃,造成用户业务瘫痪。目前,华为云Web应用防火墙

(Web Application Firewall,WAF)提供了对该漏洞的防护。

影响的版本范围

漏洞影响的产品版本包括:Fastjson 1.2.60以下版本,不包括Fastjson 1.2.60版本。

安全版本

Fastjson 1.2.60版本。

官方解决方案

建议用户将开源组件Fastjson升级到1.2.60版本。

防护建议

WAF支持对该漏洞的检测和防护,步骤如下:

步骤1 购买WAF。

步骤2 将网站域名添加到WAF中并完成域名接入,详细的操作请参见添加防护域名。

步骤3 将Web基础防护的状态设置为“拦截”模式,具体方法请参见配置Web基础防护规 则。

----结束

1.3 开源组件 Fastjson 远程代码执行漏洞

2019年07月12日,华为云应急响应中心检测到开源组件Fastjson存在远程代码执行漏 洞,此漏洞为2017年Fastjson 1.2.24版本反序列化漏洞的延伸利用,可直接获取服务 器权限,危害严重。

影响的版本范围

漏洞影响的产品版本包括:Fastjson 1.2.51以下的版本,不包括Fastjson 1.2.51版本。

安全版本

Fastjson 1.2.51版本及以上的版本。

官方解决方案

建议用户将开源组件Fastjson升级到1.2.51版本或者最新的1.2.58版本。

防护建议

华为云Web应用防火墙内置的防护规则支持对该漏洞的防护,参照以下步骤进行防 护:

步骤1 购买WAF。

(6)

步骤2 将网站域名添加到WAF中并完成域名接入,详细的操作请参见添加防护域名。

步骤3 将Web基础防护的状态设置为“拦截”模式,具体方法请参见配置Web基础防护规 则。

----结束

1.4 Oracle WebLogic wls9-async 反序列化远程命令执行漏 洞(CNVD-C-2019-48814)

2019年04月17日,华为云应急响应中心检测到国家信息安全漏洞共享平台(China National Vulnerability Database,CNVD)发布的Oracle WebLogic wls9-async组件 安全公告。Oracle WebLogic wls9-async组件在反序列化处理输入信息时存在缺陷,

攻击者可以发送精心构造的恶意HTTP请求获取目标服务器权限,在未授权的情况下远 程执行命令,CNVD对该漏洞的综合评级为“高危”。

漏洞编号

CNVD-C-2019-48814

漏洞名称

Oracle WebLogic wls9-async反序列化远程命令执行漏洞

漏洞描述

WebLogic wls9-async组件存在缺陷,通过WebLogic Server构建的网站存在安全隐 患。攻击者可以构造HTTP请求获取目标服务器的权限,在未授权的情况下远程执行命 令。

影响范围

● Oracle WebLogic Server 10.X

● Oracle WebLogic Server 12.1.3

官方解决方案

官方暂未发布针对此漏洞的修复补丁。

防护建议

通过WAF的精准访问防护功能,参考图1-1和图1-2分别配置限制访问路径前缀为/

_async/和/wls-wsat/的请求,拦截利用该漏洞发起的远程命令执行攻击请求。精准访 问防护规则的具体配置方法请参见配置精准访问防护规则。

最佳实践 1 Web 漏洞防护最佳实践

(7)

1-1 async 配置

1-2 wls-wsat 配置

(8)

2 通过配置 TLS 最低版本和加密套件提升客户 端访问域名的通道安全

HTTPS协议是由TLS(Transport Layer Security,传输层安全性协议)+HTTP协议构建 的可进行加密传输、身份认证的网络协议。当域名接入WAF时,如果客户端采用 HTTPS协议请求访问服务器,即防护域名的“对外协议”配置为“HTTPS”时,您可 以通过为域名配置最低TLS版本和加密套件来确保网站安全,详细说明如下:

● 最低TLS版本

最低TLS版本是客户端通过TLS访问网站时,被允许访问网站的最低TLS版本。配 置最低TLS版本后,只有满足最低TLS版本的请求,才能正常访问网站,可以满足 行业网站的安全需求。

说明

● 截止目前,TLS已发布了4个版本(TLS v1.0、TLS v1.1、TLS v1.2、TLS v1.3),TLS v1.0和TLS v1.1版本由于发布时间久远,某些加密算法(如SHA1、RC4算法)很容易被 黑客攻击,且在性能上,TLS v1.0和TLS v1.1已经无法满足呈几何级增长的数据传输加 密,存在安全隐患。同时,为了保障通信协议的安全,满足支付卡行业数据安全标准

(PCI DSS),支付卡行业安全标准委员会(PCI SSC)规定,TLS v1.0安全通信协议于 2018年6月30日不再生效。火狐、Safari、Chrome、Edge等主流浏览器厂商也声明将 于2020年全面停止支持TLS v1.0和TLS v1.1。

● 您可以通过查看网站TLS版本,检测网站支持的TLS版本。

● 加密套件

加密套件是多种加密算法的集合。配置安全性更高的加密套件,可以保障网站的 保密性和数据完整性。

推荐配置的最低 TLS 版本说明

WAF默认配置的最低TLS版本为“TLS v1.0”,为了确保网站安全,建议您根据业务实 际需求进行配置,推荐配置的最低TLS版本如表2-1所示。

最佳实践 名的通道安全

(9)

2-1 推荐配置的最低 TLS 版本说明

场景 最低TLS版本(推

荐)

防护效果

网站安全性能要求很高

(例如,银行金融、证 券、电子商务等有重要商 业信息和重要数据的行 业)

TLS v1.2 WAF将自动拦截TLS v1.0和TLS v1.1协议的访问请求。

网站安全性能要求一般

(例如,中小企业门户网 站)

TLS v1.1 WAF将自动拦截TLS1.0协议的 访问请求。

客户端APP无安全性要 求,可以正常访问网站

TLS v1.0 所有的TLS协议都可以访问网 站。

推荐配置的加密套件说明

WAF默认配置的加密套件为“加密套件1”,可以满足浏览器兼容性和安全性,各加密 套件相关说明如表2-2所示。

2-2 加密套件说明

加密套件名称 支持的加密算法 说明

默认加密套件 ● ECDHE-RSA-AES256- SHA384

● AES256-SHA256

● HIGH

● !MD5

● !aNULL

● !eNULL

● !NULL

● !DH

● !EDH

● !AESGCM

● 兼容性:较好,支持的客户 端较为广泛

● 安全性:一般

(10)

加密套件名称 支持的加密算法 说明 加密套件1 ● ECDHE-ECDSA-AES256-

GCM-SHA384

● HIGH

● !MEDIUM

● !LOW

● !aNULL

● !eNULL

● !DES

● !MD5

● !PSK

● !kRSA

● !SRP

● !3DES

● !DSS

● !EXP

● !CAMELLIA

● @STRENGTH

推荐配置。

● 兼容性:较好,支持的客户 端较为广泛

● 安全性:较高

加密套件2 ● EECDH+AESGCM

● EDH+AESGCM

● 兼容性:一般,严格符合 PCI DSS的FS要求,较低版 本浏览器可能无法访问。

● 安全性:高 加密套件3 ● ECDHE-RSA-AES128-GCM-

SHA256

● ECDHE-RSA-AES256-GCM- SHA384

● ECDHE-RSA-AES256- SHA384

● HIGH

● !MD5

● !aNULL

● !eNULL

● !NULL

● !DH

● !EDH

● 兼容性:一般,较低版本浏 览器可能无法访问。

● 安全性:高,支持ECDHE、

DHE-GCM、RSA-AES-GCM 多种算法。

最佳实践 名的通道安全

(11)

加密套件名称 支持的加密算法 说明 加密套件4 ● ECDHE-RSA-AES256-GCM-

SHA384

● ECDHE-RSA-AES128-GCM- SHA256

● ECDHE-RSA-AES256- SHA384

● AES256-SHA256

● HIGH

● !MD5

● !aNULL

● !eNULL

● !NULL

● !EDH

● 兼容性:较好,支持的客户 端较为广泛

● 安全性:一般,新增支持 GCM算法。

WAF提供的加密套件对于高版本的浏览器及客户端都可以兼容,不能兼容部分老版本 的浏览器。TLS版本不同,加密套件的浏览器或客户端兼容情况也不同。以TLS v1.0协 议为例,加密套件的浏览器及客户端兼容性说明如表2-3所示。

须知

建议您以实际客户端环境测试的兼容情况为准,避免影响现网业务。

2-3 加密套件不兼容的浏览器/客户端参考说明(TLS v1.0)

浏览器/客户端 默认加密套 件

加密套件1 加密套件

2 加密套件

3 加密套件

4 Google Chrome

63 /macOS High Sierra 10.13.2

× √ √ √ ×

Google Chrome 49/

Windows XP SP3 × × × × ×

Internet Explorer 6/Windows XP

× × × × ×

Internet Explorer 8/Windows XP

× × × × ×

Safari 6/iOS 6.0.1 √ √ × √ √ Safari 7/iOS 7.1 √ √ × √ √

(12)

浏览器/客户端 默认加密套 件

加密套件1 加密套件

2 加密套件

3 加密套件

4 Safari 7/OS X 10.9 √ √ × √ √ Safari 8/iOS 8.4 √ √ × √ √ Safari 8/OS X 10.10 √ √ × √ √ Internet Explorer

7/Windows Vista

√ √ × √ √

Internet Explorer 8~10/Windows 7

√ √ × √ √

Internet Explorer 10/Windows Phone 8.0

√ √ × √ √

Java 7u25 √ √ × √ √

OpenSSL 0.9.8y × × × × ×

Safari 5.1.9/OS X

10.6.8 √ √ × √ √

Safari 6.0.4/OS X

10.8.4 √ √ × √ √

配置 TLS 最低版本和加密套件

以下介绍如何配置TLS最低版本为“TLS v1.2”,加密套件为“加密套件1”,以及如 何验证配置效果。

步骤1 登录管理控制台。

步骤2 进入网站设置页面入口,如图2-1所示。

2-1 网站设置入口

步骤3 在目标网站所在行的“防护网站”列中,单击目标网站,进入网站基本信息页面。

步骤4 在“TLS配置”所在行,单击 ,如图2-2。

最佳实践 名的通道安全

(13)

2-2 修改 TLS 配置

说明

WAF支持一键开启PCI DSS和PCI 3DS合规认证功能,开启合规认证后,可以满足PCI DSS和PCI 3DS合规认证要求。

● PCI DSS

开启PCI DSS合规认证后,不能修改TLS最低版本和加密套件,且最低TLS版本将设置为

“TLS v1.2”,加密套件设置为EECDH+AESGCM:EDH+AESGCM。

开启PCI DSS合规认证后,如果您需要修改TLS最低版本和加密套件,请关闭该认证。

● PCI 3DS

开启PCI 3DS合规认证后,不能修改TLS最低版本,且最低TLS版本将设置为“TLS v1.2”。

开启PCI 3DS合规认证后,您将不能关闭该认证,请根据业务实际需求进行操作。

步骤5 在弹出的“TLS配置”对话框中,选择最低TLS版本“TLS v1.2”和“加密套件1”,如 图2-3所示。

(14)

2-3 “TLS 配置”对话框

步骤6 单击“确定”,TLS配置完成。

----结束

效果验证

假定“最低TLS版本”配置为“TLS v1.2”,验证TLS v1.2协议可以正常访问网站,验 证TLS v1.1及以下协议不能正常访问网站。

您可以在本地通过命令行方式,验证TLS是否配置成功。在验证前,请确保您本地已安 装openssl。

步骤1 复制防护域名的CNAME值,用于获取WAF的回源IP。

1. 登录管理控制台。

2. 进入网站配置页面入口,如图2-4所示。

2-4 网站设置入口

3. 在左侧导航树中,选择“网站设置”,进入“网站设置”页面。

4. 在“CNAME”信息行,单击 ,复制“CNAME”值,如图2-5所示。

最佳实践 名的通道安全

(15)

2-5 复制“CNAME”值

步骤2 获取WAF的回源IP。

● 云模式

在Windows操作系统的命令行窗口,执行以下命令,获取WAF的回源IP。

ping CNAME值

在界面回显信息中获取WAF回源IP,如图2-6所示。

2-6 ping cname

● 独享模式/ELB模式 a. 登录管理控制台。

b. 在页面左上角单击 ,选择“区域”,选择“安全与合规 > Web应用防火 墙”,进入“安全总览”页面。

c. 在左侧导航树中,选择“系统管理 > 独享引擎”,进入独享引擎实例列表页 面。

d. 在独享引擎列表的“子网IP地址”栏,获取所有创建的独享引擎对应的子网IP 地址,即独享引擎实例对应的回源IP。

2-7 获取独享引擎实例对应的子网 IP 地址

步骤3 执行以下命令,验证“TLS v1.2”协议可以访问目标网站。

openssl s_client -connect WAF回源IP -servername "防护域名" -tls1_2

界面返回证书相关信息,如图2-8所示,说明“TLS v1.2”协议可以访问目标网站。

(16)

2-8 验证 TLS v1.2

步骤4 执行以下命令,验证“TLS v1.1”协议不能访问目标网站。

openssl s_client -connect WAF回源IP -servername "防护域名" -tls1_1 界面未返回证书相关信息,如图2-9所示,说明WAF拦截了“TLS v1.1”的访问。

2-9 验证 TLS v1.1

----结束

最佳实践 名的通道安全

(17)

3 CC 攻击防御最佳实践

3.1 简介

本手册基于Web应用防火墙实践所编写,指导您在遭遇CC(Challenge Collapsar)攻 击时,完成基于IP限速和基于Cookie字段识别的防护规则的配置。

什么是 Web 应用防火墙?

Web应用防火墙(Web Application Firewall,简称WAF),针对Web攻击进行防护,

例如 :XSS(跨站脚本攻击)、Sql注入、Webshell上传等,除此之外,还提供了CC攻 击的防护,CC攻击是攻击者借助代理服务器生成指向受害主机的合法请求,是拒绝服 务攻击的一种类型。

如何判断是否遭受 CC 攻击?

当客户发现网站处理速度下降,网络带宽占用过高时,很有可能已经遭受CC攻击,此 时可查看Web服务器的访问日志或网络连接数量,如果访问日志或网络连接数量显著 增加,则可确定遭受CC攻击,可以按照以下策略进行配置,利用WAF阻断CC攻击,保 障网站业务的正常运行。

说明

● WAF防护应用层流量的拒绝服务攻击,适合防御HTTP Get攻击等。

● WAF服务并不提供针对四层及以下流量的防护,例如:ACK Flood、UDP Flood等攻击,这 类攻击建议使用DDoS及IP高防服务进行防护。

3.2 基于 IP 限速的配置

当WAF与访问者之间并无代理设备时,通过源IP来检测攻击行为较为精确,建议直接 使用IP限速的方式进行访问频率限制。

攻击案例

竞争对手控制数台主机,持续向网站“www.example.com”发起HTTP Post请求,网 站并无较大的负载能力,网站连接数、带宽等资源均被该攻击者大量占用,正常用户 无法访问网站,最终竞争力急剧下降。

(18)

防护措施

1. 根据服务访问请求统计,判断网站是否有大量单IP请求发生,如果有则说明网站 很有可能遭受了CC攻击。

2. 登录管理控制台,将您的网站成功接入Web应用防火墙。关于域名接入的具体操 作请参见添加防护域名。

3. 在您需要防护的域名所在行的“防护策略”栏中,单击“配置防护策略”,进入

“防护配置”页面,确认“CC攻击防护”的“状态”为“开启” ,如图 3-1所示。

3-1 CC 防护规则配置框

4. 开启WAF的“CC攻击防护”后,添加CC防护规则,配置对指定路径下的请求进行 基于IP限速的检测,针对业务特性,设置限速频率,并配置人机验证,防止误拦 截正常用户,针对网站所有url进行防护,配置如图3-2所示。

3-2 IP 限速

– 路径:CC防护的URL链接,不包含域名。

前缀匹配:以*结尾代表以该路径为前缀。例如,需要防护的路径为“/

admin/test.php”或 “/adminabc”,则路径可以填写为“/admin*”。

精准匹配:需要防护的路径需要与此处填写的路径完全相等。例如,需 要防护的路径为“/admin”,该规则必须填写为“/admin”。

最佳实践 3 CC 攻击防御最佳实践

(19)

说明

● 该路径不支持正则,仅支持前缀匹配和精准匹配的逻辑。

● 路径里不能含有连续的多条斜线的配置,如“///admin”,WAF引擎会将“///”

转为“/”。

– 限速模式:选择“IP限速”,根据IP区分单个Web访问者。

– 限速频率:单个Web访问者在限速周期内可以正常访问的次数,如果超过该 访问次数,Web应用防火墙服务将暂停该Web访问者的访问。

– 防护动作:防止误拦截正常用户,选择“人机验证”。

人机验证:表示在指定时间内访问超过次数限制后弹出验证码,进行人 机验证,完成验证后,请求将不受访问限制。

阻断:表示在指定时间内访问超过次数限制将直接阻断。

仅记录:表示在指定时间内访问超过次数限制将只记录不阻断。

当用户访问超过限制后需要输入验证码才能继续访问。

进入防护事件页面,可以查看攻击事件详情,如图3-3所示。

3-3 查看 CC 攻击事件日志

3.3 基于 Cookie 字段的配置

对于有些网站,源IP无法精准获取。例如:存在未在header中插入“X-Forwarded- For”字段的Proxy或其他原因,建议使用配置Cookie字段实现用户标识。

攻击案例:

竞争对手控制数台主机,与大多普通访客一样,共用同一IP,或通过代理频繁更换源 IP,持续向网站“www.example.com”发起HTTP Post请求,网站并无较大的负载能 力,网站连接数、带宽等资源均被该攻击者大量占用,正常用户无法访问网站,最终 竞争力急剧下降。

(20)

防护措施:

1. 根据服务访问请求统计,判断网站是否有大量同一IP请求发生,如果有则说明网 站很有可能遭受了CC攻击。

2. 登录管理控制台,将您的网站成功接入Web应用防火墙。关于域名接入的具体操 作请参见添加防护域名。

3. 在您需要防护的域名所在行的“防护策略”栏中,单击“配置防护策略”,进入

“防护配置”页面,确认“CC攻击防护”的“状态”为“开启” ,如图 3-4所示。

3-4 CC 防护规则配置框

4. 开启WAF的“CC攻击防护”后,添加CC防护规则,配置“用户限速”模式,输入 用户标识,即Cookie字段中的变量名。为了更加有效的标识用户,建议使用

“sessionid”或“token”这类标识网站后台颁发给用户的唯一标识字段。配置模 式如图3-5所示。

说明

“防护模式”选择“阻断”模式,设置“阻断时长”,能够在攻击被拦截后,攻击者需额 外等待一段时间, 该设置能进一步对攻击者行为进行限制,建议对安全要求非常高的用户 设置。

最佳实践 3 CC 攻击防御最佳实践

(21)

3-5 添加 CC 防护规则

– 路径:CC防护的URL链接,不包含域名。

前缀匹配:以*结尾代表以该路径为前缀。例如,需要防护的路径为“/

admin/test.php”或 “/adminabc”,则路径可以填写为“/admin*”。

精准匹配:需要防护的路径需要与此处填写的路径完全相等。例如,需 要防护的路径为“/admin”,该规则必须填写为“/admin”。

说明

● 该路径不支持正则,仅支持前缀匹配和精准匹配的逻辑。

● 路径里不能含有连续的多条斜线的配置,如“///admin”,WAF引擎会将“///”

转为“/”。

– 限速模式:选择“用户限速”,根据Cookie键值区分单个Web访问者。

– 用户标识:为了更加有效的标识用户,建议使用“sessionid”或“token”这 类标识网站后台颁发给用户的唯一标识字段。

– 限速频率:单个Web访问者在限速周期内可以正常访问的次数,如果超过该 访问次数,Web应用防火墙服务将暂停该Web访问者的访问。

– 防护动作:选择“阻断”模式。该模式可设置“阻断时长”,在攻击被拦截 后,攻击者需额外等待一段时间才能访问正常的网页, 该设置能进一步对攻 击者行为进行限制,建议对安全要求非常高的用户设置。

(22)

人机验证:表示在指定时间内访问超过次数限制后弹出验证码,进行人 机验证,完成验证后,请求将不受访问限制。

阻断:表示在指定时间内访问超过次数限制将直接阻断。

仅记录:表示在指定时间内访问超过次数限制将只记录不阻断。

– 阻断页面:可选择“默认设置”或者“自定义”。

最佳实践 3 CC 攻击防御最佳实践

(23)

4 通过配置反爬虫防护策略阻止爬虫攻击

网络爬虫为网络信息收集与查询提供了极大的便利,但同时也对网络安全产生以下负 面影响:

● 网络爬虫会根据特定策略尽可能多的“爬过”网站中的高价值信息,占用服务器 带宽,增加服务器的负载

● 恶意用户利用网络爬虫对Web服务发动DoS攻击,可能使Web服务资源耗尽而不 能提供正常服务

● 恶意用户利用网络爬虫抓取各种敏感信息,造成网站的核心数据被窃取,损害企 业经济利益

Web应用防火墙可以通过Robot检测(识别User-Agent)、网站反爬虫(检查浏览器 合法性)和CC攻击防护(限制访问频率)三个反爬虫策略,全方位帮您解决业务网站 遭受的爬虫问题。

前提条件

域名已成功接入WAF。

开启 Robot 检测(识别 User-Agent)

开启Robot检测后,WAF可以检测和拦截恶意爬虫、扫描器、网马等威胁。

步骤1 登录管理控制台。

步骤2 进入网站设置页面入口,如图4-1所示。

4-1 网站设置入口

(24)

步骤3 在您需要防护的域名所在行的“防护策略”栏中,单击“配置防护策略”,进入“防 护配置”页面,确认“Web基础防护”的“状态”为 ,如图4-2所示。

4-2 Web 基础防护配置框

步骤4 单击“高级设置”,在“防护配置”页面,开启“常规检测”和“Webshell”检测开 关。

步骤5 在“网站反爬虫”配置框中,用户可根据自己的需要参照图4-3更改网站反爬虫的“状 态”,单击“BOT设置”,进入网站反爬虫规则配置页面。

4-3 网站反爬虫配置框

步骤6 在“特征反爬虫”页面,开启Robot检测开关,如图4-4所示。

4-4 开启特征反爬虫

----结束

当WAF检测到恶意爬虫、扫描器等对网站进行爬取时,将立即拦截并记录该事件,您 可以在“防护事件”页面查看爬虫防护日志。

开启网站反爬虫(检查浏览器合法性)

开启网站反爬虫,WAF可以动态分析网站业务模型,结合人机识别技术和数据风控手 段,精准识别爬虫行为。

最佳实践 4 通过配置反爬虫防护策略阻止爬虫攻击

(25)

步骤1 登录管理控制台。

步骤2 进入网站设置页面入口,如图4-5所示。

4-5 网站设置入口

步骤3 在您需要防护的域名所在行的“防护策略”栏中,单击“配置防护策略”,进入“防 护配置”页面。

步骤4 在“网站反爬虫”配置框中,用户可根据自己的需要参照图4-6更改网站反爬虫的“状 态”,单击“BOT设置”,进入网站反爬虫规则配置页面。

4-6 网站反爬虫配置框

步骤5 选择“JS脚本反爬虫”页签,用户可根据业务需求更改JS脚本反爬虫的“状态”和“防 护模式”。

默认关闭JS脚本反爬虫,单击 ,在弹出的“警告”提示框中,单击“确定”,

开启JS脚本反爬虫 。

须知

● JS脚本反爬虫依赖浏览器的Cookie机制、JavaScript解析能力,如果客户端浏览器不 支持Cookie,此功能无法使用。

● 如果您的业务接入了CDN服务,请谨慎使用JS脚本反爬虫。

由于CDN缓存机制的影响,JS脚本反爬虫特性将无法达到预期效果,并且有可能造 成页面访问异常。

步骤6 根据业务配置JS脚本反爬虫规则,相关参数说明如表4-1所示。

JS脚本反爬虫规则提供了“防护所有路径”和“防护指定路径”两种防护动作。

● 除了指定路径以外,防护其他所有路径

选择“防护所有路径”,在JS脚本反爬虫规则的配置页面左上角,单击“添加排 除防护路径”,配置防护路径后,单击“确定”。

(26)

4-7 添加排除防护路径

● 只防护指定路径时

选择“防护指定路径”,在JS脚本反爬虫规则的配置页面左上角,单击“添加防 护路径”,配置防护路径后,单击“确定”。

4-8 添加指定防护路径

最佳实践 4 通过配置反爬虫防护策略阻止爬虫攻击

(27)

4-1 JS 脚本反爬虫防护规则参数说明

参数 参数说明 示例

规则名称 自定义规则名称。 wafjs

路径 设置JS脚本反爬虫的URL

链接中的路径(不包含域 名)。

URL用来定义网页的地 址。基本的URL格式如 下:

协议名://域名或IP地址[:端 口号]/[路径名/…/文件 名]。

例如,URL为“http://

www.example.com/

admin”,则“路径”设 置为“/admin”。

说明

● 该路径不支持正则。

● 路径里不能含有连续的 多条斜线的配置,如

“///admin”,WAF引 擎会将“///”转为

“/”。

/admin

逻辑 在“逻辑”下拉列表中选

择需要的逻辑关系。 包含

规则描述 规则备注信息。 -

----结束

开启该防护后,非浏览器的访问将不能获取业务页面。

(28)

配置 CC 攻击防护(限制访问频率)

开启CC攻击防护,限制单个IP/Cookie/Referer访问者对您的网站上特定路径(URL)

的访问频率,缓解CC攻击对业务的影响。

步骤1 登录管理控制台。

步骤2 进入网站设置页面入口,如图4-9所示。

4-9 网站设置入口

步骤3 在您需要防护的域名所在行的“防护策略”栏中,单击“配置防护策略”,进入“防 护配置”页面,确认“CC攻击防护”的“状态”为 ,如图4-10所示。

4-10 CC 防护规则配置框

步骤4 在“CC防护”规则配置页面左上角,单击“添加规则”。以IP限速和人机验证为例,

添加IP限速规则,如图4-11所示。

最佳实践 4 通过配置反爬虫防护策略阻止爬虫攻击

(29)

4-11 IP 限速

设置成功后,当用户访问超过限制后需要输入验证码才能继续访问。

----结束

(30)

5 通过配置 ECS/ELB 访问控制策略保护源站安

网站已接入Web应用防火墙(Web Application Firewall,简称WAF)进行安全防护 后,您可以通过设置源站服务器的访问控制策略,只放行WAF回源IP段,防止黑客获 取您的源站IP后绕过WAF直接攻击源站。

本章节介绍了源站服务器部署在华为云弹性云服务器(以下简称ECS)或华为云弹性负 载均衡(以下简称ELB)时,如何判断源站存在泄漏风险,以及如何配置访问控制策略 保护源站安全。

说明

网站已接入WAF进行安全防护后,无论您是否配置源站保护,都不影响正常业务的转发。没有 配置源站保护可能导致攻击者在源站IP暴露的情况下,绕过WAF直接攻击您的源站。

操作须知

● 在配置源站保护前,请确保该ECS或ELB实例上的所有网站域名都已经接入WAF,

保证网站能正常访问。

● 配置安全组存在一定风险,避免出现以下问题:

– 您的网站设置了Bypass回源,但未取消安全组和网络ACL等配置,这种情况 下,可能会导致源站无法从公网访问。

– 当WAF有新增的回源网段时,如果源站已配置安全组防护,可能会导致频繁 出现5xx错误。

如何判断源站存在泄露风险

您可以在非华为云环境直接使用Telnet工具连接源站公网IP地址的业务端口(或者直接 在浏览器中输入访问Web应用的IP),查看是否建立连接成功。

● 如果可以连通

表示源站存在泄露风险,一旦黑客获取到源站公网IP就可以绕过WAF直接访问。

● 如果无法连通

表示当前不存在源站泄露风险。

例如,测试已接入WAF防护的源站IP对外开放的443端口是否能成功建立连接,显示如 图5-1所示类似信息,说明端口可连通,表示该源站存在泄露风险。

最佳实践 5 通过配置 ECS/ELB 访问控制策略保护源站安全

(31)

5-1 测试源站泄露风险

获取 WAF 回源 IP 地址

回源IP是WAF用来代理客户端请求服务器时用的源IP,在服务器看来,接入WAF后所 有源IP都会变成WAF的回源IP,而真实的客户端地址会被加在HTTP头部的XFF字段 中。有关回源IP地址的详细介绍,请参见如何放行回源IP段?。

步骤1 登录管理控制台。

步骤2 单击管理控制台左上角的 ,选择区域或项目。

步骤3 单击页面左上方的 ,选择“安全与合规 > Web应用防火墙 WAF”。

步骤4 在左侧导航树中,选择“网站设置”,进入“网站设置”页面。

步骤5 在网站列表右侧,单击“Web应用防火墙回源IP网段”,查看Web应用防火墙所有回 源IP段。

说明

Web应用防火墙的回源IP网段会定期更新,及时将更新后的回源IP网段添加至相应的安全组规则 中,避免出现误拦截。

5-2 回源 IP 网段

步骤6 在“Web应用防火墙的回源IP网段”对话框,单击“复制IP段”,复制所有回源IP。

(32)

5-3 Web 应用防火墙的回源 IP 网段

----结束

设置 ECS 入方向规则

如果您的源站服务器直接部署在华为云ECS上,请参考以下操作步骤设置安全组规则,

只放行WAF回源IP段。

须知

请确保所有WAF回源IP段都已通过源站ECS的安全组规则设置了入方向的允许策略,否 则可能导致网站访问异常。

步骤1 登录管理控制台。

步骤2 单击管理控制台左上角的 ,选择区域或项目。

步骤3 单击页面左上方的 ,选择“计算 > 弹性云服务器 ECS”。

最佳实践 5 通过配置 ECS/ELB 访问控制策略保护源站安全

(33)

步骤4 在目标ECS所在行的“名称/ID”列中,单击目标ECS实例名称,进入ECS实例的详情页 面。

步骤5 选择“安全组”页签,单击“更改安全组”。

步骤6 单击安全组名称,进入安全组基本信息页面。

步骤7 选择“入方向规则”页签,单击“添加规则”,进入“添加入方向规则”页面,如图 5-4所示,参数配置说明如表5-1所示。

5-4 添加入方向规则

5-1 入方向规则参数配置说明

参数 配置说明

协议端口 安全组规则作用的协议和端口。选择“自定义TCP”后,在 TCP框下方输入源站的端口。

源地址 逐一添加步骤6中复制的所有WAF回源IP段。

说明一条规则配置一个IP。单击“增加1条规则”,可配置多条规则,最 多支持添加10条规则。

步骤8 单击“确定”,安全组规则添加完成。

成功添加安全组规则后,安全组规则将允许WAF回源IP段的所有入方向流量。

您可以参考如何判断源站存在泄露风险,通过测试已接入WAF防护的源站IP对应的业 务端口是否能成功建立连接验证配置是否生效。如果显示端口无法直接连通,但网站 业务仍可正常访问,则表示源站保护配置成功。

----结束

开启 ELB 访问控制

如果您的源站服务器直接部署在华为云ELB上,请参考以下操作步骤设置访问控制(白 名单)策略,只放行WAF回源IP段。

(34)

步骤1 登录管理控制台。

步骤2 单击管理控制台左上角的 ,选择区域或项目。

步骤3 单击页面左上方的 ,选择“网络 > 弹性负载均衡 ELB”。

步骤4 在目标ELB所在行的“监听器”列中,单击监听器名称,进入监听器的详情页面。

步骤5 在监听器基本信息页面,单击“修改访问控制”,如图5-5所示。

5-5 设置访问控制

步骤6 在弹出的对话框中,“访问策略”选择“白名单”,如图5-6所示。

5-6 配置白名单访问控制

步骤7 将步骤6中所有WAF的回源IP段添加到“IP地址组”中,设置只允许WAF的回源IP段访 问负载均衡监听器。

说明

单击“创建IP地址组”, 您可以将所有WAF回源IP地址添加到IP地址组中。

步骤8 单击“确定”,白名单访问控制策略添加完成。

您可以参考如何判断源站存在泄露风险,通过测试已接入WAF防护的源站IP对应的业 务端口是否能成功建立连接验证配置是否生效。如果显示端口无法直接连通,但网站 业务仍可正常访问,则表示源站保护配置成功。

----结束

最佳实践 5 通过配置 ECS/ELB 访问控制策略保护源站安全

(35)

6 Web 基础防护功能最佳实践

本文介绍了WAF的Web攻击防护最佳实践,主要从应用场景、防护策略、防护效果三 个方面进行介绍。

应用场景

Web应用防火墙(Web Application Firewall,WAF),通过对HTTP(S)请求进行检 测,识别并阻断SQL注入、跨站脚本攻击、网页木马上传、命令/代码注入、文件包 含、敏感文件访问、第三方应用漏洞攻击、CC攻击、恶意爬虫扫描、跨站请求伪造等 攻击,保护Web服务安全稳定。

防护策略

步骤1 登录管理控制台。

步骤2 进入网站设置页面入口,如图6-1所示。

6-1 网站设置入口

步骤3 在目标域名所在行的“防护策略”栏中,单击“配置防护策略”,进入“防护配置”

页面。

步骤4 在“Web基础防护”配置框中,查看Web应用攻击防护的防护状态,如图6-2所示。

6-2 Web 基础防护配置框

(36)

Web基础防护功能默认为开启状态,并使用“仅记录”模式的防护规则策略。

● 状态

– :表示WAF的Web基础防护的防护模块已开启。

– :表示该防护模块处理关闭状态。

● 模式:分为拦截和仅记录两种模式。

– “拦截”模式表示当遭受Web攻击时,WAF立即拦截攻击请求,并在后台记 录攻击日志。

– “仅记录”模式表示当遭受Web攻击时,WAF不会拦截攻击请求,仅在后台 记录攻击日志。

步骤5 单击“高级设置”,进入“Web基础防护”界面,如图6-3所示。

6-3 Web 基础防护

● “防护等级”:分为宽松、中等、严格三种模式,默认为“中等”防护模式。

6-1 防护等级说明

防护等级 说明

宽松 防护粒度较粗,只拦截攻击特征比较明显的请求。

当误报情况较多的场景下,建议选择“宽松”模式。

中等 默认为“中等”防护模式,满足大多数场景下的Web防 护需求。

严格 防护粒度最精细,可以拦截具有复杂的绕过特征的攻击 请求。

当需要更严格地防护SQL注入、跨站脚本、命令注入等 攻击行为时,建议使用“严格”模式。

● 灵活设置防护检测类型。

WAF默认开启“常规检测”和“扫描器”防护检测,用户可根据业务需要,开启 其他需要防护的检测类型。

----结束

使用建议

● 如果您对自己的业务流量特征还不完全清楚,建议先切换到“仅记录”模式进行 观察。一般情况下,建议您观察一至两周,然后分析仅记录模式下的攻击日志。

最佳实践 6 Web 基础防护功能最佳实践

(37)

– 如果没有发现任何正常业务流量被拦截的记录,则可以切换到“拦截”模式 启用拦截防护。

– 如果发现攻击日志中存在正常业务流量,建议调整防护等级或者设置误报屏 蔽来避免正常业务的误拦截。

● 业务操作方面应注意以下问题:

– 正常业务的HTTP请求中尽量不要直接传递原始的SQL语句、JAVA SCRIPT代 码。

– 正常业务的URL尽量不要使用一些特殊的关键字(UPDATE、SET等)作为路 径,例如:“https://www.example.com/abc/update/mod.php?set=1”。

– 如果业务中需要上传文件,不建议直接通过Web方式上传超过50M的文件,

建议使用对象存储服务或者其他方式上传。

防护效果

开启Web基础防护功能后,在浏览器中输入模拟SQL注入攻击的测试域名,WAF将拦 截了此条攻击。您可以在“安全总览”页面,查看攻击的拦截日志,如图6-5所示。

6-4 SQL 攻击拦截

(38)

6-5 查看防护日志

在“防护事件”页面,您可查看“昨天”、“今天”、“3天”、7天、“30天”或者 自定义时间范围内的防护日志。同时,单击“详情”,可以查看具体的攻击信息,如 图6-6所示。

6-6 查看防护事件

最佳实践 6 Web 基础防护功能最佳实践

(39)

7 通过误报处理提升 Web 基础防护效果

当您的网站接入Web应用防火墙(Web Application Firewall,简称WAF)并开启Web 基础防护后,WAF会根据您设置的Web基础防护规则检测并拦截命中规则的请求。如 果业务正常请求命中Web基础防护规则被WAF误拦截,可能导致正常请求访问网站显 示异常,此时,您可以通过误报处理使WAF不再拦截该请求,提升Web基础防护效 果。

前提条件

“防护事件”页面可以查看误拦截事件。

约束条件

同一个事件不能重复进行误报处理,即如果该事件已进行了误报处理,则不能再对该 事件进行误报处理。

使用场景

业务正常请求被WAF拦截。例如,您在华为云ECS服务器上部署了一个Web应用,将 该Web应用对应的公网域名接入WAF并开启Web基础防护后,该域名的请求流量命中 了Web基础防护规则被WAF误拦截,导致通过域名访问网站显示异常,但直接通过IP 访问网站正常。

系统影响

● 拦截事件处理为误报后,“防护事件”页面中将不再出现该事件,您也不会收到 该类事件的告警通知。

● 拦截事件处理为误报后,该误报事件对应的规则将添加到误报屏蔽规则列表中,

您可以在“防护策略”界面的“误报屏蔽”页面查看、关闭、删除或修改该规 则。

操作步骤

步骤1 登录管理控制台。

步骤2 进入网站设置页面入口,如图7-1所示。

(40)

7-1 网站设置入口

步骤3 在左侧导航树中,选择“防护事件”,进入“防护事件”页面。

步骤4 在防护事件列表中,根据防护网站、事件类型、源IP、URL等信息筛选误拦截事件,如 图7-2所示。

7-2 查看防护事件

步骤5 在误拦截事件所在行的“操作”列中,单击“详情”,查看事件详细信息,确认为误 拦截事件,如图7-3所示。

最佳实践 7 通过误报处理提升 Web 基础防护效果

(41)

7-3 查看拦截事件详细信息

步骤6 在误拦截事件所在行的“操作”列中,单击“误报处理”。

步骤7 在弹出的对话框中,单击“确认添加”,完成误报处理。

(42)

7-4 误报处理

● 单击“添加”,您可以添加其他防护域名,使该误报处理适用于其他防护域名。

● 路径

误报事件的URL路径,不包含域名。默认为事件的来源路径。

– 前缀匹配:选择“前缀为”,代表以输入的路径为前缀。例如,需要防护的 路径为“/admin/test.php”或 “/adminabc”,则路径可以填写为“/

admin”。

– 精准匹配:选择“等于”,需要防护的路径需要与此处填写的路径完全相 等。例如,需要防护的路径为“/admin/test.php”,该规则必须填写为“/

admin/test.php”。

----结束

生效条件

设置误报处理后,1分钟左右生效,防护事件详情列表中将不再出现此误报。您可以刷 新浏览器缓存,重新访问设置了误报处理的页面,如果访问正常,说明配置成功。

相关操作

● 下载防护事件数据

您可以在“防护事件”的“下载”页面,下载5天内的所有防护域名的防护事件数 据,当天的防护事件数据,在次日凌晨生成到防护事件数据csv文件。

● 配置误报屏蔽规则

针对某些规则ID或者事件类别进行忽略设置。例如,某URL不进行XSS的检查,可 通过配置误报屏蔽规则,屏蔽XSS检查。

最佳实践 7 通过误报处理提升 Web 基础防护效果

(43)

Web 基础防护检测项说明

Web基础防护覆盖OWASP(Open Web Application Security Project)常见安全威 胁,内置语义分析+正则双引擎,可以对恶意扫描器、IP、网马等威胁进行检测并拦 截。请根据业务使用场景开启相应的检测项,详细的检测项说明如表7-1所示。

7-1 检测项说明

检测项 说明

常规检测 防护SQL注入、XSS跨站脚本、远程溢出攻击、文件包含、

Bash漏洞攻击、远程命令执行、目录遍历、敏感文件访问、命 令/代码注入等攻击。

说明开启“常规检测”后,WAF将根据内置规则对常规检测项进行检测。

Webshell检测 防护通过上传接口植入网页木马。

说明开启“Webshell检测”后,WAF将对通过上传接口植入的网页木马进

行检测。

深度检测 防护同形字符混淆、通配符变形的命令注入、UTF7、Data URI Scheme等深度反逃逸。

说明开启“深度检测”后,WAF将对深度反逃逸进行检测防护。

header全检测 默认关闭。关闭状态下WAF会检测常规存在注入点的header 字段。

说明开启“header全检测”后,WAF将对请求里header中所有字段进行攻 击检测。

Web 基础防护等级

Web基础防护支持三种防护等级:“宽松”、“中等”、“严格”,默认防护等级为

“中等”。宽松的防护等级可能降低误报率,但可能导致漏报率增高;严格的防护等 级可能增高误报率,但可以降低漏报率。防护等级的详细说明如表7-2所示。

7-2 防护等级说明

防护等级 说明

宽松 防护粒度较粗,只拦截攻击特征比较明显的请求。

当误报情况较多的场景下,建议选择“宽松”模式。

中等 默认为“中等”防护模式,满足大多数场景下的Web防护 需求。

严格 防护粒度最精细,可以拦截具有复杂的绕过特征的攻击请 求。

当需要更严格地防护SQL注入、跨站脚本、命令注入等攻击 行为时,建议使用“严格”模式。

(44)

8 使用 Postman 工具模拟业务验证误报屏蔽规

当防护网站成功接入WAF后,您可以使用接口测试工具模拟用户发起各类HTTP(S)请 求,以验证配置的WAF防护规则是否生效,即验证配置防护规则的防护效果。本实践 以Postman工具为例,说明如何验证误报屏蔽规则。

应用示例

例如,您的业务部署在“/product”路径下,由于生态开发,针对参数ID存在用户提 交脚本或富文本的业务场景,为了确保业务正常运行,您需要对用户提交的内容进行 误报屏蔽,以屏蔽误拦截的访问请求,提升WAF防护效果。

前提条件

● 防护网站已成功接入WAF。

● 已开启“Web基础防护”,且防护模式为“拦截”。同时,“常规检测”已开 启。

有关配置Web基础防护的详细操作,请参见配置Web基础防护规则。

操作步骤

步骤1 下载并安装Postman。

步骤2 在Postman上设置请求路径为“/product”,参数ID为普通测试脚本,防护网站的访 问请求被拦截。

最佳实践 8 使用 Postman 工具模拟业务验证误报屏蔽规则

(45)

步骤3 处理误报事件。

1. 登录管理控制台。

2. 进入防护事件页面,如图8-1所示。

8-1 防护事件页面入口

3. 在防护事件页面,WAF拦截的防护事件命中了“XSS攻击”的“010000”规则。

8-2 查看防护事件

4. 在该防护事件所在行的“操作”列中,单击“误报处理”。

5. 在弹出的“误报处理”对话框中,添加如图8-3所示误报屏蔽规则。

(46)

8-3 添加误报屏蔽规则

6. 单击“确认添加”,添加该误报屏蔽规则。

防护规则生效需要5分钟左右。

步骤4 在Postman上再次设置请求路径为“/product”,参数ID为普通测试脚本,防护网站 的访问请求还是被拦截。

最佳实践 8 使用 Postman 工具模拟业务验证误报屏蔽规则

(47)

步骤5 参照步骤3,查看防护事件,处理命中“XSS攻击”的“110053”规则的误报防护事 件。

8-4 查看防护事件

8-5 添加误报屏蔽规则

步骤6 在Postman上第三次设置请求路径为“/product”,参数ID为普通测试脚本,防护网 站的访问请求仍被拦截。

(48)

步骤7 参照步骤3,查看防护事件,处理命中“XSS攻击”的“110060”规则的误报防护事 件。

8-6 查看防护事件

最佳实践 8 使用 Postman 工具模拟业务验证误报屏蔽规则

(49)

8-7 添加误报屏蔽规则

步骤8 在Postman上第四次设置请求路径为“/product”,参数ID为普通测试脚本。此时,

防护网站的访问请求不再被拦截,说明所有误报屏蔽规则都已生效。

同时,查看“防护事件”页面,防护事件列表也没有新增的XSS攻击防护事件。

步骤9 在Postman上模拟攻击,验证设置的误报屏蔽规则不会影响WAF拦截其他参数的XSS攻 击事件。

1. 在Postman上设置请求路径为“/product”,参数item为普通测试脚本,防护网 站的访问请求被拦截。

(50)

2. 查看“防护事件”页面,WAF拦截参数item的XSS攻击事件。

8-8 查看防护事件

步骤10 在Postman上模拟攻击,验证设置的误报屏蔽规则不会影响WAF拦截其他路径的XSS攻 击事件。

1. 在Postman上设置请求路径为“/order”,参数ID为普通测试脚本,防护网站的访 问请求被拦截。

2. 查看“防护事件”页面,WAF拦截“URL”为“/order”、参数ID的XSS攻击事 件。

最佳实践 8 使用 Postman 工具模拟业务验证误报屏蔽规则

(51)

8-9 查看防护事件

----结束

(52)

9 WAF 接入配置最佳实践

9.1 准备阶段

将网站域名接入华为云Web应用防火墙(Web Application Firewall,WAF),能够帮 助您的网站防御常见的Web攻击和恶意CC攻击流量,避免网站遭到入侵导致数据泄 露,全面保障您网站的安全性和可用性。

网站业务梳理

建议您对所需接入WAF进行防护的网站业务情况进行全面梳理,帮助您了解当前业务 状况和具体数据,为后续配置WAF的防护策略提供依据。

9-1 网站业务梳理

梳理项 说明

网站和业务信息

网站/应用业务每天的流量峰值情

况,包括Mbps、QPS 判断风险时间点,并且可作为WAF实例的业 务带宽和业务QPS规格的选择依据。

业务的主要用户群体(例如,访问 用户的主要来源地区)

判断非法攻击来源,后续可使用地理位置访 问控制功能屏蔽非法来源地区。

业务是否为C/S架构 如果是C/S架构,进一步明确是否有App客户 端、Windows客户端、Linux客户端、代码回 调或其他环境的客户端。

源站部署的具体位置 判断购买哪种实例region。

源站服务器的操作系统(Linux、

Windows)和所使用的Web服务中 间件(Apache、Nginx、IIS等)

判断源站是否存在访问控制策略,避免源站 误拦截WAF回源IP转发的流量。

域名使用协议 判断所使用的通信协议WAF是否支持。

业务端口 判断需要防护的业务端口是否在WAF支持的

端口范围内。

最佳实践 9 WAF 接入配置最佳实践

(53)

梳理项 说明

业务是否使用TLS 1.0或弱加密套件 判断业务使用的加密套件是否支持。

(针对HTTPS业务)客户端是否支

持SNI标准 对于支持HTTPS协议的域名,接入WAF后,

客户端和服务端都需要支持SNI标准。

业务交互过程 了解业务交互过程、业务处理逻辑,便于后

续配置针对性防护策略。

活跃用户数量 便于后续在处理紧急攻击事件时,判断事件

严重程度,以采取风险较低的应急处理措 施。

业务及攻击情况

业务类型及业务特征(例如,游

戏、棋牌、网站、App等业务) 便于在后续攻击防护过程中分析攻击特征。

单用户、单IP的入方向流量范围和

连接情况 帮助后续判断是否可针对单个IP制定限速策

略。

用户群体属性 例如,个人用户、网吧用户、或通过代理访

问的用户。

业务是否遭受过大流量攻击、攻击

类型和最大的攻击流量峰值 判断是否需要增加DDoS防护服务,并根据攻 击流量峰值判断需要的DDoS防护规格。

业务是否遭受过CC攻击和最大的CC

攻击峰值QPS 通过分析历史攻击特征,配置预防性策略。

业务是否已完成压力测试 评估源站服务器的请求处理性能,帮助后续 判断是否因遭受攻击导致业务发生异常。

准备工作

● 已将域名信息(源站服务器的IP、端口等信息)添加到WAF。

● 具有网站DNS域名解析管理员的帐号,用于修改DNS解析记录将网站流量切换至 WAF。

● 推荐在将网站业务接入前,完成压力测试。

● 检查网站业务是否已有信任的访问客户端(例如监控系统、通过内部固定IP或IP段 调用的API接口、固定的程序客户端请求等)。在将业务接入后,需要将这些信任 的客户端IP加入白名单。

9.2 单独使用 WAF 配置指导

当网站没有接入到WAF前,DNS直接解析到源站的IP。网站接入WAF后,需要把DNS 解析到WAF的CNAME,这样流量才会先经过WAF,WAF再将流量转到源站,实现网 站流量检测和攻击拦截。本文介绍通过DNS配置模式接入WAF时,如何在已添加网站 配置后,配置域名解析,实现业务接入。

(54)

原理图

9-1 未使用代理配置原理图

前提条件

● 已有网站域名。

● 已购买WAF。

● 已将网站信息(源站服务器的IP、端口等信息)添加到WAF。

● 在域名的DNS服务商处有更新DNS记录的权限。

● (可选)放行WAF回源段IP。源站服务器上已启用非华为云安全软件(如安全 狗、云锁)时,您需要在这些软件上设置放行WAF回源段IP,防止由WAF转发到 源站的正常业务流量被拦截。具体请参考通过配置ECS/ELB访问控制策略保护源 站安全。

● (可选)进行本地验证。通过本地验证确保WAF转发规则配置正常后,再修改网 站域名的DNS解析记录,防止因配置错误导致业务中断。具体请参考本地验证。

操作背景

● 如果您之前在DNS云解析服务上添加的域名主机记录的“类型”是“CNAME-将 域名指向另外一个域名”,可参照CNAME接入完成配置。

有关DNS云解析服务的记录集类型和规则的详细介绍,请参见记录集类型及配置规 则。

CNAME 接入

如果您之前在DNS云解析服务上添加的域名主机记录的“类型”是“CNAME-将域名 指向另外一个域名”,请参照以下操作步骤接入WAF。

以下操作以华为云云解析DNS为例介绍修改域名CNAME解析记录的方法。如果您的域 名的DNS解析托管在华为云云解析DNS上,您可以直接参照以下步骤进行操作;若您 使用华为云以外的DNS服务,请参考以下步骤在域名的DNS服务商的系统上进行类似 配置。

最佳实践 9 WAF 接入配置最佳实践

(55)

步骤1 获取CNAME值。

● 如果您正在添加防护域名,在配置域名基本信息后,请参考以下方式获取域名的 CNAME值。

单击“复制”,获取防护域名的CNAME值,如图9-2或图9-3所示。

9-2 域名接入(使用代理)

9-3 域名接入(未使用代理)

● 如果您已完成添加域名,请参考以下操作步骤获取域名的CNAME值。

a. 进入网站配置页面入口,如图9-4所示。

9-4 网站设置入口

b. 在目标域名所在行的“防护网站”列中,单击目标域名,进入域名基本信息 页面。

(56)

9-5 查看基本信息

c. 在“CNAME”信息行,单击 ,复制“CNAME”值。

步骤2 域名解析。

1. 进入云解析页面的入口,如图9-6所示。

9-6 云解析页面入口

2. 在目标域名所在行的“操作”列,单击“修改”,进入“修改记录集”页面。

3. 在弹出的“修改记录集”对话框中修改记录值,如图9-7所示。

– “主机记录”:在WAF中配置的域名。

– “类型”:选择“CNAME-将域名指向另外一个域名”。

– “线路类型”:全网默认。

– “TTL(秒)”:一般建议设置为5分钟,TTL值越大,则DNS记录的同步和更新 越慢。

– “值”:修改为已复制的WAF CNAME地址。

– 其他的设置保持不变。

说明

关于修改解析记录:

– 对于同一个主机记录,CNAME解析记录不能重复,您需要将已存在的解析记录的 CNAME修改为WAF CNAME地址。

– 同一解析记录下,不同DNS解析记录类型间可能存在冲突。例如,对于同一个主机记 录,CNAME记录与A记录、MX记录、TXT记录等其他记录互相冲突。在无法直接修改 记录类型的情况下,您可以先删除存在冲突的其他记录,再添加一条新的CNAME记 录。删除其他解析记录并新增CNAME解析记录的过程应尽可能在短时间内完成。如果 删除A记录后没有添加CNAME解析记录,可能导致域名无法正常解析。

域名解析类型的限制规则请参见添加记录集时,为什么会提示“与已有解析记录冲 突”?。

最佳实践 9 WAF 接入配置最佳实践

(57)

9-7 修改记录集

4. 单击“确定”,完成DNS配置,等待DNS解析记录生效。

步骤3 (可选)验证DNS配置。您可以Ping网站域名验证DNS解析是否生效。

说明

由于DNS解析记录生效需要一定时间,如果验证失败,您可以等待5分钟后重新检查。

----结束

(58)

10 独享引擎实例升级最佳实践

当您的防护网站以独享模式部署到WAF后,您可以在WAF管理控制台上通过升级操 作,将WAF独享引擎实例升级到最新版本,以获取独享引擎实例最新防护性能。为了 提升业务的高可靠性,请您参照以下操作指导完成独享引擎实例升级操作。

须知

对于可靠性要求较高的业务,建议您至少购买2个独享引擎实例部署为双活或多活高可 靠架构。如果业务部署单引擎实例,当实例对应的ECS发生故障时,WAF将不可用。

前提条件

防护网站以“独享模式”接入WAF。

单独享引擎实例节点升级

如果您的业务只部署了一个独享引擎实例,请参照以下操作升级实例。

步骤1 建议参见购买WAF独享模式购买一个新的独享引擎实例。

新购买的独享引擎实例为最新版本。当实例为最新版本时,“升级”按钮为灰化状 态。

步骤2 在原独享引擎实例所属VPC下的任一台ECS上,执行curl命令,验证业务是否正常。

● HTTP业务

curl http://WAF独享引擎实例IP:业务端口 -H "host:业务域名" -H "User- Agent: Test"

● HTTPS业务

curl https://WAF独享引擎实例IP:业务端口 -H "host:业务域名" -H "User- Agent: Test"

检查业务是否正常,如果业务正常,请执行步骤3;如果业务异常,请参照域名/IP接 入状态显示“未接入”,如何处理?和如何排查404/502/504错误排查故障后,再执 行步骤3。

最佳实践 10 独享引擎实例升级最佳实践

(59)

说明

执行curl命令的主机需要满足以下条件:

网络通信正常。

已安装curl命令。Windows操作系统的主机需要手动安装curl,其他操作系统自带curl。

步骤3 将新购买的独享引擎实例添加到ELB的后端服务器上。

以添加共享型后端服务器为例说明,添加后端服务器操作步骤如下。

1. 单击页面左上方的 ,选择“网络 > 弹性负载均衡”,进入“负载均衡器”页 面。

2. 在“负载均衡器”界面,单击需要添加后端服务器的负载均衡名称。

3. 切换到“后端服务器组”页签,单击目标后端服务器组名称。

4. 在目标后端服务器组的基本信息页面,单击“添加”。

5. 选择后端云服务器所在的子网,勾选步骤1中的后端服务器,单击“下一步”。

6. 单击“确定”,完成添加。

步骤4 参见后端服务器配置权重,在ELB管理控制台上,将原独享引擎实例的流量权重设置为

“0”。

新的请求不会转发到权重为0的后端。

步骤5 待业务流量降下来后,删除原独享引擎实例。

查看独享实例的云监控信息,“新建连接数”较小时(例如,小于5),说明业务流量 已经降下来。

1. 进入独享引擎页面,如图10-1所示。

10-1 进入独享引擎页面

2. 在目标实例所在行的“操作”列,单击“删除”。

3. 在弹出的提示框中,单击“确定”。

删除实例后,该实例上的资源将被释放且不可恢复。

----结束

多独享引擎实例节点升级

如果您的业务部署了多个独享引擎实例,请参照以下操作升级实例。

步骤1 参见后端服务器配置权重,在ELB管理控制台上,记录任一独享引擎实例的流量权重 后,将该实例的流量权重设置为“0”。

(60)

新的请求不会转发到权重为0的后端。

步骤2 待业务流量降下来后,升级独享引擎实例版本。

查看独享实例的云监控信息,“新建连接数”较小时(例如,小于5),说明业务流量 已经降下来。

1. 进入独享引擎页面,如图10-2所示。

10-2 进入独享引擎页面

2. 在目标实例所在行的“操作”列,单击“升级”。

3. 在弹出的对话框中,确认并勾选业务已满足提示框中所描述的相关配置后,单击

“确定”,升级实例版本。

升级大约需要5分钟。

10-3 升级独享引擎实例版本

步骤3 在独享引擎实例所属VPC下的任一台ECS上,执行curl命令,验证业务是否正常。

● HTTP业务

curl http://WAF独享引擎实例IP:业务端口 -H "host:业务域名" -H "User- Agent: Test"

最佳实践 10 独享引擎实例升级最佳实践

(61)

● HTTPS业务

curl https://WAF独享引擎实例IP:业务端口 -H "host:业务域名" -H "User- Agent: Test"

检查业务是否正常,如果业务正常,请执行步骤4;如果业务异常,请参照域名/IP接 入状态显示“未接入”,如何处理?和如何排查404/502/504错误排查故障后,再执 行步骤4。

说明

执行curl命令的主机需要满足以下条件:

网络通信正常。

已安装curl命令。Windows操作系统的主机需要手动安装curl,其他操作系统自带curl。

步骤4 参见后端服务器配置权重,在ELB管理控制台上,将引擎实例的流量权重从0调整为步 骤1中记录的原值。

步骤5 参照步骤1~步骤4,分别对其他独享引擎实例节点执行升级操作。

----结束

(62)

11 获取客户端真实 IP

客户端IP指的是访问者(用户设备)的IP地址。在Web应用开发中,通常需要获取客户 端真实的IP地址。例如,投票系统为了防止刷票,需要通过获取客户端真实IP地址,限 制每个客户端IP地址只能投票一次。

当您的网站已接入Web应用防火墙(Web Application Firewall,简称WAF)进行安全 防护后,WAF作为一个反向代理存在于客户端和服务器之间,服务器的真实IP被隐藏 起来,Web访问者只能看到WAF的IP地址。此时,您可直接通过WAF获取客户端的真 实IP,也可以通过配置网站服务器获取客户端的真实IP。

本章节介绍了通过WAF直接获取真实IP的方法,以及不同类型的Web应用服务器(包 括Tomcat、Apache、Nginx、IIS 6和IIS 7)如何进行相关设置,以获取客户端的真实 IP。

背景信息

通常情况下,网站访问并不是简单地从用户的浏览器直达服务器,中间可能部署有 CDN、WAF、高防等代理服务器(架构为“用户 > CDN/WAF/高防等代理服务 > 源站 服务器”)。以WAF为例,部署示意图如图11-1所示。

11-1 部署 WAF 原理图

最佳实践 11 获取客户端真实 IP

數據

表 2-1 推荐配置的最低 TLS 版本说明 场景 最低TLS版本(推 荐) 防护效果 网站安全性能要求很高 (例如,银行金融、证 券、电子商务等有重要商 业信息和重要数据的行 业) TLS v1.2 WAF将自动拦截TLS v1.0和TLSv1.1协议的访问请求。 网站安全性能要求一般 (例如,中小企业门户网 站) TLS v1.1 WAF将自动拦截TLS1.0协议的访问请求。 客户端APP无安全性要 求,可以正常访问网站 TLS v1.0 所有的TLS协议都可以访问网站。 推荐配置的加密套件说明 WAF
表 4-1 JS 脚本反爬虫防护规则参数说明 参数 参数说明 示例 规则名称 自定义规则名称。 wafjs 路径 设置JS脚本反爬虫的URL 链接中的路径(不包含域 名)。 URL用来定义网页的地 址。基本的URL格式如 下: 协议名://域名或IP地址[:端 口号]/[路径名/…/文件 名]。 例如,URL为“http:// www.example.com/ admin”,则“路径”设 置为“/admin”。 说明 ● 该路径不支持正则。 ● 路径里不能含有连续的 多条斜线的配置,如 “///admin”
表 14-1 WAF 各模式配置说明 部署模式 配置说明 云模式 1. 已购买WAF云模式。 2. 已将域名信息(源站服务器的IP、端口等信 息)添加到WAF云模式。 3

參考文獻

相關文件

[r]

Wallace (1989), "National price levels, purchasing power parity, and cointegration: a test of four high inflation economics," Journal of International Money and Finance,

 Request.Cookies[ "Cookie 名稱" ].Value –取得使用者所傳送的 Cookie 內容. 

share how these companies "help" their how these companies "help" their lives / help raising people's living. lives / help raising people's living

Gershman, "Leveraging Behavioral Patterns of Mobile Applications for Personalized Spoken Language Understanding," in Proc.. ▪ Task: user

[r]

浩南挑了一張班遊的照片,想自行加工美化送給老師。他將長 14 公 分、寬 12 公分的照片周圍貼上等寬的花邊膠帶。若裝飾後中間剩下 的照片區塊面積為 80 平方公分,試問花邊膠帶的寬度為

Peppard, J., “Customer Relationship Management (CRM) in Financial Services”, European Management Journal, Vol. H., "An Empirical Investigation of the Factors Influencing the