BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

专访微软战略安全官裔云天:做好网站安全的纵深防御

| 作者 贾国清 关注 0 他的粉丝 发布于 2012年1月12日. 估计阅读时间: 22 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

裔云天先生曾为加拿大5大商业银行提供IT基础设施设计,实施安全入侵检测,目前作为微软大中华区的战略安全官负责公司安全战略。针对近期频繁发生的互联网公司用户信息泄露事件,InfoQ中文站对他进行了专访,以下是具体的采访内容:

InfoQ:多家互联网公司发生这种用户信息泄露事件,您觉得背后的原因是什么?

裔云天:用户信息的泄露存在多方面的原因。总体来讲,一方面是由于用户的密码强度不够,另一个方面是由于用户在上网时,浏览器的安全设置没有做好造成的。对于互联网网站来说,如果网站的安全措施没有做好,就很容易被黑客攻击,甚至连数据库服务器都会受到影响。用户的基本信息大都存储在数据库中,一旦数据库被攻破,用户的敏感信息也就随之会被泄漏,这是总体的一个情况。但是针对我们目前发生的用户信息泄露事件,从专业角度分析,绝大多数原因应该是在互联网网站这边,而不是在用户这边。仅仅由于用户名、密码过于简单,而采用这种暴力破解工具是不可能获取到如此大量的密码的,很有可能是互联网公司本身的安全措施没有做好。

其实对于这次事件,一方面来说是意料之外,同时也是情理之中。因为从04年开始,微软对互联网行业的安全方向就开始公布有相关的安全报告(Security Intelligence Report (SIR) Volume 11),这个报告每半年发布一次。从04年开始,直到2011年下半年,我们所看到的所有的安全漏洞,其中94%以上都与应用软件相关,而不是像我们在大众媒体上所看到的那样,漏洞都来自于操作系统等等。事实上,隐藏在冰山下面90%以上的漏洞都是大家没有意识到的,然而正是这些大家所没有意识到的漏洞,才引发了安全上的问题,这次的安全事件对于互联网网站来说,只不过是冰山里面的被暴露出来的几件事件而已,绝大多数的漏洞大家未必知道。

究其原因,就是由于没有把安全纳入到软件开发的过程之中,软件本身就是不安全的。黑客正是利用了应用软件当中这些显而易见的漏洞,对系统进行攻击。我们大致可以分析一下,这次几大网站的用户信息泄露事件,业内人士可以很明显地看出,一定是黑客攻破了数据库操作系统所造成的;第二个原因可能是通过脚本注入攻击了数据库,把数据库信息全部窃取。从深层次的角度上来说,应该是属于软件开发的范畴。现在国内大多数的网站包括电子商务网站,政府网站,通常都会把功能的实现作为主要的目的。但在安全方面,却往往被忽视,比如在进行软件设计的阶段,根本就没有把安全的设计考虑到软件本身的设计中,这样开就导致在软件开发完成之后,虽然功能全部被实现了,但在安全方面却是岌岌可危的。这就是结合了我们最近七年来发布的安全研究报告里面的一些漏洞所想到的。如果在业界没有引起足够重视的话,在以后网站安全上所面临的问题应该会变得越来越严峻,甚至不会仅仅是目前我们所知道的几个事件,很有可能会有更多我们不知道的事件都藏在雪山底下。

InfoQ:类似问题发生的时候,公司应该采取哪些应急措施呢?

裔云天:我建议分几步走,较容易辨别的漏洞,建议优先进行修复,然后请一些安全方面的专业人士对网站的系统、架构进行安全评估,先要了解问题到底出现在什么地方。因为目前的信息泄露主要通过用户输入界面、SQL注入和跨站脚本这几种形式所引起。这类漏洞的修复相对来说会比较容易一些。其实最好还是把网站关掉一段时间,在此期间,应尽快请安全评估公司对所有出现的漏洞进行评估,在最短的时间内把这些漏洞全部修复。修复后即可开放网站访问,开放以后并不等于大功告成,这时还需对公司的整个架构和功能层面,在安全的角度以及每个实现的阶段,都要把安全因素考虑进去。

