网络安全 频道

Vista安全与易用 深度解析UAC功能

    【IT168 专稿】在计算机安全设计方面一直存在一个一个最基本的难题,就是如何寻找在安全性和易用性之间的一个合适的平衡点。如果一个产品的安全性非常复杂而不方便使用,那么结果很简单,没有人会去使用它。即使一个功能可以提供非常好的安全保护,如果它过于复杂或者在可用性上非常差劲,那么它有可能会被最终用户或网络管理员禁用,因此实际上它并没有真正给用户带来好处。

    微软号称Windows Vista是史上最安全的Windows操作系统,1月30日,微软的Vista已经正式面向消费市场发布,开启了一个操作系统的新时代,关于Vista的安全性可以说是众说纷纭,而且不同意见之间的差距很大,微软负责Windows平台开发的副总裁Jim Allchin近日在Vista博客上发表了一篇文章,介绍了Vista在设计、测试阶段的一些考虑,让我们更加深入的了解Vista这款操作系统的安全性和易用性之间的关系。

    微软默认情况下其用了一些安全功能。对于安全性和易用性的问题,同样对微软也是一个难题,在保护安全性的同时,同时又要保证Vista非常易于使用,从而方便这个操作系统被部署安装。微软必须把握好安全性和易用性之间的平衡,如果把系统防护的过于严密,则用户可能会关闭一些关键的安全功能,还有可能带来更坏的影响是用户不会使用这个操作系统,而继续使用老的Windows系统,如果真是这样,那么新系统的新安全功能实际上并没有给用户带来真正的好处。

    Jim相信,Windows Vista在大大提高了安全功能的同时,同样也是最好用的操作系统之一。他认为没有一个系统是人天生就会用,也没有一个系统是坚不可摧的,从过去到现在到将来不会有这样理想的软件。而且,人们通常错误的认为深度防护安全功能就是难以穿透的安全防线。 安全性和易用性的平衡是微软所遇到的最难处理的平衡问题:多少应用程序将会被一个更坚固的安全防线所影响,又有多少用户会因为认为易用性受到了影响而可能关闭一个安全功能?

    在Vista中所遇到的这种挑战的一个明显的例子就是用户帐号控制(UAC)功能。按照最简单的方式来理解,我们可以认为UAC是为那些“普通用户”或“非管理员用户”而准备的。在Windows Vista之前,有一些非常重要的关键操作对“普通用户”或“非管理员用户”来说是不可完成的。由此带来的后果是,几乎每一个人都以本地管理员的权限来登录系统,第二个影响是,大多数软件开发者(包括微软在内)在开发软件的时候,通常假设用户将是具有管理员权限的。事实上有很多企业客户在部署他们的系统环境的时候,通常把很多用户划分为普通用户,但由此带来的问题通常是一件非常麻烦的问题,通常会让很多用户无法体验完全功能的软件。

    因此对于Windows Vista来说,UAC的主要目标就是帮助那些普通用户来完成那些需要管理权限的任务,并且能够让用户区分这种权限的请求是来自于恶意软件还是正常的应用程序。我们要知道,在Vista以前,当用户以管理员身份登录系统后,他们(几乎是所有软件)都具有对系统的完全控制的权力,当然也包括修改或覆盖本地安全设置。在Vista中,通过UAC,普通用户不仅可以完成普通的任务,还可以通过验证来完成一些关键操作,而又可以防止他们因为不小心而进行的错误的操作。UAC功能就是要防范两种人:一是有恶意企图的人,另一种是那种不了解一些关键任务的执行后果的那些普通用户。

    为了做到这一点,系统不得不检查用户所执行的每一个系统任务,并针对每一个问这样的问题:“要完成这个任务,该用户需要具有管理员权限么?”在Windows XP下,当一个用户进行影响整个系统的修改的时候,通常需要要求具有管理员权限。事实上通过某些更合理的规则,可以做到在更好的保护系统的同时,又可以给用户更方便的易用性。在以前版本的Windows中,微软把很多功能聚合到了一起,而实际上其中只有一部分功能需要用户具有管理员权限。举例来说,在Windows XP中,为了更改时间或时区,你必须具有管理员权限。修改时间的权限被限制的原因是,通过修改系统时间,用户可以进行一些恶意操作,例如欺骗系统日志或回溯电子邮件等。但是事实证明,对于一个住在西部海岸的经常出差的企业家来说,为了准时参加在纽约举行的一个会议,而需要修改时区设置,实际上是不要保护的。因此在Windows Vista中微软把改变时区设置分离出来,从而允许一个普通用户来修改时区设置。

    由这个改变所带来的结果是,你会发现,在Windows Vista中,如果你在系统上完成了安装过程,作为一个普通用户你就可以方便的使用系统。剩下的问题是,当用户需要完成一个需要管理权限的任务的时候,该怎么办?为了满足这种需要,在Vista中当普通用户要执行需要管理员权限的任务的时候,系统会弹出一个权限认证框,输入具有权限的帐号和密码,就可以执行该任务。

    当微软在Vista中第一次设计这个功能的时候,在提示用户输入具有管理员权限的用户名和密码前,要求用户输入Control-Alt-Delete(C-A-D)组合键,因为这样可以防止一些木马程序对帐号和密码信息的窃听。之所以这样设计的原因是,输入这种组合键是唯一可以让用户确认这是系统(而不是某些钓鱼功能的欺骗)要求你输入验证信息,一个很简单的比喻是,你不会把你的银行卡密码告诉一个主动给你打来的电话(要求你输入银行卡信息);只有你确认要求你输入密码的系统不是冒牌货的时候,你才会放心的输入密码。同样的道理,C-A-D是可以确保你直接与系统进行交互的最有效的方式,它可以让你确信另一端就是系统本身。当用户键入C-A-D组合键,启动安全桌面(Secure Desktop),这是一种受限模式,系统可以继续运行,然后要求用户从这个桌面上输入验证信息。安全桌面的好处是恶意软件很难来模仿这种运行方式,还有让用户可以很清楚的意识到他们工作在安全桌面下,因为所有正在运行应用程序的背景色都变灰了。而输入验证信息的窗口则被高亮显示在安全桌面的顶端。

    当微软对这种设计进行可用性测试的时候,迅速得到两个反馈:第一,系统请求同意的次数太频繁了;第二件事情是,C-A-D组合键的使用让大多数用户感觉很困扰,大多数人通常把它联系到调出任务管理器的操作。为了解决第一个问题,微软检查了系统,并仔细的分析了各个任务,确保只有在操作真正需要管理员权限的时候才弹出提示框。微软还与应用软件厂商进行了交流,以确保除非真正需要,他们的软件无需要求用户具有管理员权限,以及让他们对应用程序进行兼容性升级,从而减少弹出验证提示框的次数。

    第二个问题要更加难于解决,因为C-A-D方式实际上是可以确保你不会被恶意软件所欺骗的唯一方法。但是,如果微软一直需要键入C-A-D组合键,大多数用户将会选择一直作为管理员登陆系统,这与潜在的信用欺骗的安全风险相比,是一个更加严重的安全风险。因此,默认情况下,C-A-D功能将被禁用,但是Vista依然在安全桌面模式下请求同意操作,这样,用户可以了解这是一个来自系统的特殊请求。最终,微软在Vista操作系统中保留了UAC的C-A-D整合功能,但是默认情况下,系统禁用了这个功能。假若一个用户想要使用该功能的话,他们也可以通过组策略或本地策略来轻松将其打开。网络系统管理员也可以通过组策略来启用UAC的C-A-D功能。因此,如果你想要得到一个更安全的Vista,那么打开UAC的C-A-D功能吧。

