李晨:甲方企业安全建设之路
2019-08-30
第一,甲方安全价值。
做了这一块的简单整理,我估计大家刷朋友圈的时候已经占满了微信朋友圈。从2017年开始整理,第一块是勒索病毒,2017年对政府行业、能源、银行各个机构造成了比较大的影响。当时我还在车联网行业,其中被政府的机构叫去处理相关问题。这一次也是在历史上有大规模的攻击,对整个甲方敲醒了警钟,包括后期大家逐渐认清了勒索病毒的可怕性。
2018年做安全这块记忆犹新,Gitialb达到1.35高峰值的流量,幸运的是运营商很快对端口做了封堵,没有把病毒蔓延下去。再就是数据安全这块,华驻是经典的案例,后期的应对方式是比较完善的,前期做的稍微参差不齐。我记得在2014年、2015年12306陆续出现问题,包括2018年底出现数据谢列,这一次波交给了软件。像我们公司有电商的业务,618也是重要的,在上线前把活动的安全性检测好。据说,最近刚发生的易到用车也是遭到了应用层的攻击,具体还没有进一步去调查。所以这些东西是老生常谈的安全价值,没事会在朋友圈刷屏的东西。
很多初到甲方或者是厂商的朋友上来跟大家聊要合规、要支持2.0,支持网络安全法,天天给CEO老大去洗脑,网络安全不做要蹲监狱,老板可能也不会在意这个东西。最近数据安全这块受到国家的重视,六一儿童节出了儿童信息保护征求意见稿。这一块可能是大家在做甲方安全给领导去灌输为什么做安全的思路。
可能有一部分同学跟我一样技术出身,到了甲方开始挖洞,要自己打自己,我就可以越权帮别人支付凭单,可以改变别人的性别。在领导看来,第一个,业务影响非常的有限。第二个,你给我讲什么高大上的东西也不一定听得懂。很多人在领导得到的反馈是安全挺重要,但最后还是没有作为。
接下来说一下个人在整个企业安全过程当中应该怎么样去跟领导灌输这些东西。越往高层去走更偏向于业务、偏向于战略、偏向于实际应用,很多东西结果与导向业务结合。前段时间有同学问我说,我要去推等保,但怎么跟领导说等保特别重要?紧紧依靠国家推行的网络安全法不一定哪一天会查到你们企业头上,尤其是像我们中小型企业,不像BAT、TMT大的公司,中小型企业很多全是靠几个人垒起来的安全壁垒,非常的脆弱,这块投入相对有限。大家在推合规的时候建议以业务为基础,有一些业务上的合作。比如说,我以前是做车联网出身的,可以跟交通部有很多的合作,各地的交通部是有等保要合规的,起码政府机构这一块做的不错的。在业务对接的时候,他们会明确的提出来,我们是等保三个系统,如果你的系统是等保二级,你的数据是不应该跟我对接,或者不应该把我的数据拿过去,我怀疑你的安全体系建设有问题。
像我现在是做在线教育,前一段时间去出差与当地的高校合作,现在学校也已经被当地的网安吓得够呛,天天被约谈,说网络安全、信息安全怎么建设。他们对我们也提出了很大的要求,到什么样的程度才可能有接下来进一步业务的合作。一旦贴合到业务,告诉领导业务能够帮你去完成这个项目能帮你挣钱,领导可能接下来会有相对的安全投入。
天天跟别人说,别人家的网站又被勒索了,天天说这家网站又被攻击了,很少有发生在自己身上的,不打到自己身上不疼这一点是肯定的。所以说,可以跟领导引申聊一下核心数据,核心数据到底在哪里,到底安不安全。财务业务部门这块被加密勒索领导没下一步的招,把领导去代入到真正的业务场景当中。前一段时间有人把B站的源码放到网上,造成了很多大规模的反响,自己公司也有相关的问题,刚入职的时候发现了公司有相关的代码被传到APP上去。如果去跟领导说源码被传上去了,大部分的源码没有那么的核心、那么的重要,重要的点在哪?在里面找的数据库账号密码或者是关心的能够越权拿到核心数据,这时候是领导业务更加关心的。当时跟领导去讲泄露了会影响到学员,领导讲挺重要,这一块加强。
内容安全,尤其是在今年的时候被国家抓的非常紧,最近又在去推这一块,只要论坛上有不法言论黄赌毒很快被国情部关停,这一块影响真实的业务。总结一下,不要平时老给领导灌输支持等保,国家必须要求做等保,领导可能会问你不做怎么办?找一下头条、找一下朋友圈,一翻罚200块钱,那领导说做等保多少钱?200万,那罚200块钱吧。可能要跟业务挂钩,这一块更有说服力。
第二,安全建设思路。
第一点,先去梳理风险,评估风险、评估脆弱性。从底下往上看是简单到难的过程,最简单防护边线,最近有很多的朋友聊这块又被黑、又被挖矿,怎么老是攻击?我跟他说,你先梳理你的互联网边界,在人数少、投入资源少的时候去缩小被攻击的面,最好有效的防护措施。我们有一个领导做法还是非常霸气的,很多年前有想过,在注册的时候可能会上传头像、营业执照这些东西,大家都在去尝试怎么能够上传木马文件。说实话,上传上来执行不了没有太大作用,但是领导不懂安全,对这一块也是非常头疼、也是非常担心的。他做了一个决定说直接把注册入口关了,这其实也是缩小攻击面临的方式方法,也要跟大家的业务贴合。当时我们的注册是可以根据邮件注册,注册量比较少,这是缩小攻击面。
说到这里,还包括边界的设备。大家可能有防火墙,ADS抗击设备都在外面,设备的风险点也是有问题的,也是需要去关注的。当时梳理的时候有一台是安全设备,不知道是哪年买的,可能之前有,一直挂在外面。因为这台安全设备自身存在漏洞被别人进来的,所以边界一定要处理好。再往上是PC服务器,像弱口令、账户、补丁管理,前一段时间刚曝的0708漏洞。当时很快第一天已经开始逐渐的修复,大概也就两三天的时间实现全面的扫描。当时跟运维团队做了简单的沟通,工具没有很快的出来,运营团队问我产生这个东西着急吗?说实话,这个东西比较重要,但不一定特别急,互联网上没有直接里工具出来,但肯定会出来,建议你们现在着手修补,运维团队还是比较靠谱的,当天晚上就做了。
再往上到应用服务层,这一块应用有时候对外、有时候对内,正常情况下,很多的内部系统放到内网是安全的,有些人说为了方便放到外网好不好?很可能被别人命令执行以及绕口令的方式进来。最近在想大部分的攻击无非几点,上传漏洞或者是组件自带来的漏洞等方式进来。这一块也是大家需要去注意的。再往上是最近几年一直在头疼的数据安全,数据安全太大了,单独拿上来可能也要讲一天,在这儿简单举了几个例子。一个是数据接口的暴露。时间长了,很多的接口在不断的迭代,无论是最下层的编辑策略,最上层的应用接口,大家可能一直在往上添加接口,真正去删除、消除风险的措施还不够,没有意识到去做闭环,不用的时候把它关掉,这一块也是存在问题的。最难管的是人,无论是有意、无意的数据泄露都是很难监控到,这一块是业界比较一致认可人是最难管理的,这一块也要加强安全意识宣贯。
面对这些问题怎么做?需要一支专业的安全团队,后面加了比较重要的角色,高层领导的支持。如果高层领导不支持,跟运维、跟开发对刚的时候安全不重要,先放一放吧。再往上的话,最基础的安全的能力要建立在IT基础能力之上,我去过几家甲方公司,包括监测的公司一直觉得如果IT基础能力不够,资产梳理不清楚,做安全一步一个坎特别难的,起码技术角度上会遇到坎,像常见的系统是比较偏基础的,需要建立起来。
再往上是内网安全,通讯就不说了,邮件安全是攻击者比较喜欢去利用的。如果我是攻击方更喜欢去拿咱们的职能管理人员账号以及运维的账号。曾经跟领导沟通过,你有没有考虑过运维总监邮箱密码被盗是什么后果?邮箱里边有多少密码?总监说从来不在邮箱里边发密码,从来不会把密码放到邮箱里发给别人。后来大领导拍,你不会给别人发密码,你发密码的时候别人不会抄你吗?这个数据多多少少一旦时间长都会有。
内部办公系统,前几天有人说(英)又被锁,你不能光内网。(英)稍微好一点光交代了代码层的东西,如果你的OA被干掉更多的数据被出去了。再往上Web应用、移动应用以及更头疼的是接口的相互调用。接口分为两块,一块对外、一块对内,对内有时候扫得出来在页面上找得到,对内调用老的接口很难被监控得到的。再往上数据业务层面,刚开始数据资产的收敛到收敛之后需要根据业务层面的人对接数据怎么去分级分类。大家有通用的标准,手机号、银行卡号,每个行业有每个行业的不同,之前在的车联网行业,车主的信息、车牌号是敏感的东西,车辆行驶轨迹也是敏感的东西。像我们现在公司在线教育学员的信息、学员的发票、学员的地址又是敏感的信息,这一块要控制好。再有数据加密和数据审计,尤其是数据审计这一块,无论是外部和内部,数据审计可以用子代或者是自己去搭买一些初审工具,这是内部的。外部从应用层面接口的调用,这些数据是否被频繁的调用?有没有异常的流量?这一块也需要被审计起来。
面对大的体系架构来讲,怎么样才能一步步把它做得更好、更完善一些?曾经在2016年读了互联网安全管理书,觉得还挺不错的,一开始讲了需要有三张图,第一个是架构图、第二个是Top(音)、第三个是业务图。为什么需要架构图?作为负责人、安全管理者,可能需要有很多纵向与横向的沟通,可能面向的是运维团队和整个的研发团队、IT团队以及业务团队,出现问题需要向哪一级了解问题?一定要去了解清楚,包括像我现在做在线教育可能呼叫中心、客服中心人比较多,涉及到哪一块数据一层层往上梳理清楚。网络Top(音),出现故障的时候根据网络Top排查故障是非常重要的。再是业务图,安全资产、主机资产对应到业务平台是哪一些?最关键的别忘了有负责人。一定找到负责人是谁,一旦出现问题找到对应的负责人是非常重要的。
有了基础之后有工作需要去做,安全测试在人比较少的情况下,可以先做周期性的安全测试。比如说,可以每个季度,甚至每半年看大家的业务量做周期性安全测试。再是加强迭代测试,每个企业不一样,所以有的企业觉得时间周期长,你可以慢慢来。有的像之前公司一个周迭代上百个版本,所有平台加起来上百个版本,一两个人、三五个人迭代不过来。在迭代项目过程当中一定要去把控好大版本的迭代,包括618或者是新的功能、新的平台上线要加强。再有如果真的自己忙不过来,可以去借助第三方的能力。
拿自己举例,我们一共有18个平台,可能面向开发人员就那些,无论是开发人员忽悠、代码的忽悠,最终可能会导致一个漏洞在一个平台上出现可能会在其他各个平台上出现。目前这个问题是我们在这儿通用的,在做第三方安全测试的时候实际撸,然后发现其他平台上也会出现这个问题,那就出现了事半功倍的作用。
再有是安全运维,自有的安全防护设备要用好,今天来之前有同事说上(英),一上整个业务线就断了,前期没有做好安全测试。很多都喜欢做开元工具,有些开元的工具方便、好用、成本低、性价比比较高,包括牛的企业有自己的安全开发团队给自己搭了,这一块有系统运维,再就是安全响应,出现故障的时候怎么样去应急?当时定了一套基础的应急响应手册,老大给我们讲的非常明白,说你把所有的安全事件全都给我分好类,全都告诉我这一个事件一步一步怎么去查,告诉运维应该怎么去做,你就完全把所有运维团队的人当傻子就可以了,只要能按照你的手册一步一步去调查这是什么原因,怎么去解决就OK了。说实话,做这个东西真的特别难,但是反过来想也不是没有道理。我是一直在完善优化过程当中这个东西,不会列全,列全很多(英)人就可以下岗待业了。这一块也是需要大家去换位思考的,运维团队真的没有像你这么专业。
再有是账户审计,也是之前做的,包括我来了这家公司做的,邮箱账号、OA账号由兼职人员,包括是在职还是离职的状态?这是非常重要的。再有是边界监控,对外资产暴露了哪些?现在很多企业很难做到实时监控,上线业务一定知道做非常难,但其实可以通过内部和外部两个段结合起来。外部,可以用类似于其他工具,包括现在的一些商业产品,自动化探测资产东西,可以去把一块监控起来。内部,加强内部的资产配置变更流程,不能让运维随便上一个。
之前遇到一个坑,某部门上线了(英)还是Web服务,这个问题不是单一的一个人导致的,它的端口影射是之前开的,把端口影射出去了,但是那个人离职了,离职他过来之后不知道端口影射出去就开了别的服务正好出去了,正好那段时间直接被攻击方抓住把柄黑进来。这个问题不仅仅是一个巴掌的问题,一个是边界策略有没有及时的去关闭,有没有在不用的时候去关闭。去年删了六七百张策略,无论是东西向、南北向,尤其是东西向这一块很多不用的都留着。还有员工自身没有做到基本安全基线加固能力。最后提到策略管控,无用的策略一定要及时去删除,添加策略一定要记好在不用的时候删除。
做完这些整个思路要改变,从以前被动的发现业务被影响了,运维团队、业务团队跑过来告诉你,李晨,我们的业务被干了,我们的CPU高了,紧接着开始应急响应。这时候发现入侵已经成功了,数据也被偷了,命令也被执行了,这时候是被动感知状态,我们是被业务方或者运维方牵着鼻子走的。这一块去优化,从被动感知到过程感知一阶段,首先你在攻击我,在你攻击我的时候感知到了你在干我、你在搞我。你在搞我的时候用各种策略、各种防护手段阻断你攻击的路径,阻断之后再去修复,这时候安全终于可以翻身农奴把歌唱。主导业务体系优化修改这个问题。
这是之前列的表,大概做了简单的梳理。攻击路径,最基本的做资产探测,这一块用比较简单的工具扫描,再是内部录入ID资产。曾经我是把CMDP写了简单的脚本,资产变动没有特别的大,不会经常去批量增加IP地址,资产这一块主要是IP地址。所以每个人去导入一份扫描,扫描完看业务有没有新的增长和暴露出去,如果没有新的发现就搞我,搞我会有日志监控。曾经遇到过爬虫爬我们的数据、批量扫我们数据的时候,可以设最简单的预值。正常情况下,一个人一分钟看我三四页,结果看了我一百多页,其实是有问题的,在发现中间搞我的时候阻断。如果最后没有发现进来,主机基线以及HIDS各方面综合的能力利用起来,检测到你在我服务器上做命令执行了。首先,我要防止你进不来,进来的时候要防止你做不了事情。如果你能做事情的,我让你读不了,你能读得来拿不走,拿得走看不了,看得了用不了,所以一层层去做防护。
第三,安全落地。
讲一下自己在做安全建设小的思路,自上而下管理体系、管理思路。大家也是经常去聊这个事情,最重要的就是三个字“同理心”,我觉得同理心这块是非常重要的。把这块分为:垂直管理、水平管理。垂直管理是向上跟领导简单做汇报,这一块需要有最基本的管理思路,不能总拿工程师思路跟领导去做,认知面不是在一个层次的。第二块贴合业务,领导最关心的是业务,怎么挣钱。向下环节需要有工程思维,在什么时间段做什么配置,在什么时间段去完成实现,这一块是做工程师比较喜欢看到的东西。大家都是从基层干起来的人,都渴望着被认可的欲望。
如果说我干的很好表扬我一下,不需要给我十块钱。但如果我干了辛苦就一句话带过了,可能很多人觉得不爽,我干的挺牛逼的,你为什么不表扬我一下?这是垂直管理,再是水平管理。水平管理主要是跨部门,像去开发、去运维吐槽事情该怎么落地的时候,一定要抱着结果为导向的形态去解决这个问题,这是一块。第二块一定要去想办法互惠互利,曾经有朋友跟我说过,暗线不能不能给别人产生价值,怎么让别人主动帮你给你产生价值?这是互惠互利。再是组织虚拟的安全团队,当时心血来潮一个人搞SDL,基本上是不可能完成的,那就做了信息安全的虚拟团队,在每一个业务平台找了人,进了半个人把这一块落地。这半个人的作用是什么?可以知道其他开发人员落地开发规范,共享漏洞的修复方案。每次把大家叫一块的时候,可能各个平台都有漏洞,每个平台的修复代码会一致,再有是把案例整理起来后期送培训。不仅仅是编码规则,安全培训体系也相应的慢慢把这块建立起来。安全培训体系不仅仅是简单的安全意识培训,可能包括编码培训、工具的使用,让对方真正切实的了解到我们是怎么攻击的,他们才知道怎么去防御。说实话,团队挺好的,让每个团队的研发人员讲了一下每个平台的安全是怎么做的。他们是真正站在研发的角度来讲安全,效果会更好、更加被认同。
最后讲一下SDL,及时是讲因地制宜的SDL,也是删减版之后的。微软推SDL的时候,人家可以好几年迭代Windows版本,我们是不可以的。很多是比肩开发的过程,所以整个SDL会陷入沉重、冗余。抓几点,安全培训体系的建立,无论是安全意识、安全技能,一定要去落实。再是安全开发规范,好多人找我上线的时候要有哪些开发规范,一百条和没列开发规范是一样的效果。如果每天产生10万条告警日志和没有产生是一样的,所以要落地出来。安全测试这一块一定较嵌入到上下游,不要让任何版本逃过你的视线,可以不测,一定要知道。这个业务可能不是重要的业务,功能没有太大的问题。
第四,安全痛点与思考。
大家在经常生活中会遇到的问题,好多人跟我吐槽领导不重视安全或者是领导口头上重视安全。每一块都拿着16个字去总结一下,向上管理、结果导向、换位思考、管理思维,一定要有同理心去了解管理者领导是什么样的性格,他想要做的事情是什么。曾经有人问我,如果你想做的和领导做的不一致会怎么样?如果完全相悖劝你离开,但有一定的角度重合度,可以先把领导的事情做完再做自己的,也不耽误事。
这一块考虑领导是怎么去想的,也有人在群里吐槽跟领导去讲GDK版本的问题或者讲GDK,结果领导问我GDK是啥。你们的理解层级一定要去了解领导是在什么样的认知程度上,领导可能压根儿不需要知道什么叫GDK,也不需要知道什么叫XSS(音),这一块跟领导去汇报他想要知道的东西。
第二块是害怕背锅,适度背锅,强身健体,过度背锅,灰飞烟灭。怎么讲?大家以安全事件为出发点推动安全,没有安全事件领导永远不重视安全,一定要有适度的安全事件触发。但如果像我的同事一样一不小心上Buf,所有的核心业务干掉,这东西可能真的就是灰飞烟灭的结果。
再有是修复时间长,第一个先水平管理,互惠互利,同时一个部门,没有一堆肉解决不了的,如果解决不了两堆肉解决问题。如果开发人员、运维人员态度不好,可能需要用到垂直管理,需要去找领导这一层汇报强行把事情解决掉。
最后是人员不足的问题,二八原则,事半功倍,从无到有,从有到优。只有两个人完成80%的活不难,安全最重要的是剩下的10%到20%,前期的80%是花20%的力可以解决的,包括刚才讲的因地制宜SDL去做一个项目是可以的,做全部的SDL项目是难的。再有从无到有,从有到优,先把东西推进去,逐渐的优化和细化,当老板看到效果批到人再做更细化,这一块是基本的思路。