热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WindowsVista系统账户保护机制初探,保障用户安全

本文介绍了WindowsVista操作系统中的用户账户保护功能,该功能是为了增强系统的安全性而设计的。通过对Vista测试版的体验,可以看到系统在安全性方面的进步。该功能的引入,为用户的账户安全提供了更好的保障。
最近Vista又有了很多新闻,还有Vista中的新成员WMP11也闪亮登场。今天,我们就一起来看看Vista中是如何保护账户安全的。

通常在提到微软的操作系统时,我们最关心的永远都是安全性。因为普及率非常高,再加上全球无数各种水平的用户都在使用它,同时在微软的操作系统上运行有大量质量良莠不齐的应用程序,这一切结合起来就让微软产品的安全问题非常突出。

例如前两年曾肆虐网络的冲击波、振荡波、斯文等病毒,都是利用了微软产品的漏洞以及用户的粗心大意传播开的。

微软自然不会让这种问题继续下去。在去年很长的一段时间里,微软全部的开发人员都停下了手头的开发工作,开始对现有产品进行安全性检查。这个检查直接影响了Windows XP SP2和Vista的推出时间,不过从检查之后发布的Windows XP SP2和Windows Server 2003 SP1来看,安全性确实得到了很大提高,长时间的等待是值得的。

虽然在打过补丁之后安全性得到了一定提高,不过这毕竟还是在现有漏洞上打补丁,总会让人觉得不够放心。那么全新的下一代操作系统在安全性方面会有什么进步?我们可以通过Vista测试版体验一下。本文以5219版Vista为例,在该版本中,安全性方面最主要的一个改进就是增加了一个叫做用户账户保护的功能(User Account Protection,UAP)。

Vista发展动态

Vista新成员WMP11亮相

作为Windows捆绑的播放器,WMP一直拥有巨大的用户群,它每一次新版本的发布都为很多Windows的粉丝们所关注。最近,WMP11的发布终于在Vista Beta1推出4个月后有了眉目。从截图来看,WMP11增加了预览功能,可以显示视频文件的缩略图。其用户界面大体上与前作相同,但在细节上,更突出了面板的质感,和晶莹剔透的Vista配合而相得益彰。
 
漂亮的Vista WMP11

你可能觉得,这是一套相当安全并且方便的机制,因为只要在登录系统的时候输入一次用户名和密码,就可以在整个登录过程中直接执行任何具有权限的操作。同时只要保护好SAM数据库,也就不用担心系统的安全问题。然而事实远非如此,这样的做法虽然方便,不过却相当不安全。

我们可以考虑这样的情况:使用管理员账户登录系统后,我们运行的任何程序自然也将具有管理员权限。如果我们不小心运行了网上下载的含有恶意程序的文件会怎样?恶意程序在运行的时候会使用当前用户的访问凭据,也就是说程序的进程也具有了管理员权限,进而该进程可以对系统进行任何操作。意识到其中包含的风险了吧。

所以很多介绍系统安全的文章都会建议,平时使用计算机的时候最好不要用管理员账户登录,而是用权限小一些的账户,只有在偶尔需要进行维护或者其他必要操作的时候才使用管理员账户,或者直接使用Runas命令。这样才能保证系统安全。

小知识:不得不提的Runas命令

这里再介绍一下Runas命令。通过该命令,我们可以在保持当前用户登录的情况下使用其他用户的身份运行程序。例如,对于开始菜单中某个程序的快捷方式,我们只需要在该快捷方式上点击鼠标右键,然后点击“运行方式”命令,接着在弹出的对话框中选择“下列用户”选项,指定一个用户名并输入密码。这样程序就可以使用指定的用户身份运行了。

当然,如果你喜欢使用命令行方式,也可以运行CMD打开命令提示符,使用类似这样的命令:“runas user:要使用的用户名 要运行的程序的路径和名称”,按下回车,并输入该用户的密码。例如通过“runas user:administrator regedit”这样的命令就可以使用Administrator的身份运行注册表编辑器。

虽然我们可以在平时使用权限低的用户名登录,但在需要执行特定操作的时候使用runas命令,不过这还是有些麻烦,同时需要进行的额外操作也太多。为了解决这一问题,Vista中提供了UAP功能。

在介绍这个功能之前,我们先了解一下Windows中的各种权限是如何控制的。这部分主要以单机或工作组环境下的Windows XP Professional为例,同时也适用于Windows 2000/2003,不适用于Windows 98。

系统安装好后,所有用户的凭据信息(也就是用户名和密码)都被保存在本地SAM(Security Accounts Manager,安全账户管理器)数据库中。当用户登录系统时,首先要输入用户名和密码,这些信息由winlogon进程获取,并由LSA(Local Security Authority,本地安全验证)子系统提交到SAM数据库中验证。