图1(点击看大图)

    注意:如果你的系统中已经有了木马等恶意软件,那么UAC功能有可能不会帮助你发现他们。

    正如上面所讨论的,微软一方面希望让那些以本地管理员身份登陆的用户具有非常好的可用性,但是同时又要让他们可以得到比在XP中更好的安全体验。为了达到这个目的,微软创建了一个UAC模式,叫做管理同意模式(admin approval mode)。默认情况下,所有属于本地管理组的成员登陆系统后,都默认处于这种模式,每一个具有管理特权的用户一般作为一个普通用户来运行系统;但是当一个应用软件或者一个系统需要进行一些只有管理员可以进行的操作的时候,该用户则被提示是否同意这种操作。不像UNIX中的超级用户管理模式一样,管理同意模式仅仅对请求同意的该任务启用管理特权,一旦该任务完成后,自动将用户置成普通用户权限。

    但是,这个功能主要是为了提高系统管理员易用性。假若一个管理员在同一个桌面系统上执行了多个任务,那么恶意软件有可能会悄悄的注入或者进行权限提升。因此,对Vista来说,最安全的配置是在两个不同的帐号中运行程序,管理任务就让管理员来执行,而所有其他任务则在普通用户帐号下执行。

    当微软第一次把管理同意模式设计成UAC的一部分的时候,最初的默认方式是要求用户输入他们的密码。但是与上面我们所讨论的C-A-D功能一样,可用性测试的反馈结果让我们必须作出改变。不得不为每一个提示来输入密码,这会令用户感觉到过于复杂,由此带来的后果自然和前面所说的C-A-D功能一样。尽管不输入密码的安全模式不可能防止诈骗行为,但是其安全性也要远远好于Windows XP了。因此最后的设计是,默认情况下,管理同意模式并不需要密码,但是,如果你需要这个功能的话,你可以通过组策略来启用它。见下图。

