Web应用系统加入WAF故障诊断研究

Web应用系统加入WAF故障诊断研究

摘要:为了针对性地保护Web应用系统,高校一般都采用了Web应用防火墙(Webapplicationfirewall,WAF)技术。在安全防护实施的过程中,既要为业务和逻辑各不相同的应用系统制定符合其运行需求的安全防护方案,又要在应用系统出现使用功能故障时,快速定位原因并解决。才能达到保障高校Web应用系统安全稳定运行的目标。本文结合高校实际Web应用防护场景,提出了Web应用系统加入WAF故障诊断分析法,能在被防护的Web应用系统出现功能异常的情况下,快速定位异常的原因并解决。保障应用系统能正常提供服务,同时又使安全隐患最小化。

关键词:Web应用安全;故障诊断;WAF

随着信息化建设的不断推进,高校建立了越来越多的Web应用系统,例如:融合门户、网上服务大厅、轻MIS平台等,来提供不同的业务服务。在运行和使用过程中,这些应用系统都会或多或少的暴露出一些安全隐患,为防止这些隐患带来安全事件,高校不断加强Web安全防护措施。例如采用WAF技术,保护Web应用程序、APIs和移动应用程序免受各种攻击威胁。然而安全防护不能影响Web服务的正常运行。在实施安全防护的过程中,面对各种各样的Web应用服务故障,需要根据实际情况具体分析和解决。本文基于高校Web应用防护场景和解决Web应用系统故障的经验,提出了Web应用系统加入WAF故障诊断分析法。用于在Web应用系统加入WAF之后出现故障时的诊断分析。经过实际验证,能行之有效的定位故障原因并解决。

1HTTP协议

Web使用超文本传输协议(HyperTextTransferProtocol,HTTP)作为规范,完成从请求访问文本或图像等资源的客户端到提供资源响应的服务器端之间的通信[1]。HTTP通信时,除客户端和服务器以外,还有一些用于通信数据转发的应用程序,例如、网关和隧道,他们可以配合服务器工作。这些应用程序和服务器将请求转发给通信线路上的下一站服务器,并且能接收从那台服务器发送的响应再转发给客户端[2]。用于HTTP协议交互的信息被称为HTTP报文,来自客户端的HTTP报文叫作请求报文,来自服务器端的报文叫作响应报文。请求报文包含请求行、请求头部和请求体,服务器能读取客户端发送的HTTP值,比如表单、URL、Cookie传递过来的参数。服务器响应报文包含响应行、响应头和响应体,返回字符串是与HTTP请求报文相关的内容。

2安全策略制定原则

为了达到保护Web应用系统安全的目标,安全策略的制定必须遵守基本的原则。最小化原则。采用WAF默认安全策略,满足大多数应用系统的安全使用需求,同时不信任所有来源于用户的输入信息。在WAF上设置细粒度访问控制,限制受保护敏感信息的访问范围[3]。安全隔离原则。采用WAF对Web应用中心进行访问隔离。通过设置防火墙规则,限制校内应用系统IP的访问权限,使用户的所有请求都需要经过WAF,而不能直接对Web数据中心进行访问。管理员对应用系统的运行维护需要通过VPN/堡垒机等安全审计系统[4]。

3WAF工作原理

WAF设备部署在互联网(Internet)与Web数据中心(Webserver)之间,对所有经过的应用流量进行深度检测,在网络层和应用层实现入侵防护,保障高校Web应用程序、APIs和移动应用程序安全运行。WAF一般采用反向模式,即WAFWeb服务器处理客户端的访问请求,检查这些请求是否具有正确的格式或遵从HTTP请求规范,仅允许合法的请求通过。而那些已知的恶意请求如非法植入到HTTP消息头、表单或URL中的脚本将被阻止。最常见的攻击如SQL注入攻击、跨站点脚本攻击、缓冲区溢出攻击、恶意浏览等在到达Web服务器之前将被WAF阻断[5]。WAF不改变客户端和Web服务器之间的正常请求和响应。

4Web应用系统加入