如果SAM数据库中有符合条件的记录,那么LSA子系统就会生成一个访问令牌(Access Token),并传递给用户。当该用户需要运行程序或访问资源的时候,系统首先会在用户持有的访问令牌中查找相应的权限信息,然后和想要进行的操作所需要具有的权限进行比较,如果权限足够,那么就可以进行操作;反之操作则会被禁止。

以运行程序为例,当我们试图启动一个程序的时候,系统会使用我们的访问令牌来启动程序,这样被启动的程序就拥有了和令牌所有者一样的权限。为了证实这一点,我们可以打开Windows任务管理器的进程选项卡。该选项卡下列出了当前系统中的所有进程,每个进程在“用户名”一栏就显示了该进程的“身份”。

以图1中的几个进程为例,csrss.exe是系统进程,因此用户名一栏显示的是“SYSTEM”;emeditor.exe是当前登录用户启动的程序,因此用户名一栏显示的是当前用户的用户名;emule.exe虽然也是当前用户启动的,不过在启动的时候使用了Runas命令,因此看起来该程序就好像其他用户启动的。当然,因为这三个进程使用了不同的访问令牌(也就是用户身份),那么这三个程序的权限也就会有所不同。
 
进程显示

启用该功能之后,Vista实际上自动运行在一个被减少了很多特权的安全级别上。如果因为某些操作,系统需要更高的权限,就会显示一个对话框,并要你输入密码。这个密码只能用于发起这次请求的操作,随后你进行的其他操作,哪怕是由此前的操作导致的额外操作,全部都是以最低的权限运行的。

默认情况下UAP是被禁用的,要启用该功能,在开始菜单中点击“All Programs(所有程序)”,然后点击“Turn UAP settings On or Off(打开或关闭UAP)”,你将能看到图2所示界面,点击Yes按钮即可打开UAP,随后我们需要注销并重新登录。

试试看更改一下系统设置吧,例如随便打开控制面板中任何一个控制程序,你都将会看到图3所示的对话框,要求你输入管理员用户的密码。
 
弹出警告框
 
需要输入管理员密码

有人担心这个功能在启用后会不会造成使用上的不便,其实担心是没必要的,UAP只是一种保护,而不是单纯的限制。假设我们已经启用了UAP功能,并要执行某个需要一定特权才能执行的操作,例如修改注册表,那么可能有两种情况:如果当前登录的账户已经有了修改注册表的权限,那么Vista会弹出一个对话框,询问用户是否继续该操作,用户可以作出选择;如果当前登录的用户没有修改注册表的权限,Vista会弹出一个对话框,告知用户这一情况,并允许用户输入一个具有相应权限的账户的用户名和密码,验证成功后一样可以进行操作。

如果你觉得这样还不够直观,也可以通过编辑注册表打开UAP的另一个界面。在注册表编辑器中定位到HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionPoliciesSystem,将ConsentPromptBehavior的数值改为“1”,重启动系统。这样当运行一个需要一定特权的程序时,首先会看到图4所示对话框,如果确实打算执行该操作,那么可以点击“I want to complete this action(我想要执行该操作)”,否则可以点击“I do not want to complete this action(我不想执行该操作)”,返回到桌面。
 
选择项

UAP是个相当好的改进,在保持了易用性的同时又增强了安全性,建议每个用户都使用。然而该功能最大的一个不足就是和现有程序的兼容问题,因为UAP是Vista中一个新增的功能,因此有些老程序(尤其是工作在系统底层的程序,例如老版本的杀毒软件、防火墙、备份软件等)在启用UAP后可能无法正常工作,或者存在问题。

例如我们安装的McAfee VirusScan Enterprise 8,虽然并没有针对Vista进行优化,不过在默认设置下完全可以在Vista中安装和使用。但是启用UAP之后却有个小问题,不管用什么账户登录系统(包括管理员和来宾),当McAfee杀毒软件启动的时候都需要用户输入具有管理员权限的用户密码。

其实仔细想想,这也是不可避免的,毕竟Vista太新了,大部分程序在设计的时候并没有考虑过这些新特性。不过这个问题并不严重,毕竟以微软在个人电脑操作系统领域的绝对统治地位来说,软件开发商如果不能及时发布适应新版操作系统的应用程序,那必定会被用户所抛弃;相反,如果能紧跟微软脚步,在第一时间推出能够用在微软最新操作系统上的应用程序,那则会大获成功。

因此可以肯定,当Vista正式发布之后,相应的应用程序都会在第一时间里发布针对Vista设计的新版本,或者为老版本提供补丁程序。

编后:Vista中新增的或者改进的安全功能当然不止如此,其他诸如验证方式、防恶意软件、网络访问保护、防火墙、Windows服务加固、增强的IE,以及数据保护等功能无不令Vista更加安全。虽然这些功能目前可能还不够完善,甚至有些还处于开发阶段,本报会在以后的文章中向大家详细介绍这些内容。
推荐阅读
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
author-avatar
鹏大1111
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有