运维安全是企业安全保障的基石,不同于Web安全、移动安全或者业务安全,运维安全环节出现问题往往会比较严重。
一方面,运维出现的安全漏洞自身危害比较严重。运维服务位于底层,涉及到服务器,网络设备,基础应用等,一旦出现安全问题,直接影响到服务器的 安全;另一方面,一个运维漏洞的出现,通常反映了一个企业的安全规范、流程或者是这些规范、流程的执行出现了问题,这种情况下,可能很多服务器都存在这类 安全问题,也有可能这个服务还存在其他的运维安全问题。
本文一方面希望帮助甲方覆盖一些盲点,另一方面也能够为白帽子提供一些漏洞挖掘的方向和思路。
一图胜千言,下图是个人近期总结的一些常见的运维风险点。
附XMIND源地址: https://github.com/LeoHuang2015/ops_security/blob/master/%E8%BF%90%E7%BB%B4%E5%AE%89%E5%85%A8.xmind
攻防对抗本身就是不平等的,防御是一个面,而攻击者只需要一个点。要防住同一level的攻击,需要投入的防御成本是巨大的。 在攻防对抗的各个level,高level的攻击手段是可以随意贯穿低level的防御层面。
对于很多小公司(其实也包括很多大公司),对待安全漏洞的态度基本上都是遇到一个坑,填一个坑,这种纯“救火”的态度无法保障运维安全,只会像打地鼠一样,疲于奔命。
然而大部分公司都处在这个level——填坑救火(不救火的公司没有讨论的必要)。一方面是公司自身的安全意识不强;另一方面是小公司的安全资源配备有限。
不同于小公司,一些大公司,特别是互联网公司,安全发展已经逐渐的从“救火”进入到“建设”的阶段。
从甲方的角度而言,这个过程是艰辛的,长久的。
在企业进入安全“建设”的阶段时,运维安全漏洞会呈指数级下降,一些常见和普通的问题不再出现。
这个时候,对抗点会集中在一些比较边缘的点。包括不常见的服务端口,依赖第三方服务的问题,又或者是一些合作方服务器安全漏洞等情况。
通常情况下,造成这些安全问题并非是安全技术的缺陷,更多的是安全规范、标准流程覆盖不全的情况,如新业务、三方业务、收购的业务,运维体系还没有统一,运维安全建设没有及时跟上;即使在安全规范和流程覆盖完全的情况下,在具体的执行上也会出现一系列问题。安全规范和标准流程越多,越容易出现执行上的问题。
这两类问题是建设时期比较典型的情况。很多时候,领导都会有这样的疑问,我们的规范、流程已经推到各个部门,看起来各个部门也按照标准执行了,为什么还会有这么多“漏网之鱼”?
于是,如何主动的发现这些漏网之鱼也是一个急迫的需求。
这个时候需要安全运营的介入,安全运营在戴明环中扮演的量C/A的角色,定期check安全规范、流程标准的执行情况,然后推动安全问题的Fix,找到根本原因,一方面不断的完善规范和流程,另一方面不断的提升运维安全的覆盖面。
比较常见的就是安全扫描,通过定期扫描发现的问题,反推流程和规范的执行;当然,通过白帽子报告的漏洞,确定是流程和规范的原因后,进行反推也是一种有效的方式。
天下武功,唯快不破
在运维安全提醒建设到相对完善的情况下,通常情况下,企业是相对安全的。但是,一旦有新漏洞的出现(在国内,有exp发布的漏洞往往就等于新漏洞),拼的就是响应速度。
一方面是需要安全运营对这些严重漏洞的快速预警;另一方面就是安全专家的技术功底了。在没有官方补丁发布的情况下,如何通过一些hack技巧进行防御也是非常重要的。
比如最近几年比较大的安全事件,如2013年7月17日的struts2漏洞,2014年4月7日的心血漏洞,就算是国内甲方最强安全团队BAT也是难于幸免。 这一level,甲方非常难做,唯一能保障的就是在中招后提示响应和修复的速度。
在整个运维安全的对抗中,人这一块尤为重要,运维安全做的越好,这块越发重要。
安全规范和标准可以落实到各个部门,以流程的方式强制执行。但是运维人员安全意识的问题,很难进行控制。
最简单的就是弱口令,弱口令,弱口令!
各种系统的弱口令,各种后台的弱口令,各种服务的弱口令。这么多年了从来没有断过。
很多运维有些“坏”习惯。
比如直接在web目录进行web文件备份、nohup后台运行程序。这样会导致备份文件、程序执行的日志泄露;又或者随便开一个web服务下日志或者传数据,如python -m SimpleHTTPServer,这样就直接把目录映射到所有用户,如果是根目录,影响就更大了;当然,还有些运维喜欢把自动化脚本上传到git,脚本这东西,密码就在里面,一不小心就直接泄露了密码。