WAF之后故障诊断和解决在对Web应用启用安全防护之后,经常出现部分功能使用异常的情况。Web应用提供的业务关乎师生日常的使用,一旦功能故障,就需要马上定位原因,并进行相应的处理,尽快恢复使用。但是,Web应用的故障多种多样,不同的故障有不同的表现形式。为此,安全运维人员需要掌握WAF部署拓扑原理和Web应用测试方法,并具有较强的逻辑思维,故障分析时要对各种现象灵活运用排除法、对比法、替换法等方法,找到原因,并快速排除故障。(1)排除法。该方法依据所观察到的故障现象,全面枚举出所有可能的故障点,并逐个分析和排除。排除时,遵循由简到繁的原则。例如,Web应用故障,首先想到的原因就是被WAF拦截了。然而,实际存在三种可能的情况:1)Web应用代码编写不符合HTTP协议规范或存在安全漏洞,导致被WAF拦截,这种情况,在WAF上能查到拦截日志,为了保证应用系统的正常使用,需要根据WAF拦截日志,结合应用系统的运行需求进行安全策略的调整;2)Web应用系统自身故障,导致服务异常,需要应用系统管理员处理并恢复;3)WAF设置导致客户端和Web服务器之间通信异常,需要进一步排查具体原因。(2)对比法。该方法是指同一个客户端,采用不同的访问方式对Web应用系统执行相同的操作,从而确定Web服务故障的原因是否为WAF导致。在通过WAF反向访问Web服务和不通过WAF反向直接访问Web服务两种方式下,进行同样的访问操作。即,对比通过和不通过两种情况下,Web服务的功能是否都异常。如果在两种情况下,服务都异常说明不是WAF导致故障,而是Web服务本身故障。(3)替换法。该方法是用本地部署的反向系统代替WAF反向,通过对配置的不同参数进行调整,找出故障原因。如果在WAF上查不到拦截日志,并且绕过WAF之后应用系统功能也是正常的,则不能确定是否为WAF导致故障,需要进一步确定原因,此时,可以通过本地部署的反向系统代替WAF系统进行测试。看是否由于反向机制导致Web服务故障。在实际工作中,可根据故障现象灵活运用排除法、对比法、替换法等方法进行故障诊断分析。如果确定是因为WAF导致故障,可通过调整WAF配置或安全防护策略来解决,如果确定为Web应用系统自身故障,需要应用系统管理员解决。如果解决过程持续较长时间,可在WAF上将该服务重定向到指定页面,提示用户正在修复。

5Web应用故障诊断实例

对比Web应用在经过WAF和绕过WAF两种方式下对同一个HTTP请求和响应的状态及参数值的情况,找出经过WAF之后Web应用故障的原因。例如,校内新上线的智慧通行管理平台,按照安全策略,用户需要通过WAF进行访问。该平台有一个功能是对人员进行访问授权,即先选中要授权的人员,然后进行授权操作,经过多次操作之后,都发现显示授权进度为0,即授权失败。而修改本机hosts文件,将域名指向到Web服务器的真实IP,即不经过WAF进行访问操作,授权进度为100%,授权可以正常提交。如下图2所示:图2智慧通行管理平台通过WAF和绕过WAF授权进度对比首先怀疑该功能被WAF拦截,但是在WAF上对Web应用的域名和访问的客户端IP进行查询,没有查到拦截日志,该功能故障是否真的与WAF无关呢?(1)通过在WAF上和在客户端分别抓包[6],对比用户访问该功能的请求和Web服务器的响应情况为:1)通过WAF进行授权访问,异常,客户端不断重复发送同一个请求。绕过WAF进行授权访问,正常,客户端只发送一个请求[7];2)经过WAF访问successNum参数的值为0。绕过WAF访问successNum参数的值为2。如图3所示:(2)为了消除不同WAF产品的差异,分别在梭子鱼WAF和绿盟WAF上配置该应用,并分别通过两种WAF执行授权操作,结果授权操作都失败。为了消除WAF策略的影响,在WAF上取消对该站点的防护策略,授权操作失败的现象依然没有改观。(3)由于WAF采用反向模式,为了进行对比,将该应用部署在本地搭建的Nginx反向测试系统上[8],用户通过本地反向进行授权操作,发现授权进度依然为零。对该站点的反向配置进行修改,分别注释以下配置项之后进行授权操作:proxy_set_headerHost$host:server_port;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;发现注释proxy_set_headerHost$host:server_port[9]这一项之后进行授权访问,授权进度为100%。(4)找出授权进度为0的原因为:Web服务器需要读取带有端口的host字段,但是WAF配置用HTTP默认的80端口隐藏Web服务器的9000端口,转发给Web服务器的请求里面不带端口,导致授权服务异常。(5)在WAF上配置Web服务器9000端口,转发给Web服务器的请求里面带端口,通过WAF授权操作成功。

6结束语

高校Web应用系统的多样性,为安全防护的实施增加了难度。在应用系统加入安全防护系统之后,经常出现各种各样的应用故障,快速定位故障原因并解决,才能保障应用服务安全稳定运行。本文提出的故障诊断方法在高校Web应用防护场景中经过使用验证,但是仍需要在实际使用中不断改进和完善。

作者:王乐 单位:东北师范大学信息化管理与规划办公室

精选范文