安全性神话

安全性神话

作者:Jesper M. Johansson 和 Steve Riley

信息

摘自 Jesper 和 Steve 的新书《Protect Your Windows Network》(保护您的 Windows 网络)。该书将于 5 月下旬由 Addison-Wesley 公司出版发行。有关更多信息,请参见:http://www.aw-bc.com/catalog/aca … ,0321336437,00.html

请参见其他安全管理专栏文章

■■■

Windows 世界里的安全配置更改和安全指南的出现已经有大约 10 年的光景了,而对于其他领域,这个时间则更为漫长。最初由美国国家安全局和 SANS 发布的 Windows NT 4.0 安全指南基本上只是这些更改的一个清单,以及每种设置背后的一点基本原理,但是没有任何的整体关联性。它们是对我们称作big blue secure-me-now’按钮这一要求的回应。而问题则是:这样的一个按钮根本不存在。如果存在,那么厂商们早应该开始销售它了。

安全性配置指南中存在许多问题。首先,很容易理解人们为什么这么急切地需要它。每个人都可看到启用某些设置和阻止某个攻击带来的好处。在一些环境下,这样做甚至不是一个可选操作。而是必须依照某些安全配置或强化指南对系统进行配置,使其符合安全策略的要求。在其他环境下,也强烈鼓励遵循安全性配置指南。在您开始执行安全性调较之前,我们认为理解它们存在的一些最基本问题是很重要的。我们将这些东西称为神话。

为了避免给人以我们很讨厌安全指南的感觉,我们想指出的是:在过去 10 年中,作者们已经参与到了所有针对 Windows 的常用指南的创作、共同创作或编辑工作中。精心编写的正确的指南具有宝贵的价值,但是为了能够正确编写这些指南,您必须了解它们无法完成的一些工作。这就是神话之所以重要的原因所在。

警告
本部分的内容有一点(或者说非常)冷嘲热讽的味道。您可以不相信我说的内容并且对给出的一些例子大肆嘲笑。但是,不要对我们试图传达的信息充耳不闻:这些都只是神话而已。如果您小心谨慎地避免了落入相信它们的陷阱,那么您将能够将精力集中在真正带来差异的那些事情上,而不是像其他人那样,被引入因一叶障目而不见森林的境地。

神话 1:安全指南可让您的系统变得安全
打住,为什么说这是一个神话呢?安全指南的最基本目的不就是为了让您变得安全吗?的确如此。这是一种常见的想法。但是,安全这个词意味着一种我们实际永远也无法达到的最终状态。安全性是一个过程,需要持续不断地对其进行评估。没有任何东西能够将您置于永久性的安全状态。遗憾的是,许多人(但是当然不包括读者您了)似乎相信,他们只需简单应用一些安全强化指南,就可以让系统变得安全。这显然是一种谬论,原因有以下几点。

首先,请想想最近流行的那些蠕虫病毒:Sasser、Slammer、Blaster、Nimda、Code Red、ILOVEYOU 以及 Friends 等等,想起它们简直令人作呕。由于所有这些蠕虫都利用未打补丁的安全漏洞,所以无法通过任何安全设置来阻止它们。尽管绝大部分的指南都建议您应该安装补丁程序,但我们发现许多系统的管理者由于已经应用了安全指南,因此忽略了补丁的重要性。如果您不能肯定应该安装哪些补丁,那么正确的回答就是安装所有补丁程序。但是,在理想情况下,您应该为补丁程序管理制定相应的流程和办法。有几个设置可防止网络因未打补丁的安全漏洞而遭到攻击。

