给系统打补丁并非易事,但对确保网络安全来说必不可少。
堵住漏洞要比与安全相关的其它任何策略更有助于确保网络安全。遗憾的是,大多数组织和用户并没有坚持给系统打补丁。
据安全网站Attrition声称,在2000年记录在案的5823起Web服务器遭破坏的事件当中,如果被感染系统安装了补丁,99%原本是可以防止的。
如今形势未见任何好转。防病毒软件厂商声称,SirCam和尼姆达分别是2002年9月第四和第五种最经常遇到的病毒。这两种病毒能够逞威正是依赖未打上补丁的旧版本IE浏览器。
还有红色代码2,首次爆发后一年多来,它仍在攻击许多系统。
如果打补丁很方便,组织和用户早就坚持打补丁了。恰恰相反,系统管理员和用户通常由于诸多原因未给系统打补丁。举例来说,打补丁这项任务需要下决心投入必要资源。不过,圣迭戈超级计算中心(SDSC)这家大机构证明,打补丁不仅是能够做到的,而且对网络安全具有重要意义。
SDSC位于加州大学圣迭戈校园,这家研究机构拥有大量的磁盘空间和计算资源。与其它许多研究机构和高等院校一样,SDSC也没有防火墙,不过路由器倒是在执行常规的过滤任务,譬如阻挡带有欺骗性源地址的数据包。但据SDSC声称,两年多来,自己没遇到过root权限被非法获取的现象。该中心将这归功于两个做法:逐步淘汰使用明文口令进行验证的所有网络应用软件;员工经常给网络系统打补丁。
SDSC的网络包括诸多版本的Unix以及数量几乎同样多的Windows桌面系统,总共有近800套系统。给这两种操作系统打补丁所用的技术迥然不同,不过确实有着一些共同之处。
有关补丁的许多研究论文几乎毫无例外地这样开头:引述开始实施打补丁方案所采取的三个事项。首先,组织要制订一项命令打补丁的政策。若没有管理部门的支持,诸多系统的拥有者会抵制给系统打补丁。譬如在SDSC,倘若用户不允许管理员给系统打补丁,就无法连接到内部网络。记住:因为没有防火墙,所以“内部”在这种情况下只是相对的。不过对那些希望仍在“外部”的用户而言,某些资源的确无法享用。
开始打补丁的第二步就是盘查软硬件库存。你要准确地知道哪些类型的系统连接在网络上,包括硬件架构、操作系统及所有网络服务,然后建立一个包含这些系统信息的数据库。利用商用扫描产品或免费软件如Nessus,库存盘查工作可以实现自动化。
扫描工具也能发现网络服务存在的潜在漏洞,但比查找漏洞更重要的是打上补丁。打个比方,漏洞扫描器只告诉你屋顶漏水了,尽管你早已知道屋顶需要修补。
大多数研究人员一致认为应该实施的第三个策略就是给所有系统统一打上补丁。你所在组织也许在运行几个版本的Windows或Solaris,但一定要让每个系统处在同样的基础上。在SDSC,这种方法包括逐步淘汰对旧操作系统的支持、逐步引入新版本。
无论怎样,都要利用配送光盘建立参考系统、装入标准应用软件,然后安装补丁。可以利用参与系统作为基准建立新系统。在Windows环境下,可以使用Ghost等克隆工具。在Unix环境下,视操作系统的需求而定,方法有所不同。安装Linux系统时,克隆硬盘既简便又迅捷。至于拥有较复杂硬件的庞大系统,可以使用厂商的安装软件,譬如Solaris JumpStart自动安装工具。
一旦所有系统被统一打上补丁,你就完成了大部分工作。尽管你仍需要在Windows桌面系统上装有最新的防病毒软件,但不会再受到如今盛行的许多电子邮件病毒的感染。你的Unix系统将免受自动攻击工具和脚本少年(script kiddy)实施的最常见攻击的困扰。虽然与攻击者的较量中还没有获胜,但你无疑获得了喘息之机。
打补丁过程的下一步就是确保给系统打上的补丁是最新版本,说起来容易做时难。微软光在2002年9月就发布了四则安全公报,几乎可能影响到许多组织的每个Windows桌面系统。但这就意味着每次微软打个喷嚏,你就要坐立不安吗?
区别对待
未必如此。美国国家标准和技术研究所(NIST)发表过如何对待补丁的一份报告,认为厂商宣布新补丁时,不妨采用一种鉴别分类法(triage)。为了不被宣布补丁的消息牵着鼻子走,NIST建议组建补丁和漏洞小组(PVG),在新的漏洞和补丁宣布后,小组成员定期碰面讨论及评估。只有出现紧急情况,PVG才会增加碰面次数,譬如说每周一次。
有时候也会出现极其危险、极易被人利用的漏洞,这时就要立即打上补丁。但更多时候,可以比较从容地安装补丁,然后加以测试。
在SDSC,管理小组和自愿的工作站用户一道测试新补丁。小组不是仓促推出可能会破坏某些关键应用软件的补丁,而是会在发布前至少用一天时间(有时是好几天)来测试新补丁。然而,用于测试的系统所运行的应用软件必须类似于将安装补丁的系统上的应用软件。因为除了电子邮件和网上浏览,系统管理员和用户的操作其实全然不同,这不像听上去那么简单。测试人员还要核实补丁的确堵住了漏洞,而且没有造成其它漏洞――过去就出现过这问题。在这种情况下,漏洞扫描器或Nessus等工具确实证明了自身价值。
一旦补丁经过了测试,而且证明安全有效,就可以安装了。假设所有系统统一打上补丁,那么利用Windows Domain验证的组织可以使用微软的系统管理服务(SMS)来完成这项工作。Windows管理员可以使用SMS安装程序,在安装补丁前后建立参考系统的快照(snapshot)。然后SMS会比较快照的不同,并建立一个包,描述未打补丁的系统和打上补丁的系统之间的区别。这办法尽量减少了传输文件的数量,同时记录下了包内的其它细微变化,譬如注册表键和访问控制列表(ACL)的改动。
SMS的目的在于,每次用户登录到域时,他的工作站都会接受检查,查明SMS客户软件是否已安装并在运行。如果还没有安装客户软件,NetLogon脚本就负责安装。SMS或者发布补丁,以便系统“拉取”这些补丁;或者把补丁“推送”给系统。因为给Windows系统打补丁常常需要重启动,许多机构往往把SMS设置成在前一天晚上打补丁。
在SDSC,Windows IT小组采取了其它措施,进一步确保SMS打补丁的工作顺畅进行。他们把新系统的BIOS设置成首先从硬盘启动,这样一来,如果某人忘了把插在机器内的软盘拿出来,系统不至于在重启动期间停机。IT小组还去掉了Windows NT/2000/XP Secure Attention Sequence对话框上的关闭选项,以防用户到了晚上忍不住关闭系统。晚上打补丁大大减小了因SMS引起系统莫名其妙地重启动从而导致用户丢失重要文件编辑结果的可能性。
至于Unix,SDSC使用了名为配置引擎(cfengine)的一个工具。该工具可用于纯客户机环境,也可用于客户机/服务器环境。无论哪种模式,cfengine都会跟踪配置文件,配置文件会在运行cfengine的Unix系统上处理日常管理任务,譬如删除旧的临时文件、检查所有权和许可权及修复符号链接。Cfengine还可以用来安装补丁。
系统管理员必须为每种Unix系统测试补丁,然后为每种系统采取相应的方式准备补丁。譬如说,Solaris 8及早期版本使用patchadd命令安装补丁,而许多Linux系统使用某种形式的rpm命令。一旦补丁准备就绪,系统管理员就可以把补丁包安装在服务器系统上,随后客户机系统会从服务器上获取补丁。cfengine还包括随机选择请求补丁的时间的机制,从而防止网络堵塞。如果每个系统都试图同时下载补丁,就会出现堵塞。
有的放矢
SDSC的系统管理员和IT部门人员不是把时间全部用来打补丁。相反,打补丁成了每周常规工作的一部分,并经常进行,这足以防止问题发生。SDSC同其它许多组织的区别在于两个因素:其一是以搞好安全和系统管理工作作为首要目标。其二是SDSC的管理人员愿意对包括研究人员在内的所有用户实施政策,从而使补丁策略有可能取得成效。
安装补丁的这项制度已见成效。SDSC的一些策略如Windows系统上运行最新的防病毒软件如今已成了其它机构所常见的商业惯例。而其它策略如使用参考系统、评估及测试补丁以及定期安装补丁使SDSC成为网络界其它同行的典范。
但即使所有组织都仿效SDSC的做法,仍存在重大的补丁问题。这是因为小企业和家庭用户很少给系统打补丁。这一方面是由于不愿给目前正常工作的系统打补丁。在其它情况下,可能纯粹是由于需要在还不太可靠的网络链路上下载100多兆的微软服务包(Service Pack)。
不管是什么理由,除非绝大部分系统打上了补丁,否则我们的网络没有一个会是安全的。
Tags:
责任编辑:小黑游戏