图2(点击看大图)

    我们所碰到的另一个需要处理易用性和安全性之间平衡的比较大的例子是,在Vista中的数据执行保护(DEP)功能的启用上。简单来说,在数据执行保护功能中,数据就是数据,代码就是代码,并且阻挡任何数据内容的执行。由此带来的好处是,如果在系统(或者一个应用软件中)存在一个允许缓冲区溢出的漏洞,如果启用了数据执行保护,对黑客来说就很难来执行放在数据缓存中的恶意代码,从而也就阻挡了攻击。对于Vista内核来说,默认情况下就启用了数据执行保护(DEP)。同时,这是保护系统外的其他部分和应用软件免受缓冲区溢出攻击的的一个不错的方法。但是随之也带来了新的问题:有一些第三方的插件就是动态的产生代码,并存储在数据区域,对于数据执行保护(DEP)来说,没有办法可以区分这些插件和恶意软件。因此,更好的安全性或者更好的应用程序兼容性,你只能选择其一。

    Vista的数据执行保护(DEP)默认设置如下:

图3

    值得一提的是,如果你愿意,你可以为所有程序和服务都启用数据执行保护(DEP)。很明显这是一种更安全的状态,但是由此带来的应用程序兼容性问题也不容忽视。Jim表示,我当然建议企业可以测试一下看他们是否可以为所有程序和服务启用数据执行保护(DEP)。在某些情况下它是可行的;其他则是不可行的。这又是一个需要把握平衡的问题。

    举个例子来说,IE浏览器就是相当难处理的一个情况,因为用户当然希望IE可以得到来自数据执行保护(DEP)所提供的保护功能。但是,到目前为止,如果启用了数据执行保护功能,在好几个知名的第三方IE插件上还存在兼容性的问题,因此默认方式下我们不能对IE浏览器启用数据执行保护功能。不过,这儿也有两个好消息。首先,动态产生代码是有可能与数据执行保护(DEP)相兼容的,所需要做的仅仅是编写几行代码而已。我们希望第三方软件公司可以及时更新他们的插件以支持数据执行保护(DEP)。第二个好消息是来自Adobe公司,它的Acrobat和Flash Player插件此前是不支持数据执行保护(DEP)的,现在它已经更新了它的软件与数据执行保护兼容,现在你已经可以从Adobe官方网站下载这些更新。

    因此,尽管现在IE浏览器默认是不启用数据执行保护的,你却可以手动打开这个功能以获得更好的安全保护。随着第三方厂商对自身插件的更新,相信更多的应用程序可以支持数据执行保护(DEP)。

