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

简介: 一、概述 阿里云云盾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天前
|
JavaScript 前端开发
基于 Node.js 环境,使用内置 http 模块,创建 Web 服务程序
基于 Node.js 环境,使用内置 http 模块,创建 Web 服务程序
|
5天前
|
弹性计算 运维 负载均衡
【阿里云弹性计算】阿里云ECS在金融科技中的应用案例:高性能交易系统的构建
【5月更文挑战第27天】阿里云ECS助力某证券公司构建高性能交易系统,满足高并发、高可用和弹性扩展需求。ECS凭借最新处理器技术、高速内存实现高性能计算;支持多地域、多可用区部署保证高可用性;弹性伸缩特性适应业务波动,降低运维成本。通过分布式架构和负载均衡技术,实现交易请求高效处理,确保系统稳定运行。案例证明,阿里云ECS是金融科技领域构建高性能交易系统的理想选择。
25 1
|
5天前
|
SQL 监控 安全
【阿里云云原生专栏】云原生安全体系构建:阿里云云防火墙与WAF的应用
【5月更文挑战第27天】阿里云云防火墙和WAF是构建云原生安全体系的关键产品,提供网络、主机和Web应用多维度防护。云防火墙采用分布式架构抵御网络攻击,确保应用安全稳定;WAF专注Web应用安全,防止SQL注入、XSS和DDoS等威胁。简单部署配置,结合使用可实现全面安全防护,提升企业云上应用安全性,保障业务安全运行。未来,阿里云将持续强化云原生安全建设。
120 1
|
6天前
|
弹性计算 Cloud Native 安全
【阿里云云原生专栏】云原生与芬克斯:阿里云函数计算在金融行业的应用案例
【5月更文挑战第26天】阿里云函数计算在金融行业数字化转型中发挥关键作用,提供高可用、安全、灵活且成本效益的解决方案。通过事件驱动架构和弹性伸缩,适应业务波动,确保服务连续性。在实时风控系统案例中,函数计算实现低延迟评估,提升风控效率。此技术助力金融企业快速创新,增强市场竞争力。
136 0
|
7天前
|
弹性计算 监控 数据库
【阿里云弹性计算】企业级应用上云实战:基于阿里云 ECS 的 ERP 系统迁移案例
【5月更文挑战第25天】制造企业将面临资源不足、维护成本高和数据安全问题的ERP系统迁移到阿里云ECS,实现业务上云。通过数据迁移、应用部署、网络配置和性能优化等步骤,企业享受到弹性计算资源、高可靠性和数据安全优势,降低维护成本。阿里云提供24小时支持,助力企业数字化转型。此案例展示企业级应用上云的可行性,鼓励更多企业借助云计算实现创新发展。
21 0
|
10天前
|
网络协议 开发者
深入理解HTTP/2:提升Web性能的秘密 - 蓝易云
理解并利用HTTP/2的这些特性,可以显著提高Web应用的性能。同时,由于HTTP/2是完全兼容HTTP/1.1的,所以开发者可以平滑地过渡到这个新协议,无需担心兼容性问题。
37 0
|
10天前
|
弹性计算 关系型数据库 数据库
利用阿里云进行性能优化:实践案例分享
在开发在线教育平台过程中,我们遇到了由于用户访问量增加而导致的性能瓶颈问题。通过使用阿里云的多种服务,包括RDS数据库、ECS弹性扩展、SLB负载均衡、OSS存储和CDN加速,我们对数据库、应用服务器和静态资源加载进行了全面优化。优化后的系统性能显著提升,数据库查询速度提高了60%,服务器负载下降了40%,静态资源加载时间减少了70%,从而极大改善了用户体验。本文详细介绍了问题分析、具体解决方案及其实施效果,旨在为其他开发者提供有价值的参考。
89 3
|
11天前
|
网络协议 数据格式 Python
Python进阶---HTTP协议和Web服务器
Python进阶---HTTP协议和Web服务器
19 4
http协议 报文 给你讲明白咯,web开发基础
http协议 报文 给你讲明白咯,web开发基础
|
16天前
|
JSON JavaScript API
使用 Node.js 开发一个简单的 web 服务器响应 HTTP post 请求
使用 Node.js 开发一个简单的 web 服务器响应 HTTP post 请求
38 1