阿里云Web应用防火墙接入案例分享之http2.0

本文涉及的产品
Web应用防火墙 3.0,每月20元额度 3个月
简介: 一、概述 阿里云云盾Web应用防火墙(Web Application Firewall, 简称 WAF)是一款网络安全产品,基于云安全大数据能力,用于防御SQL注入、XSS跨站脚本、常见Web服务器插件漏洞、木马上传、非授权核心资源访问等OWASP常见攻击,并过滤海量恶意CC攻击;在本篇文章中,笔者通过两个http2.0业务的接入案例分享,给后续的业务接入提供参考借鉴的地方。

一、概述

  阿里云云盾Web应用防火墙(Web Application Firewall, 简称 WAF)是一款网络安全产品,基于云安全大数据能力,用于防御SQL注入、XSS跨站脚本、常见Web服务器插件漏洞、木马上传、非授权核心资源访问等OWASP常见攻击,并过滤海量恶意CC攻击;在本篇文章中,笔者通过两个http2.0业务的接入案例分享,给您后续的业务接入提供参考借鉴的地方。

二、接入案例

2.1 案例1-APP登陆报错

2.1.1 案例背景

  该业务属于一款专注于学习技术与教育大数据的APP,经常会遇到小流量CC攻击和网络爬虫的数据爬取,导致业务上受到了较为严重的影响,因此接入WAF进行防护。

2.1.2 问题现象

  业务APP通过域名进行业务访问,将域名DNS修改为WAF的cname后,正常用户登录时会出现“服务器错误”的提示,将业务域名切换为源站服务器后问题消失,图1所示:

image


图一

2.1.3 排查过程

  通过WAF自身提供的日志服务查询发现APP发起的第一个版本比对请求产生了400错误码,一般400错误码主要产生的原因有两个:http请求头过大或者请求数据不全;通过构造相关环境,针对APP客户端的请求数据进行抓包,从抓包中发现客户端完成证书和秘钥协商后主动关闭了连接,由于客户端主动关闭连接导致产生400错误码;
  同时在正常访问时抓包分析发现客户端与服务器之间协商的交互协议为http2.0,于是将WAF的http2.0协议支持开启后观察,APP也能够正常通过WAF访问,将相关情况反馈给客户端开发后确认,由于APP底层使用了某开源框架, 该框架默认情况下启用http2.0进行网络数据交互,在下一版本会进行升级规避该问题。

2.1.4 案例总结

  在业务接入WAF的过程中,我们需要充分了解业务使用的协议情况,配置好WAF后可以先进行本地验证测试,测试通过后再进行业务切换;在业务出现异常时,可通过WAF自身提供的日志服务进行日志排查,快速定位问题原因和现象。

2.2 案例2-部分浏览器访问网站异常

2.2.1 案例背景

  该业务网站是一款用于渠道管理的后台系统,由于近期需要进行等保测评,从网站安全和合规角度出发,将网站接入WAF进行防护。

2.2.2 问题现象

  网站接入WAF访问后,发现部分用户使用chrome和firefox浏览器访问时无法打开网站,但是IE的用户访问没有异常。

2.2.3 排查过程

  首先通过本地chrome浏览器进行调试访问,发现浏览器https的请求出现[ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY]的错误提示, 如图2所示:

image


图二


  同时,针对错误提示环境下的客户端抓包分析,在server hello的回应报文中加密套件协商为TLS_RSA_WITH_3DES_EDE_CBC_SHA(0x000a),同时采用了http2的交互协议,如图3所示:

image


  由于http2在协议启用的情况下只能使用TLS1.2+,而TLS1.3还处于起草阶段,在本案例中协商为TLS1.2,而TLS_RSA_WITH_3DES_EDE_CBC_SHA恰好落在TLS1.2的黑名单列表中,所以导致了浏览器访问交互失败,如图4所示:

image


图四


  那同样是浏览器访问,为什么会有部分浏览器能够正常打开网站呢?笔者又通过不同浏览器的抓包,发现每个浏览器发起client hello请求时的可协商加密套件列表是不一样的,加密套件的协商过程是客户端与服务端可支持加密套件列表的取交集过程,客户端与服务端取交集后按照服务器端配置的加密套件列表返回第一个(tengine开启了ssl_prefer_server_ciphers选项),而在本次问题复现场景中,服务端返回的加密套件为[TLS_RSA_WITH_3DES_EDE_CBC_SHA]导致协商失败。

2.2.4 案例总结

  在本案例中从业务角度出发服务端主动开启了http2.0的支持,但是由于服务端的相关配置问题,导致了本次问题的发生;所以在出现业务接入产品后出现异常,需要进行快速回滚恢复业务,同时在问题复现的基础上进行细节排查,找出问题本质原因进行解决。

三、结束语

  HTTP 2.0作为HTTP协议的的第二个主要版本,较之1.1相比能够最小化网络延迟,提升网络速度,优化用户的网络使用体验,将会越来越多的使用于主流业务交互;云WAF作为安全防护类的产品,在当前主要采用反向代理的模式下,由于流量都需要经过WAF产品进行转发,或多或少都会遇到业务兼容性问题,所以业务方在接入过程中先了解业务架构和应用协议情况,尽量先进行本地灰度测试,验证通过后再做大规模迁移,保证业务接入顺利;
  在遇到紧急问题时,您可以及时联系WAF产品技术支持进行协助:https://help.aliyun.com/knowledge_detail/42193.html?spm=a2c4g.11186631.2.10.76f64a58lWsQXD

参考链接:
http://http2.github.io/http2-spec/#BadCipherSuites
http://tengine.taobao.org/documentation.html

相关文章
|
1月前
|
XML 网络协议 Java
JavaWeb -- HTTP -- WEB服务器TOMCAT
JavaWeb -- HTTP -- WEB服务器TOMCAT
|
21天前
|
安全 API 持续交付
阿里云云效产品使用问题之如何从流水线访问内网平台的HTTP接口
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
23天前
|
缓存 网络协议 安全
应用层---Web和HTTP
应用层---Web和HTTP
18 3
应用层---Web和HTTP
|
21天前
|
监控 Serverless 持续交付
阿里云云效产品使用问题之如何让流水线支持构建 flutter web 应用到 OSS
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3天前
|
安全 API 开发者
|
6天前
|
网络协议 安全 Python
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
|
22天前
|
机器学习/深度学习 运维 网络协议
函数计算产品使用问题之创建一个http服务,可以通过公网来访问,是否只能选择web函数
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
22天前
|
前端开发 计算机视觉
视觉智能开放平台操作报错合集之人脸对比1:1,采用web前端直接调用,使用了base64处理图片,提示http错误码414,该如何处理
在使用视觉智能开放平台时,可能会遇到各种错误和问题。虽然具体的错误代码和消息会因平台而异,但以下是一些常见错误类型及其可能的原因和解决策略的概述,包括但不限于:1. 认证错误、2. 请求参数错误、3. 资源超限、4. 图像质量问题、5. 服务不可用、6. 模型不支持的场景、7. 网络连接问题,这有助于快速定位和解决问题。
|
2月前
|
JavaScript 前端开发
基于 Node.js 环境,使用内置 http 模块,创建 Web 服务程序
基于 Node.js 环境,使用内置 http 模块,创建 Web 服务程序
阿里云web应用
设备端将图片编码为base64发送至物联网平台,在web界面配置图片选择物联网平台配置的数据(base64),实现设备向云平台的图片的上传,以及在web界面上显示图片。