图4

    如上所述,微软已经对Vista系统进行了一定设置,以平衡易用性和安全性的关系。对于家庭用户和网络管理员来说,也可以通过启用一些默认关闭的安全功能,从而获得更好的安全性,这是以前的Windows操作系统中所不具备的功能。Jim从好、更好和最好三个方面,为家庭用户和企业用户提一些参考建议。

    对于家庭用户来说:

    好的策略:创建第一个帐号为父母控制帐号,并启用一个强壮的密码。该帐号属于本地管理员组,启用管理员同意模式。后来创建的帐号,尤其是为孩子创建的帐号,应该是普通帐号。如果一个普通帐号(例如孩子的帐号)需要执行一个管理任务,则由管理员(例如母亲或父亲)输入相应的授权信息来完成这个任务。使用Vista父母控制功能可以保护和限制孩子使用的任何帐号。

    更好的策略:除了“好的策略”中提到的几步外,如果管理员工作在管理同意模式的时候,如果要完成一个管理任务,启用输入密码验证功能。这使得别人很难欺骗系统,同时也使得有机会访问你的机器的人,如果不知道密码很难完成一个管理任务。默认情况下,Windows Vista如果有一段时间没有任何操作,会自动锁定系统,只有重新输入密码才能进入系统,你可以根据自己的情况将这个时间范围改的更短一些。同时Jim也建议你对IE浏览器启用数据执行保护(DEP),大多数情况下,如果你安装了来自Aodbe公司的更新,一般不会碰到太多问题。而且,即使碰到问题,你也可以随时轻松的关闭该功能。

    最好的策略:如果你极度关注安全性,那么在以上两步的基础上,你可以启用C-A-D功能来同意完成管理任务。通过这个步骤可以提供对系统的更强安全保护。

    对于企业部署来说:

    好的策略:最基本的步骤是要求那些需要管理权限的用户运行在管理同意模式,这是默认情况。这为普通用户提供了一个好的适应过程。但是我建议不要停留在这种模式下,企业应该选用后两种方式。

    更好的策略:要求所有的用户是普通用户。许多客户将会随着时间逐渐把它们的最终用户转化为普通用户。当必须需要权限提升的时候,在管理员输入验证信息来完成一个管理任务之前启用C-A-D功能。即使在管理同意模式,也要求用户输入密码验证。和家庭用户的情况一样,同样建议对IE浏览器启用数据执行保护(DEP),在启用之前先考虑升级Adobe公司的更新,以确保不出现兼容性问题。

    最好的策略:除了上一步中的要求外,可以多利用组策略管理来获得更好的安全控制。对于必须在本地进行的修改任务,管理员可以通过远程桌面等方式登录到另一个会话中进行。

    任何系统安全性的真正测试实际上与它如何部署有着非常大的关系,以及其架构和其中的代码质量等。如何部署系统就涉及到安全性和易用性的问题。好比如果你因为太麻烦而不在夜里锁上你的大门,那么锁实际上没有起到任何更多的安全作用。微软的目标是默认部署最通用可行的安全配置。对于某些更倾向于安全性的用户来说,Vista也提供了非常灵活简单的设置步骤。比较复杂的问题是Vista被应用的范围非常广泛,某些人只从感觉上就认为Vista很脆弱是不正确的。在他们认为Vista安全性差之前,应该首先了解到,Vista的设计是一个考虑了一些其他因素最后结果,例如可用性或程序兼容性等问题,而不是微软的疏忽。

0
相关文章