随着互联网的进一步发展,Web应用防火墙和云防火墙步入大家的视野。防火墙针对web应用拥有很好的保护作用,由硬件和软件组合,在内部网和外部网、专用网和公共网之间形成一道强有力的保护屏障,使用者可配置不同保护级别的防火墙,高级别的保护会阻止运营一些服务。众所周知,防火墙是一种建立在现代通信网络技术和信息安全技术基础上的应用性安全技术、隔离技术,用来加固网络保障网络安全的。那么,我们如何理解这两种防火墙,他们有什么区别?
一、web防火墙(WAF)
Web应用防火墙,属于硬件级别防火墙(Web Application Firewall,简称WAF)主要用于防御针对网络应用层的攻击,像SQL注入、跨站脚本攻击、参数篡改、应用平台漏洞攻击、拒绝服务攻击等
应用场景
防恶意攻击:防止竞争对手恶意攻击或黑客敲诈勒索,导致的请求超时,瞬断,不稳定等问题。
防数据泄露:防止黑客通过SQL注入、网页木马等攻击手段入侵网站数据库,获取核心业务数据。
防网页篡改:防止黑客通过扫描系统漏洞,植入木马后修改页面内容或发布不良信息,影响网站形象。
安全合规要求:符合相关法律法规要求,满足信息系统安全等级保护(等保测评)需求。
Web应用防火墙可以防止Web应用免受各种常见攻击,比如SQL注入,跨站脚本漏洞(XSS)等。WAF也能够监测并过滤掉某些可能让应用遭受DOS(拒绝服务)攻击的流量。WAF会在HTTP流量抵达应用服务器之前检测可疑访问,同时,它们也能防止从Web应用获取某些未经授权的数据。
1. WAF预防的攻击类型
开放Web应用安全项目(OWASP)所例举的攻击类型,都在WAF实施时考虑的范围内,其中几种比较常见的攻击类型如下:
1.1 跨站脚本漏洞(XSS)
攻击者通过往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入在Web页面里的Script代码会被执行,从而达到恶意攻击用户的目的。
XSS大概分为两类:
- 反射型攻击。恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击。
- 存储型攻击。恶意代码被保存到目标网站的服务器中,这种攻击具有较强的稳定性和持久性,比较常见的场景是在博客,论坛等社交网站上。
XSS攻击能够:
- 获取用户Cookie,将用户Cookie发送回黑客服务器。
- 获取用户的非公开数据,比如邮件、客户资料、联系人等。
1.2 SQL注入
通过在目标数据库执行可疑SQL代码,以达到控制Web应用数据库服务器或者获取非法数据的目的。SQL注入攻击可以用来未经授权访问用户的敏感数据,比如客户信息、个人数据、商业机密、知识产权等。
SQL注入攻击是最古老,最流行,最危险的Web应用程序漏洞之一。比如查询?id=1,如果不对输入的id值1做检查,可以被注入?id=1 or 1=1从而得到所有数据。
SQL注入的产生原因通常表现在以下几方面:
- 不当的类型处理。
- 不安全的数据库配置。
- 不合理的查询集处理。
- 不当的错误处理。
- 转义字符处理不合适。
- 多个提交处理不当。
1.3 Cookie篡改
Cookie篡改是攻击者通过修改用户Cookie获得用户未授权信息,进而盗用身份的过程。攻击者可能使用此信息打开新账号或者获取用户已存在账号的访问权限。
很多Web应用都会使用Cookie保存用户的Session信息,当用户使用Cookie访问该应用时,Web应用能够识别用户身份,监控用户行为并提供个性化的服务。而如果Cookie的使用缺乏安全机制的话,也很容易被人篡改和盗用,并被攻击者用来获取用户的隐私信息。
1.4 未经验证的输入
Web应用往往会依据HTTP的输入来触发相应的执行逻辑。而攻击者则很容易对HTTP的任何部分做篡改,比如URL地址、URL请求参数、HTTP头、Cookies等,以达到攻破Web应用安全策略的目的。
1.5 第七层Dos攻击
我们将在下文中详细介绍WAF针对第七层(应用层)的Dos攻击防护。
1.6 网页信息检索(Web scraping)
通过一些工具来获取网页内容,并从中提炼出有用的网站数据信息。
2. WAF部署方式
WAF可以按照下面几种方式进行部署:
2.1 透明代理模式
WAF代理了WEB客户端和服务器之间的会话,并对客户端和server端都透明。从WEB客户端的角度看,WEB客户端仍然是直接访问服务器,感知不到WAF的存在。
这种部署模式的优点是对网络的改动最小,通过WAF的硬件Bypass功能在设备出现故障或者掉电时可以不影响原有网络流量,只是WAF自身功能失效。
缺点是网络的所有流量都经过WAF,对WAF的处理性能要求高。采用该工作模式无法实现负载均衡功能。
2.2 反向代理模式
反向代理模式是指将真实服务器的地址映射到反向代理服务器上,此时代理服务器对外就表现为一个真实服务器。当代理服务器收到HTTP的请求报文后,将该请求转发给其对应的真实服务器。后台服务器接收到请求后将响应先发送给WAF设备,由WAF设备再将应答发送给客户端。
这种部署模式需要对网络进行改动,配置相对复杂,除了要配置WAF设备自身的地址和路由外,还需要在WAF上配置后台真实WEB服务器的地址和虚地址的映射关系。
优点则是可以在WAF上实现负载均衡。
2.3 路由代理模式
它与网桥透明代理的唯一区别就是该代理工作在路由转发模式而非网桥模式,其它工作原理都一样。由于工作在路由(网关)模式因此需要为WAF的转发接口配置IP地址以及路由。
这种部署模式需要对网络进行简单改动,要设置该设备内网口和外网口的IP地址以及对应的路由。工作在路由代理模式时,可以直接作为WEB服务器的网关,但是存在单点故障问题,同时也要负责转发所有的流量。该种工作模式也不支持服务器负载均衡功能。
3. WAF安全模式
WAF可以采用白名单和黑名单两种安全模式,也可以两者相结合。
在白名单安全模式下,所有不在名单中的请求类型都会被拒绝;而黑名单正好相反,只会拒绝在黑名单上的请求类型,其它通通放行。
对于新的、还不为开发人员所知晓的攻击类型,白名单可以很好地工作。
黑名单相对来说更容易实现,但问题是维护成本高,因为很多时候我们并不能够枚举所有的攻击类型。
4. 开放Web应用安全项目(OWASP)
OWASP是一个开源的、非盈利的全球性安全组织,致力于Web应用的安全研究。其使命是使Web应用更加安全,使企业和组织能够对安全风险作出更清晰的决策。
OWASP曾经例举了10大常见攻击手段:
1)注入
攻击者把包含一段指令的数据发给应用,应用会当做指令执行。比如上面提到的SQL注入。
2)失效的身份认证和会话管理
应用程序没有能够提供正确的身份认证和会话管理功能,导致攻击者可以冒充他人身份。
3)跨站XSS
攻击者通过往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入Web页面里的Script代码会被执行,从而达到恶意攻击用户的目的。
4)不安全的对象直接引用
一个已经授权的用户通过更改访问时的一个参数,从而访问到原本其并没有得到授权的对象。比如修改URI里的购物车id参数访问他人的购物车。
5)伪造跨站请求(CSRF)
攻击者盗用了用户的身份,以合法用户的名义发送恶意请求。对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以用户的名义发送邮件、发消息。
假设站点A为存在CSRF漏洞的网站,站点B为攻击者构建的恶意网站,CSRF攻击示例如下:
- 用户打开浏览器,访问站点A,输入用户名和密码登录A。
- 登录成功后,站点A产生Cookie信息并返回给浏览器。
- 与此同时,用户在同一浏览器中,打开一个TAB页访问站点B。
- 站点B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问站点A。
- 浏览器在接收到这些攻击性代码后,根据站点B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。站点A并不知道该请求其实是由B发起的,所以会根据用户的Cookie信息处理该请求,导致来自站点B的恶意代码被执行。
检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。
6)安全配置问题
Web应用所在的服务器、平台、数据库、各种管理工具的配置或者账密泄露,导致相应设施暴露出安全风险。
比如:
- 代码中存在账密信息,被反编译泄露。
- 服务器上的目录列表未被禁用,导致攻击者可以找到服务器上的任何文件并下载。
7)限制URL访问失败
系统虽然明明对url的访问做了权限限制,但这种限制并没有生效。比如系统没有对用户的角色做检查,用户通过修改url能访问到其他用户或者管理员账户才能访问的url。
8)未验证的重定向和转发
先说下重定向和转发的区别。
- 重定向(Redirect)。浏览器向服务器发送请求,服务器响应状态码302和新的location,浏览器发现状态码是302,会再向location发起一次http请求。所以浏览器发起了两次http请求,而且地址栏最后看到的也是新的location对应的url。
- 转发(forward)。浏览器向服务器发送请求,服务器在内部完成转发路径的资源请求,并将请求结果返回给浏览器。浏览器只发起了一次http请求,而且地址栏看到的url地址没有改变。
对于重定向和转发来说,目的url请求中一般会带有参数,如果这些url参数未做验证,那么就很容易被攻击者利用。
9)使用已经被发现存在漏洞的组件
Web应用使用带有已知漏洞的组件,比如库文件、框架或者其它软件模块,可能会导致严重的安全问题。比如数据泄露、服务器被黑客接管等。
10)敏感信息暴露
用户敏感信息比如信用卡号、手机号、身份证号等数据,一旦被攻击者窃取或者篡改,会造成非常严重的后果。敏感数据需要特殊的保护,比如存储和传输过程中加密,以及在和浏览器进行交互时进行特殊的预防措施。
WAF以OWASP提出的各种安全隐患作为具体实施时需要考虑的准则。上面提到的这些安全问题,都在WAF的防范范围之内。
5. WAF和DDos
DDos的全称是Distributed Denial of service。主要依靠一组计算机来发起对一个单一的目标系统的请求,从而造成目标系统资源耗尽而拒绝正常的请求。
根据OSI的7层网络模型,网络可以从上到下分为:
- 第七层:应用层,SMTP,HTTP,DNS等各种协议。
- 第六层:表示层,信息的语法语义以及他们的关联,如加密解密,压缩解压缩。
- 第五层:会话层,建立和维持连接,。
- 第四层:传输层,TCP,UDP。
- 第三层:网络层,IP和路由。
- 第二层:数据链路层,MAC地址。
- 第一层:物理层,基于光纤的信号。
从上图可以发现,数据的发送是从第七层发起,逐层往下传输,并最终回到第七层的。
根据OSI网络模型,最常见的DDos有三类,第三层(网络层)DDos、第四层(传输层)DDos和第七层(应用层)DDos。
- 第三层DDOs,基于IP的攻击。IP数据包在网络传递时,数据包可以分成更小的片段。到达目的地后再进行合并重装。在实现分段重新组装的进程中存在漏洞,缺乏必要的检查。利用IP报文分片后重组的重叠现象攻击服务器,进而引起服务器内核崩溃。
- 第四层DDos,基于TCP的攻击。SYN Flood攻击的过程在TCP协议中被称为三次握手(Three-way Handshake),而SYN Flood拒绝服务攻击就是通过三次握手而实现的。TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN ACK给客户端)并等待一段时间后丢弃这个未完成的连接。服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。
- 第七层DDos,基于应用层的攻击。基于应用层的DDos攻击会更复杂,处理起来更棘手。这类攻击往往会模仿用户和Web应用之间的交互行为,增加判断的难度。
WAF主要处理第七层DDos攻击,它在处理第七层DDos攻击时会比其它防护手段更高效一些。WAF会对HTTP流量做详细的分析,这样WAF就能针对正常的访问请求进行建模,然后使用这些模型来区分正常的请求和攻击者使用机器人或者脚本触发的请求。
6. WAF测试
针对WAF实施的测试需要一个严格的流程。我们需要知道WAF能够有效防止哪些真实的攻击,漏掉了哪些真实的攻击。同时,我们还需要知道哪些有效的访问也被拦截了。
在针对部署了WAF的Web应用做测试时,最好使用WAF测试框架,并根据下面的步骤来测试:
- 测试在没有部署WAF情况下web应用的表现。
- 看看在WAF启用默认配置的情况下,攻击能否成功。
- 修改WAF的配置,看一下能否拦截上面的攻击。
WAF测试工具不但需要能够触发各种攻击,而且能够产生合法的请求,这样才能检测WAF在预防攻击的情况下能够让合法请求顺利通行。
7. WAF和传统防火墙的区别
传统防火墙主要用来保护服务器之间传输的信息,而WAF则主要针对Web应用程序。网络防火墙和WAF工作在OSI7层网络模型的不同层,相互之间互补,往往能搭配使用。
网络防火墙工作在网络层和传输层,它们没有办法理解HTTP数据内容,而这个正式WAF所擅长的。网络防火墙一般只能决定用来响应HTTP请求的服务器端口是开还是关,没办法实施更高级的、和数据内容相关的安全防护。
二、云防火墙
属于软件形式,通过软件算法,这就方便了很多站长和服务器运维人员。提供统一的互联网边界、内网VPC边界、主机边界流量管控与安全防护,包括结合情报的实时入侵防护、全流量可视化分析、智能化访问控制、日志溯源分析等能力,网络边界防护与等保合规利器。
应用场景
精细化访问控制:流量监控、精准访问控制、实时入侵防御等功能,支持全网流量可视和业务间访问关系可视,全面保护您的网络安全。
资产暴露管理:资产包括:开放公网IP、开放端口、开放应用、云产品; 详情包括:公网IP、资产实例、应用、端口、7日流量占比、风险评估、协议(云产品)、健康状态(云产品)、所属可用区(云产品)等。
安全正向代理:NAT网关访问互联网的流量会先经过云防火墙安全正向代理,实现对内网IP访问互联网的流量进行访问控制和防护。
入侵检测与防御IPS:支持安全组的统一管控,同时提供安全组配置检查功能
主动外连检测与封禁:支持云内资源的主动外联网络侧检测,协助客户判断恶意外连请求。
流量可视化:支持全网流量可视和业务间访问关系可
网络日志审计:通过云防火墙的所有流量会在日志审计页面记录下来,包括流量日志、事件日志和操作日志
总结
WAF是Web应用不可缺少的基础安全组件之一,能帮助我们预防一些常见的攻击手段。
所有的云服务厂商都提供了基于云服务的WAF,在云服务商的管理后台点击几下就能完成WAF的接入和使用,极大地降低了WAF的使用门槛。
我们很难有理由在使用这些云服务时拒绝使用WAF服务。