第1章
安全大环境与背景
如果从一个很微观的角度切入企业安全这个话题,那么大多数人会像一叶孤舟跌进大海茫茫然找不到方向,所以本章从安全领域整体环境入手,以便于读者找到系统性的那种感觉。尽管笔者没有致力于提供关于企业安全的一个非常完整的“上帝视角”,但也尽可能地兼顾了这方面的需求。
1.1 切入“企业安全”的视角
目前安全行业中“二进制”和“脚本”流派广为人知,虽然他们是安全行业的主力军,但除了微观对抗之外,安全是一个很大的工程,比如企业安全管理,实际上并不属于上述两类。确切来说,应归入另外一个群体:CSOs,加了s表示他们是一个群体,这个群体从生态链的顶端联接着绝大多数从业者和安全厂商。在这个描述中我并没有发明新的名词,没有新建一个诸如气宗剑、宗这样的词,只是在知识结构和职业背景上做一定的区分,用于后续对这本书的扩展。
企业安全是不是发现漏洞然后修复漏洞,再设置一下防火墙之类的工作?假如你的公司只有一个产品、两台服务器、3个程序员,我认为这个说法不能算错。不过在绝大多数情况下,企业安全远不止于此。渗透性测试和对抗能不能算企业安全?在一个过于纸上谈兵的企业我觉得这是不错的切入点,不过局部对抗发生于企业安全的各个场景中,它只能算是缩影,不是全貌。企业安全是什么?对传统乙方安全公司,对新兴的业务安全公司、移动安全公司,对甲方的互联网公司,对甲方的传统公司,对咨询顾问,对漏洞研究者,对活跃于各大SRC上的白帽子们来说,诠释肯定都不一样。
先说一下笔者的经历,以便了解是从什么角度来阐述这一问题的。学生时代跟现在的很多白帽子一样玩玩渗透,玩玩二进制,在过去叫幻影(Ph4nt0m)的组织里认识了很多大V,大学毕业后即进了绿盟做渗透测试、安全服务和咨询,这是乙方中离甲方安全最近的职位,接受了绿盟对传统安全体系和方法论的教育,有些10年前的东西放到今天看都还会觉得完全不过时。
现在的安全行业里除了显得有些务虚的安全理论之外,要么就是一边倒的攻防,要么就是过于超前、浮在表面没有落地方案的新概念,这些声音对企业安全实操都缺乏积极的意义。有些方法论是有实操意义的,并不像攻防研究者声称的是纯务虚的东西,纯粹是位置决定想法的问题。还有些流行的概念在解决实际问题上的效果有待验证,并不像市场鼓吹的那么好。技术很重要,但攻防只解决了一半问题,安全的工程化以及体系化的安全架构设计能力是业内普遍的软肋,多数人不擅此道。对市场上的各种观点,我认为可能需要一个相对客观的评价:即某项技术或管理在全生命周期的各个环节中,在不同的行业、不同的场景下有什么样的价值,而不是很随意地贴标签。很多概念10多年前就有了,发明一个新概念讲与过去一样的事情,再给自己贴一个发明者的标签对行业没有积极的意义。纵深防御之类的概念在ISS没被IBM收购之前就有了,为什么现在有的人觉得这个词很新?因为过去没重视,或者说缺少实践。
在绿盟最大的便利并不是下班路上随便都能找到能聊exploit技术的大牛,而是视野:从金字塔视角看到安全的整体解决方案,囊括组织、管理和技术3方面的东西,覆盖全行业全价值链过程的技术方案,算上第三方的话几乎涵盖市面上所有的安全产品和解决方案。有人看到这些会问:这不是传统安全那一套吗?且不急,本书后面讲的都是围绕互联网企业安全的,并不打算在传统安全上花很多篇幅,只是需要区分一下企业安全实际的状况和某些厂商为了兜售自己的产品而宣扬的概念是有所不同的,大多数厂商都会避开自己的弱项而在市场活动及软文上专注地强调自己擅长的概念。
离开绿盟后我去了甲方,一家大型网游公司,2008年将近万台的物理服务器分布于三十多个IDC的规模似乎比当时搜狐全站的IDC规模还要大一些。跟现在一样,那时候也是普遍缺少安全负责人的时代,我也有幸组建了一支属于自己的安全团队,成为当时极少数的安全总监之一。团队中的人现在遍布互联网行业的半壁江山,且都是安全部门独当一面的骨干。在这段时间我亲身经历了从乙方到甲方视角的过渡,从零开始建立安全体系,真正把乙方玩的东西在一家甲方公司落地了。我的方法思路过程跟某些互联网公司不太一样,因为那时候BAT的安全人员大多是毕业后直接去的甲方,一开始就做甲方安全,而我是从乙方到甲方,所以实践上更多是参考了乙方的方法论,再自己摸石头过河,除了攻防之外,多线并行,直接建立较完整的安全体系。
后来在安全行业不太景气的那个年代我好像碰到了安全行业的天花板。之后跟在“信息安全的职业生涯”一文中所述的那样,我实践了里面所说的最后一跳,做了一家网游公司的技术负责人,社会俗名CTO,由安全转向全线技术管理。说实话,在这段时间里我并不是特别重视安全,一方面跟自己是安全出身有关,另一方面这确实是位置决定想法的事情,不是安全不重要,而是有很多事情比安全更重要。老实说,安全这个事情跟金钱关系密切,当你有100万元的时候拿出2万元买个保险箱装它们你觉得值,但你只有2万元的时候要拿出8千元买保险箱,大多数人都会不愿意。可参见我在知乎上回答的那个问题:“为什么做安全一定要去大公司”。我窃以为很多公司的CEO、CTO对安全的认识,翻译过来应该是:被黑是一件很负面的事情,所以找个人筹建团队打包了,只要不出事就行。他们不是真的认为安全非常重要,也不会把安全当成一种竞争力。现在说这句话并不是在影射过去,当下国内很多企业的观念仍然停留在这个水平上。
之后我去360经历了短暂的时光,再次以乙方的身份拜访了企业级客户,很偶然地发现大多数乙方安全公司的顾问或工程师其实都没有企业安全管理的真正经验。虽不能把这些直接等价于纸上谈兵,不过确实是乙方的软肋。在甲方企业高层的眼中,攻防这档子事可以等价于我花点钱让安全公司派几个工程师给我做渗透测试然后修复漏洞,不像大型互联网公司那样上升为系统化和工程化的日常性活动。离开数字公司后,我到了全球化的公司(华为)从事产品线安全,负责两朵云:公有云和终端云。产品线安全属于甲方安全,又跟很多甲方安全不太一样,比传统意义上的甲方安全介入得更深,覆盖率更高的SDLC,直接导向产品设计的源头。对绝大多数甲方而言,你也许在用OS的Dep&ASLR,也许在用各种容器,但你很少会自己去发明轮子,你也许会自己造一个WAF这样的工具,但你可能很少会像微软那样要自己去搞一个EMET这种涉及安全机制层面的东西。但在产品线安全里,这一切都会更进一步,不只是像互联网企业那样关注入侵检测、漏洞扫描等,而是从设计和威胁建模的角度去看整体和细节的安全。这又拓展了我从R&D的视角看待以及分析安全问题的眼界。因此,我可以站在一个较全面、客观、中立的立场来说安全,我不会说某些方式属于纸上谈兵,也不会把攻防捧得至高无上。
接下来,切入本章正题,企业安全是什么?我认为它可以概括为:从广义的信息安全或狭义的网络安全出发,根据企业自身所处的产业地位、IT总投入能力、商业模式和业务需求为目标,而建立的安全解决方案以及为保证方案实践的有效性而进行的一系列系统化、工程化的日常安全活动的集合。怎么感觉有点咬文嚼字?实际上,这里面的每一个项都会决定你的安全整体方案是什么,哪怕同是中国互联网TOP10中的公司,安全需求也完全不一样。
有人也许会觉得CSO干的活有点虚,但凡偏管理都是纸上谈兵。我不直接回答这个问题,我只举一个例子。大多数身在这个行业的人都知道社工库遍地都是,入侵者甚至站在了大数据的维度,国内的数据库绝大多数除了password字段加盐值存储之外,其余信息都以明文保存。而在欧美等地隐私保护是有明确的法律规定的,映射到数据持久化这个细节,就是需要满足一定强度以上的加密算法加密存储。CSO就是需要制定这些策略的人,难道说这些都是形而上学无用的安全措施吗?在互联网公司,安全负责人会较多地介入到日常技术性活动中,但随着组织规模的扩大和行政体系的加深,CSO不再可能像白帽子一样专注于攻防对抗的细节,这也是一个无法回避的现实问题。是不是一定要说出诸如CSRF时IE和其他浏览器的区别,才算是合格的CSO?我觉得这要看具体场景,对于国内排名TOP10以后的互联网企业,我觉得这个要求也许勉强算合理范畴,但对于规模非常庞大的企业而言,这个要求显然太苛刻了,比如我所在公司,CSO属于法务类职位而不是技术类职位。
不想当将军的士兵不是好士兵,虽然有人想走纯技术路线,但是仍有很多人想过要当CSO。CSO这个职位跟某些大牛表达的不完全一致,所以下面的篇幅会继续写,至少在技术层面,CSO不会只停留在微观对抗上,而是会关注系统性建设更多一点。至于跟董事会建立沟通桥梁,虽然也重要,不过关注的人就更少了,本书将不会涉及。