其次,很少能够通过安全设置来抵挡真正的攻击。您也可做一些事情,虽然难度更大一些,但是从总体上看,网络不会因为可以被关闭的设置而遭到攻击。但是也有少数例外。比如,安全指南可能会关闭 LM Hash 的存储,从而极大增加破解密码的难度。不过,正如我们在以前的文章中指出的 (http://www.microsoft.com/technet … ecmgmt/sm1004.mspx),严格说来,根本没有破解密码的必要。安全指南可能还会让匿名枚举变得更加困难,但是攻击者一般总是能够访问某些可被利用的帐户,而不是使用匿名连接。

这在很大程度上是由于安全指南总是尽力撰写得简单,而各类技能高超的攻击则十分复杂。安全指南提供了一个很好的起点,但是要真正改善安全性,还有许多其他的工作要做。通常,您需要采取复杂的安全措施来阻止各类复杂的攻击,而这些复杂的安全措施无法通过安全模板的形式来一并实现。

安全指南不会让系统变得安全。如其他章节的内容所述,在最好的情况下,安全指南能够在您已经采取(或将要采取)的其他措施之外,为系统提供为数不多的一点额外的安全性。而在最糟糕的情况下,它会有损于系统的安全性。例如,安全指南可能会让系统变得不稳定,从而破坏机密性-完整性-可用性组合中的可用性部分。

神话 2:如果我们把它藏起来,那么坏蛋们就不会找到它
如果我们每次在看到某人试图隐藏他们的系统时都能有上一角硬币… 隐藏系统通常都是于事无补的。下面给出几个例子。比如,某些人大力宣扬应关闭无线网络中的 SSID 广播。如果这样,那么不仅您现在有了一个不符合标准的网络,而且您的客户端也将喜欢这个充满欺诈的网络,因为在这个网络中可以使用与合法名称相同的名称。对了,您还需要花上几分钟来真正查找到网络,假如您有合适工具的话。另一个例子是更改 Web 站点的版本标志,这样坏蛋们就不知道您运行的是 IIS 了。首先,了解 Web 站点究竟运行何种服务器产品是相对简单的。其次,大多数的坏蛋都不够聪明,因此在不知道运行何种产品的时候他们会尝试所有产品的漏洞,其中当然也包括 IIS 的那些漏洞。好了,还有一个例子是重命名 Administrator 帐户。其实只需调用几个 API 就可以找出真正的帐户名称。我们的最爱是让管理员们使用组策略重命名 Administrator 帐户。所以,他们现在有了一个叫做Janitor3;的帐户,而此帐户的注释信息则是用于管理计算机或域的内置帐户。这种做法实际上不过是自欺欺人。

大致来说,重命名或隐藏某些东西更有可能的是破坏应用程序,而不会真的有助于阻止某个攻击。技术高超的攻击者都知道管理员重命名了某些东西,他们会首先查找真正的名称。而编写得很糟糕的程序则假定Program Files目录总是位于某个特定的位置,而且 Administrator 帐户总是根据区域有一个特定名称,等等。像这样的应用程序现在将被破坏。所以,他们已经被破坏了,他们不再能够发挥正常的功能。

神话 3:安全设置越多,安全性就越高
安全指南包含大量的设置,那么为什么不从中选择一部分呢。Windows Server 2003 的组策略界面中包含 140 项安全设置,这还没有将访问控制列表 (ACL),服务配置、加密文件系统 (EFS) 策略、IPsec 策略等设置计算在内。对于每个环境,上述内容的最佳配置是一个含糊不清的概念。所以,很多人便认为:如果您进行的更改越多,那么就会变得越安全。

我们很清楚地记得 2003 年夏末(北半球)时候的一则标题新闻。这条新闻叫做Dell 将销售出厂时即已安全的系统。Dell 宣布说,它将开始销售 Windows 2000 系统,这些系统在出厂时便已通过了 CIS Level 1 的基准测试。该文继续指出,此系统应用了 50 多项安全性设置 … 可极大改善 Windows 2000 的默认安全性。

可以看出这些说法中存在几个问题。首先,
该基准测试仅仅会进行 33 项更改,而不是50 多项。其次,其中只有三项更改会对安全性造成影响。最后,尽管 Dell 可能对系统的一些安全设置进行了调整,但是在销售时并未安装最新的服务包,而这在我们来看,是一个最基本的安全性要求。不要说我们是错误的,看看厂商毫无意义地对付较老的操作系统,并且评估是否能够将它们变得比几年前刚刚发布之时更加安全是一种值得鼓励的行为。但是,它被表述成了一种获得安全系统的方法,尽管事情显然并非如此。此外,该厂商在提供一个受保护系统时还忘记了许多基本的安全性要求。

人们所做的许多设置对于安全性并没有什么实质性的影响。例如,请考虑一下只有本地登录的用户才能访问软盘设置。它可以确保远程用户无法通过网络访问任何软盘;如果且仅当 (IFF) 用户当前登录到具有软盘的系统的时候,该设置才会发挥作用;那么假如为软盘创建了一个共享呢(默认不会创建此共享)?假如共享上的 ACL 允许远程用户可以访问它呢?以及系统的软盘驱动器处于第一个启动位置并且其中已经插入了一张软盘呢?现在销售的大多数系统甚至已经取消了软盘驱动器,这样就更谈不上针对它的其他要求了。所以,我们敢说,无论从哪方面看,这个设置已经对安全性没有了任何影响。

我们也很喜欢NetworkHideSharePasswords和NetworkNoDialIn设置,多年以来,一些指南一直在吹捧这两个设置。前者的设计目的在于:在您设置了共享密码的时候,确保该密码在用户界面对话框中以一种不透明的方式显示;它主要针对 Windows 95 操作系统。这个设置在随后的平台上根本不起任何作用(因为 Windows NT、Windows 2000、Windows XP 和 Windows Server 2003 根本就不支持共享密码)。当然,即使是在 Windows 95 平台上,如果没有被拼写错误的话 (networkhidesharepasswords),该设置应该还能够表现得更为有效率一些。后一个设置也是一个拼写错误的设置,用于控制调制解调器的拨入权限,也针对 Windows 95 平台。尽管这些设置实际上对于基于 Windows NT 的操作系统根本没有任何用处,但是仍然有许多安全性审核专家不断对管理层解释说,如果那些负责安全性的家伙们没有在 Windows 2000 或者是 Windows XP 上配置这两个设置,那么说明他们根本没有用心工作。不知道有多少次了,我们看到的指南都是从其他已经过时的操作系统的文档直接抄袭而来,因此不是内容老化就是存在技术错误。而一些根本不理解安全性也不理解要保护的操作系统的人则使用这些指南提出要求。

如果通过像鹦鹉学舌那样声称某人(其实他根本不了解该产品)说过如何做就是正确的,这样就可以轻松赚取大笔的咨询费用,那么针对某个威胁模型脚踏实地地设计安全性似乎就成为了一件很奢侈的事情。以下提供了一些基本准则。

· 在默认情况下已经被设置的必需设置不会改善安全性。

· 仅对在其他地方被阻止的行为进行修改的设置不会改善安全性(虽然在某些情况下,只要不破坏必需的功能,这些设置对防卫能力的提高还是值得称道的)。

· 那些会让系统变得不稳定的设置不会改善安全性。

· 拼写错误的设置不会改善安全性。

· 对于相关产品不起作用的设置不会改善安全性。

如果您很不幸成为了根据所做设置的数量来判定安全性好坏的人们的一员,那么请继续进行这样的大把大把的设置更改。嗨,不如自己发明了几个方法好了(其他人好像也这么想)。以下是几个可以使用而且不会对任何东西造成破坏的方法:

· HKLMSoftwareMicrosoftWindows NTCurrentVersionDisableHackers=1 (REG_DWORD)

· HKLMWetwareUsersSocialEngineeringEnabled=no (REG_SZ)

· HKCUWetwareUsersCurrentUserPickGoodPassword=1 (REG_BINARY)

· HKLMHardwareCurrentSystemFullyPatched=yes (REG_SZ)

· HKLMSoftwareAllowBufferOverflows=no (REG_SZ)

请确信您对它们设置了正确的 ACL。通过这种方法,您可以表现得比其他任何人做的工作都要多很多。另外,如果您再创建一个饼图,展示通过对安全性进行认真细致的管理,从而提高了多少多少的投资回报 (ROI),那么将您提升为无用管理人员 (UMO) 的日子也就指日可待了!

而与此同时,我们这些剩下的人员还将继续努力,试图通过为威胁模型设计安全措施来真正改善系统的安全性。

神话 4:安全设置调整是必需的
某些人声称,如果不进行大量的调整,那么根本无法得到一个安全的(也就是得到保护的)系统。这是一种过度笼统的说法。进行调整会阻止一些无法在其他地方进行阻止的东西。例如,如果您的家庭网络中的防火墙后面有两个系统,或者有一个应用了 IPsec 策略的企业系统,并只允许请求或接受来自很少的几个得到精心管理的服务器的信息,那么这些系统可能不用进行任何额外的安全设置就已经是安全的了。

即使是高度公开的系统,绝大多数的安全调整也不是必不可少的。在 2002 年 eWeek 的 Open Hack IV 竞赛中(请参见 http://msdn.microsoft.com/librar … c/html/openhack.asp),我们建立了一个可能是我们有史以来建立的防护最为严密的网络。但是,我们做的所有调整就是修改了 4 项注册表设置,修改了一组 ACL,以及设置了一个密码策略。其余防护措施则基于正确的网络分段、对威胁的深入理解、关闭不需要的服务、强化 Web 应用程序的安全性(请参见《编写安全的代码》,第 2 版,作者 Howard 和 LeBlanc [Redmond, WA:Microsoft Press, 2003]),并且对 Web 服务器以及运行 SQL Server 的计算机进行了适当的保护。当然,这仅是一个功能十分有限的专用系统,但是它仍然展示了简单就是美这一真理。

正确理解威胁并且通过牢固的网络体系结构有效缓解这些威胁是远比以安全性的名义执行大量安全调整更为重要的事情。

神话 5:所有环境至少应该运用
世上没有万能钥匙。每个环境的要求及其所面临的威胁都是独一无二的。要是真的有一个关于如何保护每个系统的指南,那么其所提供的设置必定都是默认值。抱有这种观点的人们的问题在于:他们没有考虑到安全性和系统管理的复杂性。正如我们在第一篇文章中所提到的,只有在发生问题后,管理员才会接到求助电话。安全性具有破坏性;这也就是某些与安全性相关的设置被默认关闭的原因所在。为了保护环境,您必须全面了解整个环境:谁在使用它,用它来干什么,他们认为需要减轻的威胁有哪些。安全性涉及风险管理,而风险管理又涉及到认识和管理风险,但并不是仅仅为了证明某人的存在和支付给他的薪水而进行一些改变。

至少,高级系统管理员应评估一下所要运用的安全指南或策略,确保其适合环境。对环境进行这样的量身订制一贯都是有必要的。但是,刚入门的管理员干不了这项工作。在制订或定制安全策略时,细致谨慎极其重要。

神话 6:“高安全性”是所有环境的终极目标
高安全性(即尽可
能最严格的安全性)并不适用于每个人。正如我们已经一再提到的,安全性具有破坏性。在某些环境中,您会为以保护的名义,有意破坏一些事物,但是在其它的环境中,您却不会这么做。要是有人在 2001 年 9 月 10 日告诉您,必须在起飞前三小时到达机场,接受全身检查,而且不要随身带毛衣针,否则会被扣押,那么您一定会说他疯了。高安全性(机场安全真得很重要,并非儿戏)不适用于每个人,起码在 2001 年 9 月 11 日美国东区时间上午 8:00 之前,不适用于我们。一旦飞机起飞升空,极少有人对需要加强机场安全提出质疑。

信息安全的道理也一样。有些系统面临极其严峻的威胁。倘若这类系统遭破坏,有人会失去生命,国家及大公司会破产,我们的社会就会崩溃。其它的系统包含的信息的敏感性要低得多,因此无需采取相同的安全等级。对前一类系统采取的保护措施完全不适用于后一类系统;但是我们还是经常听到有人说,“高安全性”是所有环境应该努力去实现的终极目标。这类言论过于幼稚,导致了当今信息安全领域普遍存在不信任和混乱的状况。

神话 7:保护环境安全应从应用安全指南入手
您不能一开始就通过更变某物来对其进行保护。一旦着手进行更改,环境就会随之变化,而您最初依据的前提条件也就不再有效了。重申一下我们一再提到的那句话:安全性涉及风险管理,具体涉及到认识风险,确定环境所面临的威胁并加以缓解。如果缓解措施中涉及到应用某种安全指南,则照章办事,但是只有在分析了具体的威胁和风险之后,您才能确定这一点。

神话 8:安全优化能够解决物理上的安全问题
信息安全领域有一条基本原则:要是坏人可以通过物理途径访问您的计算机,那么这台计算机就不再属于您的了!物理访问 总能 攻克软件安全性。但是,我们必须证明这个观点,因为一些有效的软件安全措施可以延长物理访问突破所有安全屏障所需的时间。譬如,数据加密就属于这类安全措施。然而,其他许多软件安全优化都是毫无意义的。最近,我们最喜欢讨论的话题是关于 USB 闪存盘。看过电影《谍海计中计》(The Recruit) 之后,每个人都意识到,可以轻易地通过 USB 闪存盘窃取数据。奇怪的是,好像这种情况仅出现在 USB 闪存盘上。我们曾去过军事机构,进门前我们的 USB 闪存盘都被扣下,但允许我们携带 80-GB 大的 i1394 硬盘进入。显然,后者并不构成威胁。

记得有一天傍晚,有位撰稿人的老板打电话给他,慌慌张张地问他如何解决这个问题。他回答说:去附近的五金店,买一管环氧胶,把 USB 端口全填上。既然走到这一步了,不如将 i1394 (FireWire)、串行、并行、SD 卡、MMC、记忆棒、CD/DVD 刻录机和软盘驱动器的接口以及 Ethernet 插座都堵上。还应确保没人能对显示器屏幕上的内容进行拍照。您可以通过上述所有这些接口窃取数据。

这个问题的关键点在于:只要系统上有这几类接口,同时坏人能够接触到它们,那么一切都将无补于事。有没有 USB 接口都不会有什么不同。当然,操作系统厂商可以设置一个开关,防止有人将数据写入 USB 闪存盘。但是,这种方法无法阻止坏人从支持引导的 USB 闪存盘启动,加载 NTFS 驱动器,然后盗取数据。

简而言之,即使坏人能够完全访问系统,并启动到任何一个操作系统,任何声称能够有效防御物理入侵的软件安全解决方案都必须坚守最后的阵地。这时,注册表优化和文件系统 ACL 无法提供保护,但加密却可以。结合适当的物理安全性,上述所有措施都会有帮助。但是,这些措施一般都无法取代物理安全性。

神话 9:安全优化可防御蠕虫/病毒
由于设计用于尽可能造成最大的破坏,因此蠕虫和病毒(以下一律称为“恶意软件”)会尝试攻击所有存在漏洞的系统。为此,它们一般通过两种机制来进行传播:未修补/未缓解的漏洞以及缺乏经验的用户。虽然有些安全优化可以防御恶意软件(比如:可通过在 IIS 中删除索引服务扩展映射来防范 Code Red),但是无法采用这种方法抵御大多数恶意软件,因为它们还可以通过第二条途径传播。如果让用户在跳舞的小猪和安全性之间选择的话,他们每次必定都会选跳舞的小猪。而如果在海滩上嬉戏的裸体人物照片和安全性间做选择的话,大概有一半的人会选择前者。加上用户不了解我们的安全对话框,那么对我们来说,这就是灾难。倘若有个对话框要求用户在海滩上嬉戏的裸体人物照片和安全性之间选择其一的话,安全性绝对不可能被选上。

神话 10:专家建议将该优化作为深层防御措施
该谬论可分为两部分。让我们先来看看第二部分。深层防御是一种合理的安全策略,可在许多地方应用保护措施,防止烦人的威胁。可惜,如今有许多人借用“深层防御”这一术语来证明安全措施的功效,但却无法提供具体的事实根据。通常,出现这种情况是由于相信了第三条谬论(进行越多的优化就越好)。我们进行更多的更改是为了向审查人员显示我们在干自己的活,让他们看到自己辛勤工作,从而为自己多拉点功劳。

这表明了这个领域极端不成熟,很像中世纪时的西“医”。那时的医生往往在很短的周期内在伤口上连续使用牛粪、炉灰、蜂蜜、啤酒等等乱七八糟的物质进行治疗,来表明他们已经竭尽全力了。如今,医生(实际上一般由护士来进行这类治疗)会先清洁伤口,用绷带(可能还会使用某种抗生素)包扎,然后让伤口自动愈合。少并不代表不好,但常常会带来更好的效果,因此借用深层防御来证明不必要和可能有害的操作并不可取。

这个观点的第一部分是我们最喜欢讨论的话题之一。我们乐于听从专家的意见,因为毕竟他们是专家,懂得比我们多。问题在于,缺少对专家进行资格认定的程序。我们一般将安全专家定义为“新闻中所引述的人”。根据我们经常看到被引述的人,并通过与他们的交流,让我们相信他们就是真正的专家。定义一个专家的依据不是具体行动而是名声;而名声是可以赋予的。我们的朋友 Mark Minasi 有一句至理名言,我们都曾在自己的演示文稿中借用过。要当安全顾问,只需知道四个字:“杞人忧天”。只要当过安全顾问,并且了解这个领域的整体能力水平,您就会认同这句话确实有道理。虽然有许多优秀的安全顾问,但也不乏无能之辈。如果客户无法鉴别这类伪专家,对他们深信不疑,结果可能损失大笔资金,那时这类“专家”也就露出了马脚。

了解更多详细信息
本文讨论了在安全管理工作中需要加以避免的一些注意事项。在《Protect Your Windows Network》一书中,Jesper 和 Steve 介绍了您应该做的一些具体事项,其中有些结论会让您吃惊。

与以往一样,这个专栏是为您提供的。如果您想与我们讨论一些问题,或者有更好的保护系统安全的方法,欢迎随时与我们联系。若要给我们留言,请点击下面的“与我们联系”链接。