0x00 安全行业的第三流派-CSOs
目前在大多数行业后加入者的眼中“二进制”和“脚本”流派广为人知,虽然他们是安全行业的主力军,但除了微观对抗之外安全是一个很大的工程,比如企业安全管理,我把他们归入安全行里的第三流派-CSOs,加了s跟scriptkids一样表示他们是一个群体,这个群体从生态链的顶端链接着绝大多数从业者和安全厂商。
企业安全是不是发现漏洞然后修漏洞,再设置一下防火墙之类的?
假如你的公司只有一个产品,只有2台服务器,只有3个程序员写代码,我认为这个说法不能算错。不过在绝大多数情况下,企业安全远不止于此。渗透性测试和对抗能不能算企业安全?在一个过于纸上谈兵的企业我觉得这是不错的切入点,不过局部对抗发生于企业安全的各个场景中,他只能算是缩影,不是全貌。企业安全是什么对传统乙方安全公司,对新兴的业务安全公司移动安全公司,对甲方的互联网公司,对甲方的传统公司,对咨询顾问,对漏洞研究者,对活跃于各大SRC上的白帽子们的诠释肯定都不一样。
先说一下我自己的经历,以便了解我是从什么角度来看待这一问题的,学生时代跟现在的很多白帽子一样玩玩渗透,玩玩二进制,在过去那个叫幻影(Ph4nt0m)的组织里,大学毕业后即进了绿盟做安全服务和咨询,这是乙方中离甲方安全最近的职能,接受了绿盟对传统安全体系和方法论教育,有些10年前的东西放到今天都还会觉得很高大上,现在的安全行业里除了显得有些空洞的安全标准的传承,要么就是很浅的木桶理论之类的外延的理解,尤其在遇到互联网崛起时,攻防受追捧,有些东西因为没有收到金钱的认可很多人就直接把这一部分东西给扔了或自我否定了,其实有些思想跟技术表现形式一点关系都没有,放到今天仍然是很实用的技能。
在绿盟最大的便利并不是下班路上随便都能找到能聊exploit技术的大牛,而是视野:从金字塔视角看到安全的整体解决方案,囊括组织、管理和技术3方面的东西,覆盖全行业全价值链过程的技术方案,算上第三方的话几乎涵盖市面上所有的安全产品和解决方案。有人看到这些会问这不是传统安全那一套吗?我说且不急,听我慢慢讲,而且我可以剧透的说之后几十篇都是围绕互联网企业安全的,并不打算在传统安全上花很多篇幅,只是需要区分一下企业安全实际的状况和某些厂商为了兜售自己的产品而宣扬的概念是有所不同的,大多数厂商都会避开自己的弱项而在市场活动及软文上专注的强调自己擅长的概念。
离开绿盟后我去了甲方,一家大型网游公司,08年那时将近万台的物理服务器分布于30多个IDC的规模似乎比当时搜狐全站的IDC规模还要大一些,跟现在一样那时候也是社会上的公司普遍缺少安全负责人的时代,我也有幸组建了一支属于自己的安全团队,成为当时少数的安全总监之一,团队的这些人现在遍布互联网行业的半壁江山,且都是安全部门独当一面的骨干。在这段时间我身体力行了从乙方到甲方视角的过渡,从零开始建立安全体系,真正把乙方玩的东西在一家甲方公司落地了,我的方法思路过程跟某些互联网公司不太一样,因为那时候BAT的安全人员大多是毕业后直接去的甲方,一开始就做甲方安全,而我是从乙方到甲方,所以实践上更多了参考了乙方的方法论,除了攻防之外多线并行,直接建立较完整的安全体系,在遇到上海的网游业被腾讯包抄整体沉沦的时候,我也失去了继续深挖甲方安全建设的兴趣。
之后我去做了一家webgame公司的技术负责人,社会俗名CTO,由安全转向全线技术管理,说实话在这段时间里我并不是特别重视安全,一方面跟自己是安全出身有关,另一方面这确实是屁股决定脑袋的事情,不是安全不重要,而是有很多事情比安全更重要。安全这个事情说白了就是当你有100w的时候拿出2w买个保险箱装它们你觉得值,但你只有2w的时候要拿出8k买保险箱大多数人都会囊中羞涩。这也是我在知乎上回答的那个问题,为什么做安全一定要去大公司的原因之一。我窃以为很多公司的CEO、CTO的对安全重视,翻译过来应该是:被黑是一件很负面的事情,所以想找个人筹建团队打包了,只要不出事他们就不会太想起这事,但不是心理真的认为安全非常重要,也不会当成是一种竞争力,这句话并不是在映射过去,而是当下国内那么多对企业安全负责人的招聘在我看来也就是那么回事。
之后我去数字公司经历了短暂的时光,再次以乙方的身份拜访了企业级客户,很偶然的发现大多数乙方的顾问或工程师其实都没有真正做过企业安全管理的经验,虽不能把这些直接等价于纸上谈兵,不过确实是乙方的软肋,在竞争性的销售活动中,三下五除二就“把别人说没了”。在甲方企业高层的眼中,攻防这档子事可以等价于我花点钱让安全公司派几个工程师给我做渗透测试然后修漏洞,不像大型互联网公司那样上升为系统化和工程化的日常性活动。
离开数字公司后我到了全球化的公司-菊花长从事产品线安全,第一个项目是云计算,产品线安全属于甲方安全又跟很多甲方安全不太一样,他比传统意义上的甲方安全介入的更深,覆盖率更高的SDLC,直接导向产品设计的源头,对绝大多数甲方而言你也许在用OS的Dep&ASLR,也许在用各种容器,但你很少会自己去发明轮子,你也许会自己造一个WAF这样的工具,但你可能很少会像微软那样要自己去搞一个EMET这种涉及安全机制层面的东西,但在产品线安全里,这一切都会更进一步,不只是像互联网公司那样关注入侵检测、漏洞扫描等而是从设计和威胁建模的角度去看整体和细节的安全。这又拓展了我从R&D的视角看待以及分析安全问题的眼界。
至此,我既不属于脚本二进制,我也不属于乙方咨询顾问派,也不单纯属于甲方CSO,而是站在一个较全面客观中立的立场,我不会说某些方式属于纸上谈兵,也不会把攻防捧的至高无上,我认为这些都属于偏激的话。
好了,切入第一篇的正题,企业安全是什么?
我认为它可以概括为:从广义的信息安全或狭义的网络安全出发,根据企业自身所处的产业地位、IT总投入能力、商业模式和业务需求为目标,而建立的安全解决方案以及为保证方案实践的有效性而进行的一系列系统化,工程化的日常安全活动的集合。怎么感觉有点咬文嚼字?好吧,这里面的每一个项都会决定你的安全整体方案式什么,哪怕同是中国互联网TOP10中的公司其安全需求也完全不一样。
有人也许会觉得CSO干的活有点虚,但凡偏管理都是纸上谈兵。我不直接回答这个问题,我只举一个例子。大多数身在这个行业的人都知道社工库遍地都是,入侵者甚至站在了大数据的维度,国内的数据库绝大多数除了password字段加盐值存储,其余信息都是明文保存。而在欧美等地隐私保护是有明确的法律规定的,映射到数据持久化这个细节,就是需要满足一定强度以上的加密算法加密存储,CSO就是需要制定这些策略的人,你难道说这些都是形而上学无用的安全措施么?在互联网公司,安全负责人是会较多的介入到日常的技术性活动中的,但随着组织规模的扩大和官僚程度的加深,CSO不再可能表现的像白帽子一样专注于攻防对抗的细节也是一个无法回避的现实问题。是不是一定要说出诸如CSRF时IE和其他浏览器的区别这样的问题才算是合格的CSO,我觉得这个看具体场景,对于国内排名TOP5以后的互联网公司我觉得这个需求算合理范畴,但对于规模非常庞大的公司而言,这个需求显然太苛刻了,比如我所在公司,CSO属于法务类职位而不是技术类职位。
不想当将军的士兵不是好士兵,虽然有技术路线,不过我估计这个行业里至少有一半以上人想过要当CSO,但是CSO这个职业又跟某些大牛们表达的不完全一致,所以下面的篇幅会继续写,至少在技术层面,CSO不会只停留在微观对抗,而是会关注系统性建设更多一点。
0x02 企业安全涵盖哪些事情
从我在绿盟所受的安全教育来看大致分为以下几方面:
1. 网络安全:基础、狭义但核心的部分,以计算机(PC、服务器、小型机、BYOD……)和网络为主体的网络安全,主要聚焦在纯技术层面
2. 平台和业务安全:跟所在行业和主营业务相关的安全管理,例如反欺诈,不是纯技术层面的内容,是对基础安全的拓展,目的性比较强,属于特定领域的安全,不算广义安全。
3. 广义的信息安全:以IT两个字为核心,包括广义上的“Information”载体:计算机数据库意外还有包括纸质文档、机要,市场战略规划等经营管理信息、客户隐私、内部邮件、会议内容、运营数据、第三方的权益信息等但凡你想得到的都在其中,加上泛“Technology”的大安全体系
4. IT风险管理、IT审计&内控:对于中大规模的海外上市公司而言,有诸如SOX-404这样的合规性需求,财务之外就是IT,其中所要求的在流程和技术方面的约束性条款跟信息安全管理重叠,属于外围和相关领域,而信息安全管理本身从属于IT风险管理,是CIO视角下的一个子领域
5. 业务持续性管理:BCM(Business Continuity Management)不属于以上任何范畴、但又跟每一块都有交集,如果你觉得3和4有点虚,那么BCM绝对是面向实操的领域。最近前有网易、中有支付宝、后又携程,因为各种各样的原因业务中断,损失巨大都属于BCM的范畴。有人会问这跟安全有什么关系?安全是影响业务中断的很大一部分可能因素,例如DDOS,入侵导致必须关闭服务自检,数据丢失隐私泄露等。又会有人问这些归入安全管理即可,为什么要跟BCM扯上关系,做安全的人可以不管这些吗?答案自然是可以不管,就好像说“我是个java程序员,JVM、dalvik(ART)运行原理不知道又有什么关系,完全不影响我写代码!” 事实上BCM提供了另一种更高维度,更完整的视角来看待业务中断的问题,对于安全事件,他的方法论也比单纯的ISMS更具有可操作性,对业务团队更有亲和力,因为你知道任何以安全团队自我为中心的安全建设都难以落地,最终都不会做的很好
6. 安全品牌营销、渠道维护:CSO有时候要做一些务虚的事情,例如为品牌的安全形象出席一些市场宣介,presentation。笼统一点讲现在SRC的活动基本也属于这一类。
7. CXO们的其他需求:俗称打杂。这里你不要理解为让安全团队去攻击一下竞争对手的企业这样负面向的事情,而是有很多公司需要做,但运维开发都不干,干不了或者不适合干的事情,安全团队能力强大时可以承包下来的部分,事实上我的职业生涯里就做了不少这样的事情。
基础的网络安全是绝大多数在甲方的安全团队能cover的事情,不管你的安全团队能力如何,在公司里有无影响力,这个是必须要做的因为这是把你招过来的初衷。再往后的发展,是否止于此则看各人的想法,对于沉醉攻防技术的人其实不需要往后发展了这些足够了,但如果你的安全团队富有活力和想法,即便你想止于此他们也不干,把部门做大做强是这些人的愿望,只有这样才能给安全团队更大的空间,因为这点跟乙方是不一样的:对于乙方而言你可以在某个单点领域上无限深挖,而不会遇到天花板,因为你始终是在满足主营业务的需求,即使你成为骨灰级的专家公司也会对你在某方面创新有所期待而给你持续发展的可能性,但是在甲方,安全不是主营业务,归根结底是一个保值型的后台职能,不是一个能创造收益的前台职能,他是一个成本中心而非盈利中心,他的成本的大小跟业务规模以及公司盈利能力相关,公司发展时他的budget和headcount会发展,业务停滞时安全做的再好也不会追加投入,因为无此必要。反面的例子也有:做的不好反而追加投入的,那是一种政治技巧而非现实需要。
如果你在乙方的研究部,无论你的漏洞挖掘技能多牛逼,公司都不会跳出来说“你已经超出我们需求了,你还是去更NB的公司吧”(通常情况)。但是在甲方,假设是在一个国内排名大约TOP5-TOP10的互联网公司,养一个漏洞挖掘的大牛也会觉得很奇怪,他是在给公司创造价值还是在自娱自乐是会受到质疑的,CSO也会被质疑是否花了大价钱挖来的人不是出于业务需要而是用于扩大自己团队在业内影响力这种务虚的事。假如公司到了google这种级别,有一大堆产品,储备大牛则是顺利成章的,业务上显然是有这种需求的,不过还是要看产出是否对主营业务有帮助,工作成果不能转化为主营业务竞争力的尝试性活动在公司有钱的时候无所谓,在公司收紧腰带时则其存在价值会受到质疑。
以狭义的安全垂直拓展去发展甲方安全团队的思路本质上是个不可控的想法,筹码不在CSO手中,甚至不在CTO手中,而是看主营业务的晴雨表,也就是我以前微博上说的,甲方安全是要看“脸”的,这个脸还不是指跨部门沟通合作,而是在最原始的需求出发点上受限于他们。因此有想法的安全团队在(1)做的比较成熟时会转向(2),(2)是一个很大的领域,发展的好安全团队的规模会x2,x3,并且在企业价值链中的地位会逐渐前移,成为运营性质的职能,结合BCM真正成为一个和运维、开发并驾齐驱的大职能。
BCM在很多人眼里就是DR(灾难恢复),DR其实只是BCM中的一个点,属于下层分支。不过这对技术领域的人而言是最直观的部分,DR在互联网公司里由基础架构部门或运维主导,不过对于强势的甲方安全团队其实也是能参与其中一部分的,我之前也主导过这些,当然也是受到了绿盟的教育以及我的“前辈们”的启发。有兴趣的可以看一下BS25999
广义的信息安全,比较直观的映射就是ISO2700x系列,行业里的绝大多数人都知道ISO27001和BS7799.不展开了,对真正有安全基础的人而言都是很简单的东西。在企业里能否做到广义的安全,主要看安全负责人和安全团队在公司里影响力,对上没有影响力,没有诠释利害关系和游水的能力自然也就做不到这些,另一方面,狭义安全主要对接运维开发等技术面公司同僚,但是广义安全会对接整个公司的各个部门,对于沟通面的挑战来说又上了一个新的台阶,似乎在我看来这主要取决于安全的领队人物自己拥有什么样的知识结构以及他的推动能力如何。
对于(4),如果你所在的组织有这方面的需求,安全职能自然也会参与其中,是否刻意去发展他则看自己需求,对我朋友中某些做过IT治理和风险咨询的人相信是有能力一并吃下的,如果是技术派我就不建议你去搞了。
(6)属于水到渠成的事情,到了那一步你自然需要考虑,就算你不想公司也会让你去,就像我现在明明做技术活,却也不知道为啥会跟这一类事情挂上钩。
(7)有人看时自动过滤了,不过安全负责人自身是否有瓶颈,能否在企业里发展起来跟这条有很大关系,甚至有很多从(1)发展到(2)(3)的人都需要借助(7)这个渠道,点到为止不多说了。。。
对于互联网公司,我建议做1、2、5;对于传统行业,我建议做:1、3、4、5。
在互联网行业安全包括哪些内容,我觉得可以概括为: 信息安全管理(设计流程、整体策略等),这部分工作约占总量的10%,比较整体,跨度大,但工作量不多。
基础架构与网络安全:IDC、生产网络的各种链路和设备、服务器、大量的服务端程序和中间件,数据库等,偏运维侧,跟漏洞扫描,打补丁,ACL,安全配置,网络和主机入侵检测等这些事情相关性比较大,约占不到30%的工作量。
应用与交付安全:对各BG,事业部,业务线自研的产品进行应用层面的安全评估,代码审计,渗透测试,代码框架的安全功能,应用层的防火墙,应用层的入侵检测等,属于有点“繁琐”的工程,“撇不掉、理还乱”,大部分甲方团队都没有足够的人力去应付产品线交付的数量庞大的代码,没有能力去实践完整的SDL,这部分是当下比较有挑战的安全业务,整体比重30%+,还在持续增长中。
业务安全:上面提到的(2),包括账号安全、交易风控、征信、反价格爬虫,反作弊反bot程序、反欺诈、反钓鱼、反垃圾信息、舆情监控(内容信息安全)、防游戏外挂、打击黑色产业链、安全情报等,是在“吃饱饭”之后“思淫欲”的进阶需求,在基础安全问题解决之后,越来越受到重视的领域。整体约占30%左右的工作量,有的甚至大过50%。这里也已经纷纷出现乙方的创业型公司试图解决这些痛点。
对整体介绍的部分在前面的篇幅讲的比较多,主要目的是希望“视野”部分不缩水,这些概念在后面篇幅都不打算再展开了,如果你迟迟没看到技术篇,很正常,这只是一个开头而已。下一篇谈谈互联网企业安全管理和传统行业安全管理的区别。
0x03 互联网企业安全管理和传统行业的区别
总体来看,传统安全偏重管理,“三分技术,七分管理”,互联网行业偏重技术,我认为应该倒过来。其实这种说法也是不准确的,到底什么算技术,什么算管理,这些都没有明确的定义,安全领域大部分所谓管理不过是组织技术性的活动而已,充其量叫技术管理,如果你较真这些理论那你就掉坑里了。
先说一下传统安全和互联网安全的建设需求上的差异:
传统安全:
IT资产相对固定 业务变更不频繁 网络边界比较固定 IDC规模不会很大甚至没有 使用基于传统的资产威胁脆弱性的风险管理方法论加上购买和部署商业安全产品(解决方案)通常可以搞定。 互联网安全生态,对于大型互联网而言,需要应对:
海量IDC和海量数据 完全的分布式架构 应对业务的频繁发布和变更 同时架构层面关注:
高性能 高可用性 扩展性 TCO(ROI) 在规模不大的互联网公司,传统的风险管理方法论是可以沿用的,但在大型互联网公司传统的方法论可能会失效,因为你可能连基础架构上跑什么业务都搞不清,你想理清所有的系统接口间的调用关系以及数据流去检视设计风险以及设置细粒度的访问控制就是件不现实的事情,产品线极多时业内没有任何一个团队敢说自己有能力支持全产品线,对于高速发展的业务,当你理清了你想要的说不定架构又发生变化了,只有对占公司整体营收比较主要的以及培育性质的战略级的核心业务才有必要去深入调研并随之update,其他的还是要依靠自动化手段。
从安全建设上来看,传统安全建设:
在边界部署硬件防火墙、IPS/IDS、WAF、商业扫描器,堡垒机、在服务器上安装防病毒软件,集成各种设备、终端的安全日志建设SOC,当然购买的安全硬件设备可能远不止这些。在管理手段上比较重视ISMS(信息安全管理体系)的建设,重视制度流程、重视审计、有些行业也必须“等保合规”。
其实这里还有一个很大的区别就是,互联网有生产网络和办公网络的概念,即便最近Google声称取消内网也是针对办公网络而非生产网络,互联网行业的大部分安全建设都围绕生产网络,而办公网络的安全通常只占整体的较小比重。但是对于某些传统公司,他可能完全没有生产网络而只有办公网络,他的网络安全也就变成了办公网络的网络安全。但我推测随着社会互联网+进程的加速,很多传统的公司也会有自己的生产网络,最终都变成和互联网公司一样的形态。所以对于那些在给传统企业客户提供咨询和解决方案的乙方的同学,如果你们不学习互联网安全,也会被淘汰。
互联网的生产网络的解决方案基本上都是以攻防为驱动的,怕被黑、怕拖库、怕被劫持就是安全建设的最直接的驱动力,互联网公司基本不太会考虑等保、合规这种形而上的需求,只从最实际的角度出发,这一点是比传统行业更务实的地方。最近也遇到一个例子,说要在服务器上装防病毒软件,一看就知道是传统行业来的思路,不是没有真正做过互联网企业安全就是没被业务线挑战过,在大型互联网,光是性能损耗、运维成本和软件成本这几条就能分分钟把这种需求干掉,更不用进入对于服务器防护这种更实际的话题了。很多标准说到底都是各厂商参与编写,博弈并达成妥协,有利于自己产品销售的代言白皮书,并不是完全站在建设性的角度的,作为乙方卖卖无脑客户赚点钱自然无可厚非,但在真正的甲方做企业安全生搬硬套是会受到质疑并逐渐失去影响力的。
对于超过一定规模的大型互联网公司,其IT建设开始进入自己发明轮子的时代,安全解决方案开始局部或进入全部自研的时代,例如不会购买硬件防火墙,而是用服务器+Netfilter的方式自建,不会部署硬件IDS/IPS,而是用其他方式来解决这个问题。其实不难理解,规模小的时候买台硬件防火墙放在最前面,省事。但是规模大了我去买1000台硬防放在IDC机房?光¥就受不了啊。其次,基于CAP理论和Map-reduce衍生的一系列互联网架构,本质上都具有“无限”水平扩展能力,而传统的硬件盒子式的解决方案其设计大多源于对过去体系架构的理解,基本不具备扩展能力,完全不能适应大规模的互联网架构,总体上属于相对封闭的单点式防护。在这种情况下甲方安全团队自己动手去打造完全围绕自身业务的解决方案也就成了必然趋势。
自研或对开源软件进行二次开发+无限水平扩展的软件架构+构建于普通中低端硬件之上(PC服务器甚至是白牌)+大数据机器学习的方式是目前大型互联网公司用来应对业务的持续性增长的主流安全解决方案。是否真的到了机器学习阶段这个有点难说,但是安全进入大数据时代则是很稀松平常的事了。
对办公网络和雇员信息安全管理而言,互联网公司的文化比较open,一般不太会维持激进的安全政策,这点也是跟传统行业差别比较大的地方
下一篇继续介绍不同规模企业下的安全管理
微博 http://weibo.com/ayaz3ro 知乎主页 http://www.zhihu.com/people/zhao-yan-68/ 个人站点 http://www.ayazero.com
赵总分享的经验,解了我不少困惑。
佩服!
最近在补企业安全这方面,正好看到此好文。
nsfucks转菊花的来顶顶。没有做过互联网公司的安全,标记吸取营养。
受教了,
高屋建瓴 受教了
改版后的这排版,真蛋疼。。