Windows Networking 6: 关于标准的一些事,WAF和IIS服务器HTTPS工作异常问题

简介:

IIS Web Service 也算是一个主流的HTTP服务软件,有不少MS系的应用在IIS上运行、也有用户使用IIS提供的平台运行他们.Net Framework开发的应用程序。当然,为了网站安全,不少用户选择在IIS server前放一层WAF避免攻击。而这次,我们的一个用户遇到了一个有意思的问题,

问题现象

IIS Web service,上面运行了许多网站应用程序,以SNI区分。在IIS服务器之前放置一层WAF回源。用户反馈,有个IIS Web site通过WAF回源不成功。

现象主要是 在访问网站的时候,浏览器一直在加载,返回502/504等错误码,同时伴有499错误。

排查过程

由于IIS Web service对于我们来说基本上是一个黑盒,且在问题发生的时候基本没有任何错误日志和访问日志,我们基本上采用大胆猜测小心求证的方案来一步步定位问题。作为一整套系统,问题无非出在这几个方面,

网络问题

所有涉及到的IP及其对应端口我们都测试了联通性,telnet/tcpping等都显示连接三次握手正常。

IIS服务器本身问题

通过对IIS 服务器直接访问,我们基本排除服务器处理问题。(以下是我们测试主机的访问记录)

curl -v https://hello.test.domain:8443/ -o /dev/null -s --trace-time --resolve hello.test.domain:8443:ip.add.rss.227

image

WAF网站配置问题

从其它相同配置的网站来看,WAF的配置并没有什么特别之处,即便跟其它正常网站的配置完全一致,问题依旧存在。排查WAF的日志,基本把问题又指回了IIS 服务器,因为日志明确的记录了120s超时的情况,

image

抓包分析

矛盾点出现在WAF和IIS 服务器之间,因此我们通过抓包来分析这两个服务之间的交互情况。可惜,我们第一次抓包的结果无法解密,也就无法完全获知WAF和IIS 服务器的交互内容。为此,我们做了几个尝试,

  1. Windows上导出Certificate和Private Key为PFX,并设置密码。配置在Wireshark的RSA Key中。
  2. Windows IIS 服务器上 禁用Diffie-Hellman加密算法,并重启。
  3. 客户端上配置SSLKEYLOGFILE="C:\temp\sslkey.log",并在客户端的Wireshark中指定。

具体方法网上都有,不一一列举。最终,我们抓到了正常和异常的HTTPS数据流,通过解密后的数据包如下,

正常:客户端直接连接IIS
image

异常:客户端通过WAF连接IIS
image

很容易看到问题在于服务器在一个SSL tunnel中给WAF 发送 HELLO REQUEST,但WAF没有任何回复导致IIS 一直等待在 RE-NEGOTIATE阶段。而正常的情况下,客户端能够正确的处理这个请求,发送CLIENT HELLO。

Review TLS的RFC规范后,我们发现RFC中并未对客户端接收到 HELLO REQUEST 的行为做明确的规定,

https://tools.ietf.org/html/rfc5246

image

在Windows Server 2008 R2的IIS实现中,IIS一直等待响应也未必是一个合适的行为。

解决方案

了解了问题发生的原因,HELLO REQUEST并不一定是必须的,具体我们通过IIS的帮助文档,定位相应的配置Ignore避免了IIS发送HELLO REQUEST,

image

目录
相关文章
|
6天前
|
存储 Linux 网络安全
都2023年了还不了解?使用FileZilla搭建信息文件服务器(Windows7)
都2023年了还不了解?使用FileZilla搭建信息文件服务器(Windows7)
|
6天前
|
安全 网络协议 网络安全
在Windows7搭建FTP服务器详细教学
在Windows7搭建FTP服务器详细教学
|
6天前
|
安全 Linux 网络安全
Windows搭建Emby媒体库服务器,无公网IP远程访问本地影音文件
Windows搭建Emby媒体库服务器,无公网IP远程访问本地影音文件
18 0
|
6天前
|
安全 Linux 数据库
windows服务器 cwRsyncServer 搭建步骤
windows服务器 cwRsyncServer 搭建步骤
22 0
windows服务器 cwRsyncServer 搭建步骤
|
6天前
|
弹性计算 运维 监控
解密阿里云弹性计算:探索云服务器ECS的核心功能
阿里云ECS是核心计算服务,提供弹性云服务器资源,支持实例按需配置、集群管理和监控,集成安全防护,确保服务稳定、安全,助力高效业务运营。
165 0
|
19小时前
|
弹性计算
阿里云ECS的使用心得
本文主要讲述了我是如何了解到ECS,使用ECS的一些经验,以及自己的感悟心得
|
1天前
|
存储 弹性计算 监控
【阿里云弹性计算】深入阿里云ECS配置选择:CPU、内存与存储的最优搭配策略
【5月更文挑战第20天】阿里云ECS提供多种实例类型满足不同需求,如通用型、计算型、内存型等。选择CPU时,通用应用可选1-2核,计算密集型应用推荐4核以上。内存选择要考虑应用类型,内存密集型至少4GB起。存储方面,系统盘和数据盘容量依据应用和数据量决定,高性能应用可选SSD或高效云盘。结合业务特点和预算制定配置方案,并通过监控应用性能适时调整,确保资源最优利用。示例代码展示了使用阿里云CLI创建ECS实例的过程。
27 5
|
1天前
|
存储 弹性计算 监控
【阿里云弹性计算】阿里云ECS全面解析:弹性计算服务的核心优势与应用场景
【5月更文挑战第20天】阿里云ECS是提供可伸缩计算能力的云服务,支持多种规格实例,满足不同需求。其核心优势包括灵活性、高性能、高可用性、安全性和易用性。适用场景包括网站托管、大数据处理、游戏多媒体应用及测试开发环境。通过Python示例代码展示了如何创建ECS实例,助力企业专注业务发展,简化基础设施管理。
23 5
|
1天前
|
弹性计算
阿里云ECS使用体验
在申请高校学生免费体验阿里云ECS云服务器后的一些使用体验和感受。
|
4天前
|
弹性计算 运维 安全
阿里云ecs使用体验
整了台服务器部署项目上线