近几年来,令网络管理人员谈虎色变的网络安全问题莫过于蠕虫,而系统漏洞是蠕虫产生的根本原因。但是打补丁不能盲目,不是每个补丁都需要在第一时间修补,不是每个补丁都可以随便打上。因为,漏洞的修补是需要策略的。
探寻漏洞真相
由于漏洞所造成的安全问题具备一定的时效性,也就是说,每一个漏洞都存在一个和产品类似的生命周期的概念。只有我们对漏洞生命周期的概念进行研究并且分析出其内在的一些规律,才能真正达到解决漏洞危害的目的。漏洞从客观存在到被发现、利用,再到大规模危害和之后的逐渐消失,这期间存在一个时间周期,这个周期被称为漏洞生命周期。漏洞生命周期对于漏洞的管理有着极其重要的意义。
人们基于对大量真实数据的研究得到了漏洞存在和发展的一些内在规律,就是漏洞法则。漏洞法则中的每条法则都和漏洞生命周期有着密不可分的关系。漏洞生命周期的概念对漏洞的时效性进行了定性说明,漏洞法则对漏洞的时效性进行了定量的分析,并且给出了具体的统计数据。下面是几条通用的漏洞法则。
1.半衰期:在某一范围内,某一漏洞影响到的主机数量减少为一半的时间。
半衰期法则带来的启示:
●漏洞是从外部网络逐渐渗透到内部网络的,并且在内部网络的存活和危害时间较长,网络管理人员对内部网络的漏洞修补速度还需要进一步提高,这对漏洞的自动修补提出了较高的要求。
●对于企业级网络,不可能一次把所有资产的所有漏洞立即修补,即使做到了,付出的成本也将相当可观,而收效却甚微。
●尽量在半衰期内将高危漏洞修补,要对网络中的资产按照重要性列出清单并进行分类处理,把精力集中在与企业业务相关的重要资产,对于不同的资产采用不同防护措施进行处理。
2.流行性:50%的最流行的高危漏洞的影响力会持续一年左右,一年后这些漏洞将被一些新流行的高危漏洞所替代。
流行性法则带来的启示:漏洞管理是一个循环、永无止境的过程,需要随着漏洞增加的趋势不断调整漏洞评估和审计的频率,尤其是涉及企业业务的重要资产。
3.持续性:4%的高危漏洞的寿命很长,其影响会持续很长一段时间。尤其是对于企业内部网络来说,某些漏洞的影响甚至是无限期的。
持续性法则带来的启示:
●网络中引入新设备、安装新应用软件等行为,均可能引入一些旧的漏洞,因此,网络中的任何资产变更,都需要重新进行漏洞评估和审计工作。
●要特别警惕那些潜伏在应用程序代码中的漏洞,比如一些内嵌Microsoft database engine(MSDE)的应用程序可能导致SQL Slammer蠕虫在内部网络再次爆发。
打补丁要讲方法论
一个较为完善的漏洞管理过程至少应该包括漏洞预警、漏洞检测、漏洞分析、漏洞修补与安全策略和修补跟踪几个阶段,同时在实际过程中,时刻要将漏洞的风险和资产相关联。
漏洞预警acerun: yes"> 能够及时获得最新的漏洞通告信息,对于没有补丁程序的漏洞要给出临时的解决方案。
漏洞检测 检测之前需要对网络中的资产进行发现和跟踪,并且通过简便的方式展示,以便更快、更准确地识别、修补漏洞。必须周期性地对网络中的所有资产进行检测,要求漏洞管理工具在保证一定检测速度的前提下,要有较高的准确性。这里需要注意的并不是检测到的漏洞越多越好,有些产品的误报率很高,要对漏洞的有效性进行验证和分析,必须支持国际上大多数的漏洞标准(CVE、CERT、BugTraq等)。基于软件的解决方案大多需要人工进行维护,自动化能力较差。
漏洞分析 在漏洞检测之后需要通过具体的报告和数据来对资产的风险进行统计分析,清楚地显示漏洞的分布情况、详细描述和解决方案。其中特别需要注意的是要对网络中的资产风险进行分类,以便对后续的漏洞修补工作进行优先级划分。
漏洞修补与安全策略 通过统计分析的结果制定切实可行的漏洞修补方案并通知终端用户,可以通过文件服务器来提供最新的漏洞修补程序供终端用户下载和安装。特别需要注意的就是从合法来源获取补丁程序,并且要对补丁进行测试,来保证安装补丁不会影响业务系统正常运行,还要有补丁回滚能力。
安全策略 为整个企业的网络安全设备、服务器、网络设备、应用程序和终端主机制定严格的安全策略,并保证这些策略能够强制配置和下发。其中大多数需要手工进行配置,部分能够通过部署终端安全产品来自动完成。
漏洞审计 在每次漏洞修补之后监控终端用户是否及时安装了漏洞修补程序。
网络管理人员在制定漏洞管理工作流程的时候,要根据实际需求情况将上述过程进行细化或者裁减,为了使整个流程更有效,需要注意以下几点:
1.管理层的支持、工作流程的标准化对整个漏洞管理很重要。
2.尽量使用专业的、自动化的漏洞管理工具,尽量避免人工操作。
3.尽量不要中断企业的业务流程,保证业务系统正常运行。
4.尽量保持整个网络环境的配置简单,最好对同样的系统采用类似的配置,并且能够进行集中管理。
要补的不只是漏洞本身
大多数情况下,在厂商公布了补丁之后用户也都会及时地安装补丁。对于绝大多数网络管理人员来说,打补丁其实已经是日常工作中的家常便饭了,而且整个打补丁的过程大多数都遵循这样一个非正式的通用模式,这个模式大致包括以下几个过程:
1.专业安全研究人员或者组织研究并发现一个漏洞。
2.该漏洞被提交给相关厂商,等待确认并为开发补丁争取时间。
3.厂商确认漏洞并且发布补丁程序。
4.网络管理人员通过安全厂商或者软件厂商通告知晓该漏洞。
5.管理员寻找、下载并且安装补丁。
6.管理员将该漏洞和补丁尽可能通告相关人员。
7.假定该漏洞已经被补丁修补。
对于企业级用户而言,尤其是当他们的网络具有一定规模,同时网络中又有关键业务存在时,这样的过程和方法是否依然能够奏效呢?事实证明,这种传统的方法在对付企业中漏洞带来的安全风险时,还存在着很多局限性。
打补丁不能解决所有漏洞问题
没有一个规范的过程来对漏洞进行监控,企业就不会清楚网络环境中的漏洞是否被清除或者规避。一些漏洞是由配置不当或者配置错误导致的,这在前面的漏洞概念中已经明确指出,没有补丁能够清除由配置导致的漏洞。
前面提到的传统补丁方法想要成为企业补丁管理方法还缺乏一定的规范性,更何况补丁管理也只是漏洞管理的一部分而已。普遍的看法是将补丁管理过程看成一种生命周期模型,一个封闭的循环。在微软的补丁管理模型中,一个循环的完成意味着新循环的开始,新循环继承了前一个循环的成果并在这个基础上有所提高。循环的过程分成评估、识别、计划和部署四个部分,对每一个新的漏洞以及相应的补丁都要放在这个循环里面进行考察。
评估阶段 收集漏洞、补丁信息,收集企业资产信息并确定其价值,然后,在这个基础上,评估漏洞对企业的威胁,还要对前一次的执行结果进行评估,给出修补漏洞的要求以及其他防护措施建议。
识别阶段 这个阶段的工作以评估阶段收集的信息作为基础,主要工作有下列内容:寻找补丁并确定其来源可靠;测试补丁以确定其能与企业IT环境兼容。
计划阶段 给出在企业网络部署补丁的详细计划安排。
部署阶段 根据计划,在企业网络内部署补丁并进行确认。
上面这个划分适合企业从宏观的角度把握补丁管理,但及时部署补丁还是需要依靠自动化的工具来完成才有可能。
有效管理资产
当企业网络中的资产数量较多的时候,传统的方法不可能有效地将网络中所有资产存在的漏洞进行修补。在评估之前要对企业中的资产有明确的清单,企业网络中的资产包括网络设备、网络安全设备、服务器、数据库等资产,其硬件、软件的复杂度要远远高于个人终端,并且网络设备、服务器等承载企业重要业务的资产的重要性也要远高于个人终端,同样一个漏洞对于不同资产的威胁程度是不一样的。
据权威统计,企业90%的风险来自于10%的重要资产,传统的方法没有对威胁和风险进行等级划分,这也是它和漏洞管理较为不同的一点。传统的方法倾向于从纯技术角度看问题,如果有补丁我们就要打补丁,没有从长远角度去看这类问题。要对企业中的资产信息尽可能全面地进行收集,并且根据资产在企业业务流程中的角色进行合理分类,方便网络管理人员对企业中资产存在的风险有明确的了解,这样才能够有效地指导漏洞修补过程,将企业中的风险降低到一个较低的水平。
补丁本身的有效性
凡事都有两面性,打了补丁之后从一个角度来看是解决了一些问题,但是在打补丁之前,我们要从其他的侧面思考以下几个问题:
●安装补丁程序需要哪些基本条件?
●补丁的副作用是不是会影响其他应用程序或者其他资产的使用,是否会引入新的未知漏洞?
●补丁会不会影响一些企业正常业务的连续性?是否需要测试?
●补丁安装失败或者补丁影响其他资产,如何将系统恢复到安装补丁之前的状态?
传统的方法不能够解决上面提到的几个问题。在企业网络中,如果用户使用的操作系统种类繁多,就会导致补丁获取、分发和安装过程比较复杂,而且只能有部分的工作由自动化工具来完成,很多工作还是需要人工进行决策和实施,补丁管理过程的成本还是比较高。
补丁可能引入一些未知的漏洞,安装补丁需要在风险和收益之间得到平衡。厂商发布的补丁都是针对某一特定的软件版本,而且安装补丁之前要了解安装补丁的一些必要条件,要认真阅读补丁安装说明文件,尤其是Linux和Unix操作系统,否则安装失败或者影响系统正常使用的可能性非常大。
在安装补丁之前,还要考虑的一个问题就是安装补丁之后会出现什么不良的影响。对于很多应用软件来说,使用一些共享的库文件是很正常的事情,这就导致了不同应用服务之间可能存在一定的依赖关系,补丁程序很可能在安装之后会无形中影响到其他的应用或者其他的资产,所以安装之前要在模拟的业务环境中进行先导测试成功之后,才能进入正式业务环境。
最后一点就是补丁的回滚问题,这也是目前所有的补丁管理程序共同面临的一个难题。补丁的分发和安装的自动化已经比较成熟,但是补丁的自动回滚在实现方面还有一定的难度。
勿忘补丁变更记录
一些危害非常大的漏洞使大多数网络管理员处于“救火”的状态,因此很少有时间来进行补丁变更记录管理。缺少变更文档经常导致大量重复的工作。传统方法缺少过程管理,不能形成相对固定的工作流程,很难对整个过程进行监控、改进和重用,很多网络管理员大多将文档的中心主要放在漏洞的技术细节上,而很少关注网络中资产的系统配置情况。一个相对完整的漏洞工作流程(过程管理)应该包括以下几个元素:
漏洞确认、补丁和配置变更;确认补丁和配置变更是否合理;资产优先级划分的规则;补丁测试;补丁部署、配置变更和保护策略工作指南。