在微软,我们目前使用一套软件安全开发生命周期(SDL,Security Development Lifecycle)的开发模式。微软目前所有的软件,都是采用这种开发模式来开发的,开发时,通常的做法就是先罗列出软件的功能,然后针对每一个软件功能的信息,我们会建立一套与之对应的安全模型,首先评估该模块本身有哪些安全隐患,针对这些安全隐患我们可以有哪些应对措施,然后再进行整改。在这种方式下,我们在整个软件设计的流程中,包括安全建模全部完成以后,再开始写代码。这样写出来的代码安全性就会高很多。

举个很简单的例子,比如当前用户信息泄露事件可能是由SQL注入所引起的,于是针对SQL注入我们就可以有针对性地,在完成代码编写之后用一些SQL注入的工具对源代码进行扫描,查看是否有可能存在导致SQL注入的隐患。如果有,就在源代码层面将其解决掉。同时,虽然在SQL注入的问题被完全解决,并不意味着其它的安全隐患就不存在,安全建模有各种各样的模型,比如说跨站脚本攻击,如果网站有输入界面,就需要在输入界面通过有效性检查来检测常用的攻击手段,比如采用一些分号,一些逗号,中括号等等,这些在通常情况下都是需要有相应的过滤措施的。这些在我们设计软件的时候也是需要考虑进去的。应急的话,我觉得最好的办法,还是要把网站关掉一段时间比较好,因为在没有查清还存在哪些漏洞的话,继续保持着网站被攻击的状态,就很有可能会把客户的信息泄露给黑客。

InfoQ:其实这次用户信息泄露以后呢,有些安全专家给出的建议就是,不要立刻去修改这些密码。因为很有可能有些网站已经被挂入了木马程序,这时候再去修改密码的话呢,反而很容易让这些黑客就更容易得到他们最新的密码,您对这个观点怎么看?

裔云天:我同意这种说法,事实上,其实刚才我们提到用户的信息泄露和用户的密码长度、强度其实关系不大,主要是网站的关系。由于网站对密码管理不当,所以才引起的密码泄露。其实最好的办法就是先停掉用户登录,或者说把网站先关掉,在查出安全隐患之后,优先将安全些漏洞修复,将相应的安全隐患剔除之后,再开放登录,当用户再次登录时再去修改密码。而且这种方法时间上不会太长,根据我们以往的经验,网站停掉以后,请一家安全公司做一下全面的评估,一般在三天左右。整改时加班加点,一个星期左右应该能完成,就目前发生的安全事件的互联网公司来说,一周左右是一个比较能够接受的时间,这样对用户来说也是比较负责的一个做法。

InfoQ:对于Web前端开发以及后台服务器层面,您认为哪些是最重要的考虑因素?

裔云天:有三个比较典型的案例,出现这个漏洞最多的主要集中在几点,一个是SQL注入,一个是跨站脚本攻击,还有就是缓冲区溢出,基本上这三点,是我所看到的网站攻击中,出现漏洞最多的。前端开发,无论是前端还是后端实际上都是一体的,开发时,最重要的是要在设计功能模块时,首先要从功能模块的安全角度出发,找出可能会被黑客利用的隐患,刚才我也提到了,如果是和数据库连接的,SQL注入的攻击就可能要多注意一些,在开发时,要保证所写的代码里不会存在被黑客利用的SQL注入程序。尤其是当遇到一个Web输入界面的时候,一定要对输入的有效性进行检查,比如说输入时如果只希望输入字母,或者中文字符,最好在输入界面中做一下限制。而且在长度方面也要有所限制。

