为了提升访问质量,许多网站会使用CDN服务。在多达数人的印象中,CDN不仅能够降低网络拥塞、提高用户访问响应速度和命中率,而且因为很多用户的访问网站内容时,不再经过源站,因而CDN还具有隐藏源站IP的作用。既然能隐藏源站IP,黑客要想发动网络攻击,首先必须找到源站IP,攻击难度上升不少,是不是意味着使用CDN可以提升网站安全性呢?答案是肯定的,但随着CDN的发展,使用CDN的的确确也会带来一些隐患。CDN科普鉴于一些同学可能不了解什么是CDN,我们简单的回顾一下。CDN也叫内容分发网络。CDN服务提供商会在全世界各大城市搭建CDN缓存服务器,当网站使用CDN服务时,网站的文字、图片等内容就会缓存到这些服务器上,访客访问网站时,离访客最近的CDN服务器负责响应用户的请求,从而达到降低网络拥塞、提高用户访问相应速度和命中率的作用。举一个简单的例子,A公司经营自行车销售业务,总部位于北京,在各大城市都开设了分店,用户可以选择线下购买,也可以选择线上下单。位于广州的自行车爱好者从线上渠道购买某型号山地车,A公司并不会从北京发货,因为这样物流时间太长,运输途中还可能发生各种意外。最好的选择,是通知位于广州的实体店,直接从广州发货,送到客户的手里。这个例子中,A公司总部是源站,广州分公司是CDN缓存服务器。客户向网站发出访问请求,源站不负责响应该请求,而是由CDN缓存服务器响应用后的请求。CDN工作过程大抵如此。CDN可以分为自建和他建。上面的例子属于自建,如果是他建的CDN,相当于代理商模式,顾客从代理商手中买山地车,A公司的广州分公司负责发货。这时候,A公司相当于CDN服务商,代理商相当于网站。我们这里讨论的是第三方CDN,因为自建CDN成本实在太高,绝大部分企业使用的都是第三方的CDN,比如蔚可云的CDN就是第三方CDN。使用CDN存在的安全隐患说完CDN,进入正题。使用CDN,的确会存在安全隐患,而且这个隐患还可能无法避免。CND服务主要承载着两个方面的任务:性能提速和网络防护。性能提速方面,第三方CDN会缓存网站数据,并在访客访问时直接而返回缓存,以减轻源站服务器的压力。在这个过程中,CDN只能缓存明文数据,不能缓存密文数据。因为如果能缓存密文数据,就相当于发动一次重放攻击。什么是重放攻击?举一个简单的例子:A想向B转账100万,一般来说如果黑客C篡改转账数据,将100万改成转到自己的名下,银行系统很容易发现,以为A可以看到转账确认单,银行系统也会进行确认。但如果C事先收集了其他人给B转账100万留下的密文数据,再用这份密文数据,替换掉A转给B应该收到的数据,A就会看到假的确认单,欺骗系统。如果CDN缓存密文数据,就会出现类似的效果。以TLS/SSL现行的加密机制,是不会允许重放攻击发生的,第三方CDN根本无法绕开这一加密机制。如果你想要CDN缓存密文数据,就必须承受CDN发动中间人攻击的风险。网络防护方面,CDN可能还具有检测恶意流量的功能,以现有的技术来说,一部分黑客攻击可以在不解密流量的情况下进行检测,比如SYN Flood。不过也有一部分需要解密后才能检测,比如与部分应用层的DoS攻击。如果要求CDN防御这类攻击,必然会将一定量的信息暴露给CDN,因为暴露的信息越多,检测也会越彻底。但与此同时,CDN发生攻击的风险也越大。不过我们换一个视角看,这种隐患不太可能发生。CDN服务商本质上就是中介,获取用户和网站两者的信任,是它存在的基石。就好像银行不会主动暴露客户资料一样。如果CDN服务商发动这类攻击,无疑等于自杀。
本文出自快速备案,转载时请注明出处及相应链接。