安全领域众多,分享这个议题,是因为在之前的工作过程中我们发现像大家非常关心的机密数据泄露 、资产盗窃、数据篡改、服务中断,以及物理逻辑的破坏行为通常都发生在运维安全环节,需要通过安全运维确保整个系统在一定的安全级别中运行。
一、安全建设思考
第一个阶段通常是救火,优先解决业务痛点,同时做一些基础的“保命”工作,来降低安全事件发生的概率,快速找到可能导致内外网安全入侵的安全隐患并修复,比如无线安全、VPN远程访问、弱口令、服务器后门等。这个时候也是最困难的,要人没有,钱也很有限,关键买设备也来不及,就得根据以住渗透经验转换成防御方法,做最有效的工作,按照2/8法则。另一个方面快速组织团队,因为这个时候,你的安全项目计划里已经有很多活等着干了。
第二个阶段是体系化建设阶段。过了救火期,可以稍微喘口气,进行有序的安全建设。主要精力是在基础安全建设,比如安全老三样、堡垒机、双因素、VPN之类的。这个阶段还互联网不了,因为团队里基本上不具备开发能力,主要是以商业安全设备为主,外加少量的安全工具自研,提升运维的效率;这个阶段也可以考虑参考ISO27001体系出台三、四级的管理规范,并推动落地,这样确保从源头解决问题,否则你永远处在擦地板的过程,因为水桶有洞,水在不断滴出来,擦一次是干净了,过一会儿又流出来了。
第三个阶段属于安全的高阶阶段,商用系统可能并不能很好地满足需求,所以就需要大量自研工具来解决实际问题,有能力的话安全大数据和APT也可以考虑进来。
第四个阶段进入安全的智能级别,智能的检测、阻断、响应代表公司安全未来的方向。
拿这个图说例子,可以更好地帮助理解IT系统的安全架构 。因为软件架构尤其在运行环境中会比较抽象。以往我们做安全系统的架构,由于对系统缺乏全面的了解,通常都是拿一张平面的网络拓扑图;做架构设计之前需要对系统做有机的分析,架构是分不同的层次和视图的。根据业务的差别,功能的不同,观众人员的差别,就需要不同视角的视图。
回到我们的主题,系统安全的架构应该包含哪些东西? 我认为它至少应该包含三个主要的维度,第一个就是系统自然的技术堆栈,这个在IT技术里面,任何一下系统的技术堆栈都是天然存在的。我们最常见的系统分层架构,有客户端或者浏览器、APP,下面有运行的代码,它可能运行在中间件服务器上,再下面可能是数据库、操作系统、服务器、网络和基础设施,这是一个最简单的分层方式;
第二个维度是业务流程视角,这个业务流程视角,其实和安全这个课题是没有太大关系的,它更多是关注业务功能实现。比如说支付业务有支持业务的流程,网购有网购业务的流程,理财业务有理财的流程,它是随着系统差别,实现不同的业务目标;
第三个维度安全视图,比如客户端、应用、中间件、DB都有不同的保护机制。在另外一个维度就是业务流程,业务的每个模块也需要不同的保护机制,这些保护机制最后贯穿成一个网状的结构, 如何选择合适的保护机制对它进行保护,那就需要第三个轴安全技术构成三维视角,在安全的机制里面其实它分为2类:第一类是系统自身的防护;第2类是对业务系统的保护。
为了便于理解,我们把这个框架对应到建筑架构上,第一层可能是地基代表基础设施,第二层是网络,第三层是服务器,第四层是中间件及应用,再往上就是应用、客户端,系统堆栈的概念比较好理解。
业务系统视图对应的横轴,比如我可能有101、102、103房间 业务流程我把它想象在,101 房间先办理注册,102 房间去选1个东西,103加到购物车,104我可能是支付,105完成退出。
接下来我们看第三个轴,系统自身的保护。你构建一个房子,自身要坚固,柱子要牢靠,墙体要结实,这样这个建筑才能稳定在这里。 除了本身安全,还要考虑在里面住的住客,要为他们提供安全保护,走廊、消防、空调的排布是不是合理的,能否有效保护内部用户的安全。这里你就能看出系统安全架构的基本维度,而对于保护机制的选择有一个逐步评估分解的过程。这里还需要大家注意每一个IT系统,不管是系统开发还是安全开发,都有生命周期的概念,而生命周期对安全架构的设计是有影响的。
但是我们仍然可以继续遵循基本的计算机安全实践,来构建安全体系。按照合规的方法去做,其实这一点是非常重要的。我们都知道之前在禁止酒驾立法之前,发生非常多酒驾引起的人员伤亡的事故,但是立法之后很少有人去触碰法律的红线。信息安全也一样,如果真正做到监管合规的要求,你安全的等级已经到一个比较高的维度了。
第二个身份管理,这个人是谁,在我的系统里面有什么样的权限,授予他可以访问哪些数据。第三个是数据保护,数据保护目前仍是很多企业最关心和最担心的问题,因为全球90%的企业都认为自己可能有数据泄漏方面的风险。
从整个2016年来看,全球总共爆发900多起非常严重的数据泄露事件,泄漏数据达到5亿多条,包括小米、京东、雅虎在2016都发生过大规模的数据泄漏的事件。
另外一块是日志,记录和监控可以协助发现未经经授权的安全事件,有助于确定安全措施有意义的改进,以保护您的公司的机密信息。这里只是一个示例,我们在构建技术保障体系的时候,按分层原则,每个层次上都需要考虑相应的保护机制。
给大家讲个与老板偏好相关的真实案例。之前老板传达的信息是买设备,别买大了,省下的钱公司用于投资,会产生更多的收益。听上去没毛病,所以我们在选购数据中心边界防火墙时,按年30%的复合增长计算,1套墙满意3年业务增长是没有问题的,到第四年插块板卡,就能扛5年。结果2年后,业务以每年超过100%的速度增长。在这个过程中,新老板上任了,说容量怎么不够了,就把之前的设计翻出来,也说得通,那就买板卡扩容吧。没成想只过了6、7个月,容量又报警了,业务成长实在太快了。只好去找新老板说板卡已经扩到头了;只能换一套更强处理能力的设备;你们可以体会一下向老板做汇报的心情。
第二个案例是关于品牌的。在采购过程中,有个品牌为了进来,杀低价中标。都是国际一线品牌,按道理来说没什么问题。但是有点水土不服,各种妖怪问题全来了,在短时内就发生了7次严重故障,所以用了不到1年,果断换掉。这次之后,我们对品牌的考虑更加慎重,和采购死磕,提升技术评分的比例,确保不让不符合预期的产品进来。
关于中心端产品的容量,如果是互联网公司,我建议按当前量,放大5至10倍考虑,因为业务的增长往往是倍数成长,非常吓人,不能总是出现性能瓶颈;另外一方面需要考虑架构优化,用Scal Out方式横向扩容。
关于测试,这里指实际环境测试。实验室不全面,如果条件允许,时间、人充足,测试当然没有坏处。如果时间紧、人手不足的情况下,就选择性地进行测试,比如性能类产品首次选择使用时,最好先测试一下。
另外,这几者之间要互相平衡,它们之间都是有联系的 。比如容量估算不准,又没做实际环境测试,等设备买来,一上线直接挂掉也是有可能的。
二、安全运维之术
这一部分主要介绍一下,安全运维需要考虑的一些点。
在信息安全领域,Due care实际上是说一个企业要制定各种各样的策略、规程和标准等,用来对企业信息资产的保护,也就是企业应该做的事情。而Due diligence则是要保证Due care要做的那些事情一直保持在最新状态。
举个例子说明。你要外出时,做了两个动作:
1、想着手机会不会电不够用呢,不够用怎么办;
2、随手把充电宝装口袋了。
1是你的思想活动,有没有“想”就属于Due care,也可能会顺手查看手机电量。想过之后,可能会觉得电够用不带充电宝,也可能会觉得不够用而带上充电宝,这都不重要,重要的是你“想没想”,有没有检查手机电量的意识(这根弦)。
2是你的实际动作。如果你觉得电不够用带了充电宝,但没检查充电宝是否有电,或忘了充电线,那就是没做到Due diligence。也就是说虽然采取了相应的动作,但没达到预期的效果。
而对于安全来说,需要想到,如果没有采取这个措施,可能存在怎样的安全风险,为了降低风险,采取了一定的行动,并且要确保这个行动是有效的、而且一定要真实的执行。
当三个问题得到的答案是肯定的,我再去申请执行这个变更。如果任何问题的答案有迟疑,会和自己的主管协商,制定最佳方案,包括变更失败的回退计划;通过这一举措,大大降低了变更造成的业务影响。
研发和运维的同事对安全的理解会有不同,但大体上对安全的理解包括DDoS攻击、病毒木马、堡垒机、数据脱敏、拖库和数据泄露,只能理解和自己工作关系比较大的那个部分。而安全的同事关注的是1-7层上我的防护措施会不会被绕过,然后就是各种漏洞,开源框架的、编程语言的,代码里的、逻辑上存在的各种安全漏洞公交站,传输过种中以及存储过程中的漏洞,bug的修复,更高级的漏洞利用方式。找出各种高、中、低危漏洞。除此之外还在时刻关注无线渗透、弱口令、0day、彩虹表、各种马、注入、后门。这里就不一一列举了,反正就是能黑进入能拿数据,能偷钱的技术都需要了解和防范,弦崩的还是很紧的 。
其它非技术部门的同事对安全的关注仅仅是看看热点,谁家出什么事了,旁观者心态。视野的不同决定了在安全这件工作上采取行动的不同。
漏洞年年有,今年特别多,像前段时间出的Struts2,还有4月15日国外黑客组织Shadow Brokers泄露出了一份机密文档,其中包含了多个Windows远程漏洞利用工具,可以覆盖全球70%的Windows服务器,影响程度非常巨大。这两次事件影响面都非常的广,修复花很大力气,在企业里面推动补丁管理还是挺难的,简单来说就是补洞的人不懂安全,懂安全的插不上手。需要说的是补丁是必须要打的,不然你就给入侵者留下方便之门,不做为,亦作恶。
关于安全意识
需要足够的耐心,一次次的去宣讲,普通员工到技术人员到管理层,大家整体的安全意识才会提高,特别是管理层,宣讲的时候讲技术通常效果不好。这时应该选择讲案例,将安全与商业价值联系起来管理层才会真正重视。安全工作成功的关键是高层和重视和承诺。
关于变化
这个也好理解,整个IT环境是不断动态变化的,当前有效的安全防护措施,因为某个不安全系统的上线,就有了突破口,需要持续的检查,发现变化带来的新风险。
关于坚持
其实安全运维是整个安全的基石,你需要耐心去踏踏实实做一些事情,而很多我们身边的大牛在最初入行时也是从调设备写代码开始的,通过一些真正的接触一线的工作,你在后期的提升会比较快,而不是说看几本安全的书就能怎样。
三、安全运维自动化
据我了解使用几台到几十台的企业有很多,也有一些大型集团公司或跨国公司使用数百台防火墙。面对这么多防火墙,要把它管理好,难度是很大的。有些厂商就说了,你可以使用我们的防火墙集中管理系统帮助降低运维复杂度。但当告诉他,我们有好几个品牌的墙,他们往往会说对不起,他的系统管不了,只能管自家的墙。有商用产品可以实现不同品牌防火墙策略集中管理,但是按License算钱,价格昂贵,而且不灵活,不能实现个性化的需求。在这种多品牌,多数量的情况下,防火墙系统的运维难度和挑战将变得非常的大。
策略生成模块,抽象策略对象,判断策略申请是增删改哪种场景生成相应的工艺。工单对接是指如何与企业中的变更管理工单管理系统对接。自动化不能逾越流程,反而要严格遵循流程。在工单对接环节会重点强调。其它工具,VPN管理、改密码、审批关系维护、墙元素查询,都非常有价值,极大提升运维工作效率。
总结
第二个要有充分的预案,因为我们不知道接下来会发生什么,我们通常认为防火墙HA部署的可靠性已经很高了,但是极端情况下会出现两台防火墙同时坏掉的悲剧,就需要有应急预案处理这样的极端情况。
第三个是定期演练。即使有了预案,还需要定期演练,不然真出现问题,对方案不熟悉或是预案针对的环境已经发生变化,预案早已不再有效却没有及时发现。
第四是善用乙方的资源,在系统的专业性方面,已方的工程师可能比较强,但对于业务本身,当然是甲方工程师更清楚,要利用相应的优势,为业务提供保护。
第五是创新思维,就是用创新的想法去解决实际问题,并且成为一种能力。
第六是全面安全视角,安全运维不仅是对各种安全设备和软件进行运维保障系统安全,还要兼顾运维安全,解决研发、运维同事产生的各种危险坑点,基本上是涵盖了整个系统安全的方方面面。所以需要有全面的安全视角,才能应对不断产生的安全风险和挑战。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/53689.html