跨站脚本攻击也是应当引起重视的,这是最常见的一种攻击方式,绝大多数安全问题,从我们过去所做的安全评估的案例来看,无论是电子商务网站,还是政府的一些网站,绝大多数都集中在这几个方面。对于后端服务器的整个网站的架构,不要把数据库服务器和Web服务器放在同一个网段。我们以前经常看见,某个公司有10个Web  Server,一台SQL Server,有的就把Web  Server和SQL  Server放在同一个网段上,这种做法就埋下了安全的隐患。因为对于Web  Server来说,从安全角度是容易被攻破的,一旦攻破了Web Server,同时SQL  Server又和Web Server在同一个网段上,这同时也相当于攻破了Web Server之后整个网站就被攻破了,所以做后端的架构设计时要考虑。从流量均衡的角度来说,最好是用一种专线的连接方式。现在有很多的中小型网站,Web Server是有个网卡直接连到互联网上。当所有的用户访问这个Web Server的时候用的就是这个连接。然后连到数据库,也用这个网卡去连接,这就不是很安全。应该用另外一块网卡去连接数据库服务器,而不应该用这个连到互联网的这个网卡。

我只举了其中的一个例子,从架构方面还需要考虑的一点就是,我们有一个词叫纵深防御,就像带兵打仗一样,防御时可能要设置几道防线,第一道防线被攻破还有第二道防线,第二道被攻破还有第三道防线。当我们设计互联网的网站架构时,也要考虑采取这样一种模式,不能采取只有一层防火墙,一旦防火墙被攻破安全防线就彻底被打败了。反之,一旦防火墙被攻破,就拿到了Web Server的访问权,Web Server被攻破,数据库也就不安全了,那怎么办?最后一层我们把所有用户的数据加密起来,即使数据库被攻破了,即使数据库中的数据全部被拷贝,但拿到的所有的数据全是被加了密的,拿到这些数据后同样不会导致信息泄露,所以,可以用这种成熟的防御方式来保护我们网站的安全。

另外服务器端还有一点需要引起重视,就是对于不同的操作系统要做相应安全加固,如果是Web Server,就需要将与Web Server不相关的服务删除,千万不要启动无关的服务。再比如SQL Server端,也需要对SQL Server进行安全加固。不必要的服务要尽可能地减少。从而在安全角度来说是叫降低受攻击面。其实就像打仗的时候,蹲下来的话,暴露的面越小,被敌人子弹打中的可能性就越低,在服务器上也是一样。开放的服务越少,那遭受攻击的时候可能性也越少。

InfoQ:包括一些端口上的限制什么的,其实都可以算作降低受攻击面这方面?

裔云天:对,可能Web Server就开了一个80的端口,或者HTTPS 443端口就可以了,其他的就不可以开了。

InfoQ:您觉得这块如果要改用HTTPS连接,会不会好一些?因为现在传统的大部分还是在用HTTP连接,这个对连接方面,或者说网络传输层面会不会有一些帮助?

裔云天:这个是有利又有弊,因为HTTPS加密,它对服务器的速度方面要求很高;另外一点,按照我们以往的做法,一台Web服务器能同时处理1000到1500个HTTPS连接,也就是说,虽然HTTPS保证传输上的安全性。但是,从性能角度来讲,这也是为什么看到很多电子商务网站,会部署上千台服务器,就是这个道理。因为每一台服务器能处理的连接数量是有限的。所以我推荐对一些比较敏感的信息,例如用户名和密码的登录界面,可以使用HTTPS连接,而对于其他一些比如说论坛,就不需要用HTTPS了。这样的话一方面保证了用户信息在网上传输的安全,同时又保证了网站的正常运行。另外HTTPS还有一个问题,Web服务器的速度可能也会有影响,比如吞吐量的问题,所以也会经常被用来制造拒绝服务攻击。因为一台服务器,倘若可以处理2000个链接,同时遇到三四千个或者说上万个连接,就会很容易宕掉。基本上以上就是,在做互联网的网站时,需要优先去考量的。

