郑歆炜:企业网络安全维护要减少人的因素
来源:腾讯
腾讯科技讯 3月18日消息,在今日举行的腾讯网络安全技术峰会上,游戏领域安全专家郑歆炜指出,如果企业网络安全完全依赖人员个人的高素质,会有风险过大。企业不能依靠人,要建立起结构体系和规范制度。
以下为郑歆炜讲演实录:
郑歆炜:运维和安全可能是两个分开的话题,我想就这两个技术做一个随想,也是和大家探讨,探讨这几年我在运维当中我的想法和困惑。
我先讲一个故事,有一个服务器官网通知到无法访问,系统管理员确认是由于拒绝服务攻击导致服务器无法提供服务。于是系统管理员联系了IDC负责人,通报了情况后,要求IDC负责人和电信进行协调,共同防御进攻。这个在大家看来是一个很正常的流程,应该没有任何问题。但我们再看下面的,系统管理员也没有闲着,他在等待的时候对数据包进行了分析,发现了是对域名发起的攻击,系统管理员把公司里面所有可以用的应用补丁下载中的服务器选出来,大概选了三十台,然后把官方网站同步到这三十台服务器上,同时将只有两台服务器的域名解析到分布在全国各地的补丁服务器上。攻击虽然还在持续,但是网站已经可以访问。
这个系统管理员做了一件非常了不起的事情,他不但分析了攻击,而且做出了正确的响应。这件事情发生在我刚入公司的时候我的同事做的。我在想可能拿到现在,如果系统管理员能做到这样的响应情况是一个非常优秀的系统管理员。但那时候就已经做到了。现在看来这件事情做得非常漂亮,包括防御的过程和选择,还有应对措施都非常好。因为当时的系统是非常标准的,是完全一样的系统,优秀的个人素质,导致这件事情处置得非常迅速和果断。对于公司来说,这么快的响应解决,非常好,可以讲这个人是公司难得的人在。
我们再讲第二个故事,是另外一个管理员,这也是一个比较早期的故事,可能当时Windows管理员没有干什么事情,他每天也就是开关游戏,他只负责最简单的游戏服务开关,每天看服务状况,他从来不知道Windows服务器甚至还要打补丁或者干别的事情,但是过了几年之后他换了一件工作,同样是做Windows管理员但却发现了很多问题,Windows系统要打补丁了,他觉得很奇怪,为什么以前不需要打补丁而现在需要打补丁。因为原来公司是做整体安全保护的,他们所有的服务器都是通过一个整体来保护,就算没有补丁也可以保证服务器的安全,而且服务器是做内网管理,外网连接全部中断,所以他在管理的时候根本没有遇见过任何网络中断或者外网访问混乱的问题。
这个故事告诉我们什么呢?优秀的基础体系结果设计,配合整体安全策略,实现基础安全。让维护和安全更容易,更有效。
来看第三个故事,就像第一个人一样,他不仅擅长系统管理、擅长网络安全,而且它的部门里面同样都是拥有各自专长的擅长网络管理和网络安全,当然他们的领导也是技术专家,运营部门撑起了公司数千台服务器,大概四个人,效率高,而且没有出现过任何网络问题,因为三个人都是网络安全高手,系统管理员对网络的解决比网络部可能更有效,他们更快地解决问题。所以公司也没必要设立安全部门了,运维部门就解决了所有的问题。过了几年以后,他的领导走了又招了一位领导,但是其他三个会觉得环境变了也觉得没什么意思就走了,其中有个人就离职了,他们发现接手的人在各种方面都不如自己,也跟自己配合不如原来那么默契了,于是大家相继离职了,这时候公司反而出现一个问题,就是没有人能做以前工作的事情,整个部门全部重新设定,包括重新设计了系统管理部、网络安全部。当然,这个故事说明了什么问题呢?这个公司过度依赖人,把所有事情都集中于人,最后导致出现了致命的问题,带来一个非常致命的问题是人和整体之间没有处理好,最后人离开了没办法要解决剩下的问题只能重新招人,但重新招的人没办法满足需求,只好重建系统。
这三个故事,系统维护人员高素质对运维安全体系帮助非常大。一个优秀的系统管理员,大家看到开始的那位系统管理员他解决问题非常快,而且非常有效,这样的话在一个公司里面如果都是这样的精兵强将的话也许安全问题就解决了,不会也这么多黑客。
故事二就说明一个良好的基础结构体系设计,对整个公司安全风险和维护人员的工作难度都会带来很多好处,而且能让整个公司的运作更良好。
故事三说明一个过于依赖人员素质的运维体系是不可取的。
我们现在面临的三个问题。运维体系,因为我把运维和安全体系是分开的两个部分,这个部分运维体系面临的问题,一个是系统的多样化和应用的多样化,人员的更替频繁。像我们讲的Windows、Linux系统等更多系统,但这些多样的问题带来管理上更麻烦,应用上也是。第三个问题是人员更替,因为现在信息流通了,所有的人员想换工作很容易,公司要不停地招人,接替。我这几年发现我的同事换得很快,经常有人离职有人接手。我想应该是个普遍现象。
网络部分,我们看现在的系统网络,首先应用的多样化就带来网络部分的复杂,因为各种各样的应用,开各种各样的端口让管理更麻烦。还有就是各种协议的问题,早上说了Web方面,那可见其它部分的问题就更多了,现在网络部分如何开放这些协议都带来了很严重的问题。
现在我们看安全体系所面临的问题,一是太多的应用所带来的安全问题。因为公司越大,各种各样的运营东西也就越来越多,做得多错得多,不是说都错了,但是错的概率大了很多。很多公司过快发展,很多公司因为过多注重业务的发展,导致了安全出现断层,很多时候很多公司做了很大的业务,但是没有安全部门或者安全部门刚刚开始筹建,就带来了安全的断层。还有就是重实现忽视安全,在我的职业生涯中,很多时候遇见问题是安全提出的问题被业务部门所拒绝,因为业务部门要求我们的业务是给公司带来盈利的,你必须得保证业务先行,而忽视了安全。这样的话很多时候安全都退到后面一步。
人员安全意识不足。我对这几年的看法,我觉得现在计算机越来越容易用了,是人都可以用计算机,是一个必备的资源,但是这些人的安全意识并没有达到一定程度,反而不是去追求高度,而是一些最基础的安全,这反而是我们现在面临的最大问题。
攻击方式多样。现在只要翻几个网页就可以攻击,而且攻击多样化对防守的一方要求更高。各种各样的攻击,安全人员首先要熟悉这些攻击才可以防御这些攻击,但是这样的话对安全人员的要求就比以前提高很多,也许以前只要补补漏洞,现在还要熟悉各种各样的安全技能。
现在我提几个我对运维体系的看法。第一、标准化。有三个解释:安装、系统配置、应用编译。标准化为什么好?为什么我把这个放在第一条呢?因为我认为标准化可以给公司带来很多好处。因为所有的系统让你管起来方便,而且可以保证配置的安全,这样也避免了误配置导致的安全问题。还有就是应用编译,我们都知道现在是受动编译的,各有各的爱好,很多系统管理员喜欢编译一套自己的东西,但是这样过多地个人发挥导致管理上的麻烦,这些如果能规范起来,保证系统和运营的迁移都有很多好处,我觉得是值得推广的事情。
网络划分,我在这里分为两块,一是网络横向划分,就是保证网络纵深的问题,我们在后台中间件的这些地方保证向后发起连接的内网,就是我们向服务器后面看,所要保证的安全,如果一个黑客攻击了前台的服务器,他需要时间渗透到后边的服务器,我们的纵深如果太浅的话,他直接获得了后台DB地址,可能留给我们响应的时间就很短,如果能很好地横向划分就会给我们带来很好的防守时间,在预警上我们可以有更多时间去检查入侵。
一是网络纵向划分,任何一台服务器肯定都有网段,肯定很多服务器在一个网段。根据应用划分这些网络,可能游戏服务器都在一个网段里面,Web服务器都在一个网段里,这样就会带来一个好处,一台服务器在防火墙做策略的时候可以做到统一化,必然的话很多应用稀奇古怪的防火墙开到最后跟没上是一个样。
我对此做的一点解释,标准化系统可以让快速部署,让我们所有的系统都更具有弹性,在第一个故事里我们就可以看到,如果没有标准化的部署,这个系统管理员不可能快速地利用这些服务器进行部署,这样让一个快速迁移和应用合并或后续管理员的接手都有好处,如果实现了标准化就可以实现这些好处。
还有就是网络划分,我对内外网分离这件事情很难说,虽然我在这里写了,但每个公司都有每个公司的应用,不可能把内外网完全分离,但我觉得这是一个好的方式,如果有可能的话这样做可以让系统使用方面有更多的灵活性,而且根据应用划分网络,让网络有了层次,可以直接提高安全系数,可以讲我们不做任何事情,但是安全已经能上一个很高的水平。
安全体系方面我列了两点,要讲安全这里都是专家,我就不班门弄斧,说了两点。包括我对一些公司的检查和情况的发现,包括一些交流,我发现人员的确是安全的根本,但是安全实现必须得依靠这些人,假如每个公司里面每个人都知道自己系统应该怎么做就安全,这样的话公司就会实现很好的安全。但是现在问题是我们希望安全成为每个人的自觉意识,如果每个人都自觉地遵守就会很安全,不然的话就会带来很多问题,安全部每天累得半死最后说不定哪天还被黑了。
再就是制度和自觉结合,我觉得有的时候安全单靠个人的自觉不能实现绝对的问题,如果所有人都自觉但就不需要法律了,我们还有法律就说明有些人还不自觉。唯一就是制度上面让这些不自觉的人遵守自觉人遵守的东西。所以制度保证了,每个人都明确自己的职责和他们所需要做的事情,这样他们也明白自己该做什么、不该做什么。制度和自觉配合起来,我觉得才能实现最好的安全体系,不然的话,一些人光是自己在实现安全,但是一帮人在那里做破坏安全的事情,最后这个体系也是崩溃的,哪怕做得再多,可能最终一个小损失就会带来很大的问题。
最后我们再来看一个案例,这是一个很简单的结构,用户在这里访问Internet,有一些应用服务器、一些DB,还有Web系统,通过互联网访问,管理这些机器。这个结构是一个非常普通的结构,也是很多公司最开始都是这样的结构,这个体系的实现也非常简单,通过应用上的程序开发来保证传输的安全。通过一套统一系统,部署更简单,我们更规范地部署,因为毕竟简单,系统也能快速地检查。
这里面的安全上的特点,它们是依靠每台机器来管理这些,通过一套管理系统来部署这些安全策略。安全操作就是通过管理系统来规范这些策略和做法来规范这些体系。安全因为毕竟是互联网上服务器全是没有防火墙保护的,就通过安全制度的执行检查,去检查安全制度的执行,形成一个循环,这是一个最简单的安全案例。
这个案例的成功点,简单的有效安全体系,当然就实现简单,使用简单,和承担风险相比,代价较低也容易实现和维护。简单有时候也是一种优点,实现这么简单的体系,使用起来简单,不用招很多很高级别的管理员,不用担很大的风险,因为相对来说实现的简单,承担的风险也相对可以接受,因为代价的低要承担的风险也会多一点,但是对比起来也是比较简单的。系统建立成本低,基本上没有什么特别的东西,都是最基本的,必须采购。人员培养简单,基本的培训就能胜任系统维护管理员。
这个案例的失败点,安全被分割,每个部分都是独立,造成安全过于孤立,容易造成单个部分的损失。一旦扩大到几千台服务器,承担的代价就非常大,安全部门对这些问题的保护经常会有单个部分的损失。
我们来看第二个案例,这个案例比较复杂(图)。首先,用户访问互联网,但是他前面这条曲线我用虚线表示了,这个地方其实有一道防火墙,但不是真正意义上的防火墙,所有的访问都通过这条策略过滤后再访问游戏服务器和Web Sever,在这道服务器背后也有一套安全策略才能访问到后台的DB和主机,这时候这些管理人员是通过一台防火墙拨通VPN之后,登录直接访问内网然后来实现管理这些服务器的,可以讲管理员不通过外网来管理服务器。
我们看看这个体系的特点,网络部分采用了大内网结构,所有的机器都在一个内网里面,逻辑上都在一个内网里面,但是可能有些地方被隔断。ACL保护外网服务器,节约了宝贵的防火墙资源,保护范围广,几乎所有机器都可以实现ACL保护。再就是VLAN策略,这些中间的曲线就是VLAN(图)的划分,这中间可能也有各自的安全策略来保护是否能访问。这样的话VLAN就严格了各个运营体系的区域划分。这样就相当于船的隔仓,破了一个仓也不会进入水而危及到边上。
系统部分特点,安装配置标准化,良好的系统配置规范,标准化所有系统。系统通用化,系统标准化带来系统应用的通用化,因为标准化的系统能让迁移更安全。
我们来看一下安全部分,这个系统就是整体安全,所有服务器受到统一策略保护,这些安全策略检查也非常方便,因为这些策略都是交换机上的。再就是实现安全策略代价小,不需要在每台机上有策略。还有就是内网的划分非常细致,每个内网都是经过严格划分的,保证两个应用之间没有应用需求的话两个区域之间是不会连通的。内网间的通讯流量,保证了不需要的工具不可能通过VLAN。
管理网络部署,登录管理网络入口唯一,登录严格管理,人员权限划分,有了登录入口的唯一性,登录就可以严格检查,也可以划分人员的权限,因为有了VLAN的划分,完全可以做一套策略,不同的人有不同区域的访问。这个案例就是第一个系统管理员的故事,他们的人员素质非常好,有非常高的安全素质。这套系统的成功点可能就在于它的优秀的基础结构体系设计,因为一套系统如果设计成这样的体系的话,他首先考虑到所有的Windows服务器,所有的Windows服务器都没有补丁,没有安全策略依然可以很稳定,没有被入侵过,就是因为有了这套体系的保护,让安全有了良好的基础,他们可以很容易地实现安全。一开始就让整体安全有很高的层次、很高的门槛,大家跨过这个门槛时就已经保护了所有的服务器,实现起来也很简单,运维体系架构在这样的结构上,管理服务器去检查服务器,还有一些对服务器的操作方面都可以放宽很大的要求,不像以前的服务器可能要注意很多操作,但是有这些基础的保护的话,让很多操作都更简单了。
维护人员的高素质保障了体系思路的实现和执行,让这个体系发挥比较好的作用。但是这个体系的失败点就是内网实现代价太高,因为以这种模式的大内网,中国比较大的互联网公司实现内网,首先设备的成本就非常高,特别是跨机房之间的内网接通需要的设备成本非常高,还有就是南北问题解决困难,还有管理点的选择,在北方管理南方,就算是南北连通起来,访问起来也会非常慢。还有就是对人员的依赖度过高,因为所有的VLAN划分都是以人为基础,培养人的代价非常高。
这个失败点是我们以前团队当中遇到的问题,前期人员促进了发展,但是中后期过度依赖人员导致出现人员断层。虽然优秀的架构设计可以保留下来,但是人员造成的问题,对团队的继续发展造成了严重的问题。
我们做一些总结,从以上介绍两套系统中寻找成功点,剔除失败点。来构成一套较为理想的体系,大家仁者见仁,智者见智。
整体基础安全保护,重点在于ACL策略的保护,我个人对ACL策略也不是很清楚,但是我觉得这样的系统能让大家有个很好的门槛,我发现很多公司使用交换机的时候都是把它当做普通的路游设备,有这些功能往往起到事半功倍的效果,能用起来当然最好。
前期的架构和网络规划很重要,因为前期设计起来那么一套体系,我也待过很多公司,我遇到的很多问题是我们到一家公司发现很多问题,问题是我们怎么改造这套网络,我们有很多好想法、很多好计划,但是没办法实施,因为公司在运营,你不可能推倒这个架构建一个让自己觉得满意的系统,没有公司可以接受这样的体系。因为如果前期第一次设计得好的话能给后期代理很好的帮助。粮食的设计让系统拥有可以持续发展能力,因为现在机器已经是一个廉价的设备,已经不在乎多少台服务器。以前我记得我们在一起聊天的时候就讲了一个很好玩的故事,一个论坛十万人,另外一个论坛两万人,但是十万人的不可以实现,两万人的可以实现,我们就用两万人的。结构设计出来,对网络进行划分/分隔应用,可以保证应用部署的规范,如果能一直遵守这个策略,保证应用能很好地部署,这样的话也是非常好的,其实这也属于架构范畴。最后一条就是安全纵深,我觉得这里恐怕有很多渗透高手,没有纵深保护这些东西就很难实现,让黑客需要更多的时间去搜索我们的后台,这样的话我们才能让我们有足够的预警时间去阻断这个攻击。当然有些公司可能有更好的应用。
完善的规范制度。我觉得这对很多业务的促进是非常好的,因为体系的设计,技术员实现了,最终还是要检查修复的,不可能上去以后第二天就不管,这样的话需要系统自我修复和自我完善的能力,这必须得要求制度来做。
严格的检查完善机制。所有的事情必须得有力的执行,并且根据反馈不断完善。而这一条就需要管理层,运营层的理解和支持,因为很多时候是很多人对安全部门不理解、不支持,最后导致很多问题的出现。这就需要管理层对运维人员做一些制度或者规范上的支持,因为管理上的支持很多时候能让很多人理解。
下面开始讲我的主要想法,我觉得这个话的确说得很对(图),人员是一切的基础,没有一个好的人员什么事情都不用谈。同样,一个好的人员也可以让事情事半功倍。都是非常优秀的人才这样的话可能这个团队去干什么事情都很简单。每个团队的个人素质是最关键的,因为这个团队既然都优秀,就像木桶一样,最后一块短板可能是制约它发展的,所以每个人的素质是最关键的。就像我们需要建立一个非常优秀的团队,每个人都拥有高素质,这样这个团队一定能干出很多事情。
再往后面看,我们团队如果完全依赖人员个人的高素质,这显得风险过大,因为人是最不可靠的东西,因为毕竟服务器给它一加一肯定得出二,找个人的话可能不等于二了。我们不能依靠人,我们的团队需要依靠结构体系来规范制度,有人离开我们可以欢送他离开,再补充我们所需要的人,整个团队对人员的需求也不会很高。
对付黑客最好的办法也许就是所有人都成为黑客,这样世界上全是黑客的话,我相信就没有黑客了。所有人素质都非常好,整个团队整体能力得到成倍提高,并且个人能力让问题解决更快捷和安全,这同样也是一个团队最终的目标。
作为一个反方,过于依靠个人的能力的团队,存在很多问题,而且很容易存在人员断层,现在培养一个人非常难,我在跟我以前一个同事聊天的时候他现在是一个公司的CEO,他说他现在最大的问题就是每天在招人,每天培养成他所需要的,但他突然发现他把人员培养好之后已经没力气做事情。我们不如反过来想想,我们只要有一套好的架构体系和完善制度规范,我们这个团队里面就不需要人员,也不需要人员的素质,我们只需要一些普通人员就能支撑公司的运转。当然这是正反两方的意见,不知道大家看到这个观点怎么想,我觉得有的时候我自己也很矛盾,因为毕竟一个高素质的团队大家都是好手自己在一起交流、工作环境都会好。但是这样又带来问题,公司不希望完全依赖人,把鸡蛋全部放在一个篮子里,这样太危险了。这是相对矛盾的问题。
大家都希望自己团队的团员都很好,就像打篮球一样,都希望每个队员是乔丹。但我们又会存在另外一个问题,我们也不愿意建立起来今天走了一个人我们公司就要损失很多的地步,我们更希望是比较完整的体系,我们有一套体系随便找一个人来,我们公司的系统就可以正常运营。
如何平衡这两方?如何建立起一个不依赖高素质人员组成的优秀运维和安全体系,案例一就能满足我们的需求,简单的系统,简单的人,找个网吧管理员就能做好,他们每天只需要检查这些服务器在不在。当然这个体系运维起来让问题分布了,相对来说,损失一个区域对公司来说打击不是很大,在我们能承受的范围内还是可以承受的,虽然安全事件会很多。这的确降低了人员要求,也许招一个人就可以管理这套系统。
案例二是一个优秀体系、优秀团队,体系建立起来要花很大的代价,要花很多人的努力才能建立起这个完善的体系,但是这样的话让后面的人很轻松,这个体系建立起来之后,从2000年到后面几年,就只有一次被入侵的事件,而且那时候所有的Windows机器都是不打补丁,居然能保证这样的成绩,还是比较骄傲的一件事情。
我说一下我自己的感受,我在这样的一个团队里,我每天在想的事情就是我的周围的人为什么安全素质不能更提高一点,每天想的就是这个问题。然后我在这个团队也待过,我想的问题就是每天能不走人,因为走一个人损失非常大,而且阵痛要很长一段时间才能消失。跟大家看到前面的问题也有点相似,大家如果在这中间找一个很好的平衡,既有良好的安全素质又有良好的安全体系,也许这是个问题吧,我不知道是不是哲学问题,反正我是无法解释的。