InfoQ:对于互联网的用户来说,您有哪些安全的建议?

裔云天:首先第一个要保证使用的操作系统的安全性,因为一旦操作系统本身被嵌入了大量的恶意代码,这带来的危害是相当大的。举个例子来说,我们曾做过一个市场调查,我们邀请了一家第三方公司,在市场上大家都知道有很多盗版软件,盗版光盘。网络上也有很多像电骡、电驴下载。当我们把所有的样本全部搜集起来,在其中进行检查后我们却发现,70%以上的盗版光盘里,都含有各种各样的恶意代码,或者是后门软件。盗版光盘通常会卖到五块钱一张,有的甚至还更便宜,他们盈利的点在什么地方?光盘买回家拷贝到电脑里,就已经在操作系统上植入了后门应用,恶意代码就已经在里面了。

盗版商正是利用这点来谋取暴利。举个例子来说,比如说市面上有一百万个用户用了某一个盗版光盘,装到了自己的系统上,光盘里有后门软件的。对于生产盗版光盘的人来说,等于是控制了一百万台电脑,他拿了这一百万台电脑去干吗呢?他可以去攻击别人,以前曾经有一些网站上就有卖,比如卖一个肉鸡用1个小时五毛钱,现在在一些地下的市场还是有在卖的,比如说你需要一百万台机器要去把一个网站给搞垮,只需要去买上几个小时,花点钱,用完以后再还给别人。很多一部分都是在这个盗版光盘上所引起的,所以我觉得第一条,用户要保证本身操作系统的安全性,你操作系统在安装的时候要安干净的操作系统,这是第一点。

第二点要有防病毒软件在你的系统上,而且要实时的,并且要定时的去更新防病毒软件的样本库。当然杀毒软件这点来说,用户有很多的选择,现在很多防御软件是免费的,国内的有什么瑞星、金山等等。包括微软也有我们自己的Microsoft Security Essentials,免费的防病毒软件,都是可以达到这个目的的。

第三个,在我们浏览网页的时候,我们IE一定要在保护模式下运行,运行在保护模式下的好处就是,既使浏览的网页中含有恶意代码,这个恶意代码被下载以后,所有的下载的恶意代码不会在你的操作系统上安装。因为它是在保护模式下,下载的代码在安装的时候是安装在这个IE的特定目录下。再次启动系统的时候,这些恶意代码就会被删除,从而不会常驻系统里面。这是IE浏览的时候,我们所做的一个保护模式。当然如果有可能的话,把其他的模式,把防钓鱼这些这种功能也全部都打开。此外还有一点,在登录系统的时候,不要用管理员的身份登录,因为绝大多数的用户在登录时默认的都是本地管理员帐号,这样的话一旦有恶意代码入侵,就相当于以管理员身份运行。如果是普通用户身份登录,在上网的时候,一旦有恶意代码进来的话,也可以有所防范,毕竟很有时候是需要本地用户的权限才能运行的程序他就无法运行了。

还有另外是用户的安全意识需要提高,比如说对一些来历不明的Email,特别是带有附件的邮件,不要去随便打开,这点很重要,因为很多附件中包含可执行代码,或者是带有宏恶意代码的一些文档,一旦打开,恶意代码就会被执行,或者执行宏模块代码,就把恶意代码带到机器上,系统由此就被感染了,所以要有一定的安全意识,不要去随便打开附件。对于一些不明来历的Email,尤其是来自于银行的,要求登录以后去修改密码的,还有是包含中奖信息要尤其保持警惕,包括我本人,我也经常收到一些这样的电子邮件,比方说你这个密码我们发现有一些不正常的登录的行为,你登录上去一看,下面有个链接。但是你链接点上去以后,出现的地址栏你会发现,它明明应该是ebay.com,它显示的不是ebay.com,它显示的不知道什么乱七八糟的东西。那我们现在快过年了,经常会收到一些电子贺卡,特别要小心,如果电子贺卡后缀名是EXE的,尤其要特别小心。或者说有一些带有这个宏的、脚本的,大家要特别当心,基本上对终端用户的这些安全方面建议就这些了。

InfoQ:这次事件,您觉得大家应该从里边吸取哪些经验和教训呢?

裔云天:我想一方面从用户角度来说,这个问题刚才已经向大家回答了。但是这次用户信息泄露事件,我们所看到的绝大多数的这个问题所在,事实上均来自于网站端,这方面还是面临比较严重的问题。因为绝大多数网站出现问题之后,可能不愿意去面对现实。可能有些网站警惕性还不是很高,如果是对于上市的一些电子商务网站,尤其是在国外上市的一些电子商务、电子政务网站,他们一般都知道危害所在。所以我觉得对我们的一些网站来说,可能要引起足够的重视,网站的安全性,并不仅仅是安装防火墙,安装一些检测系统。在网站软件开发上,要有一个安全的意识。

微软在9月份的时候,我们在内部推出了一个叫安全评估计划,当然我们当时对关键信息系统的安全评估的目的,事实上主要是从应用软件方面对我们整个系统的信息安全评估,我们当时是不光针对网站的,针对一些关键信息系统,比方说政府的一些电子政务网站,包括有内网也有外网。那我们推出的安全评估计划,从应用层面对整个网站系统里的架构进行一个完整的安全评估,帮助我们的客户解决安全问题。当然这是我们微软所做的一个项目之一。同时在业界,我们国内也有很多安全公司,也有相关的安全评估的计划。据我所知,对于很多的网站的运营商来说,更大的问题是在软硬件方面,而不是在网络方面,这点要引起足够的重视。

基本上以上是我的一些建议,对于很多的用户来说,我觉得如果是个人用户,我分享一下我的经验:不同的网站不要用相同的密码,可以使用相同的用户名,但一定要用不同的密码。那很多的用户会问,我怎么能记住。我的方法是这样的,我有个EXCEL表,在这个EXCEL表里面,有网站的URL、用户名和密码。然后这个EXCEL文件,我再把它加密然后保存在了我这个加密的U盘上。一旦忘记了用户名和密码,在上面直接查就可以了。这点就是不建议所有的网站都使用相同的用户名和密码,否则一旦有一个网站用户信息泄漏,所有的用户名密码就全部被泄漏了。这是给最终用户的建议,可能不是太好。但是从目前来看,可能还是比较有效的。

关于被访者

裔云天先生曾任职蒙特利尔银行,加拿大TD银行等国际化公司,对互联网发展和IT领域的发展有前瞻性的见解,IT系统专家。具有21年IT领域工作经验,包括ERP、供应链和POS系统经验。熟悉企业商业应用,IT系统规划,在网络、安全领域有丰富的经验,精通B2B, B2C, C2C电子商务解决方案,企业商业需求和IT系统整合。曾为加拿大5大商业银行提供IT基础设施设计,实施安全入侵检测,作为微软大中华区的战略安全官策划公司安全战略,为跨国企业和政府提供提升企业安全的建议,曾作为第一财经《决策》嘉宾点评IT案例,作为专家评委评定上海IT十大青年新锐。

相关报道

InfoQ安全系列—专访安全宝CEO马杰:安全需要做到整条战线的严丝合缝

InfoQ安全系列—专访韩轶平:整个行业都要提高安全意识

InfoQ安全系列—专访土豆网技术副总黄冬:后端服务器的隔离非常重要

InfoQ安全系列—专访友录创始人姜洋,谈移动客户端安全

InfoQ安全系列—安全问题成为社区热点

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

无题 by lei chen

这个人得职位很牛,但说的东西,全是常识,没什么新意。

Re: 无题 by 贾 国清

但却常常被忽视:),如明文存储、输入限制、服务器架构这些。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT