(售后服务)WV服务详解

上传人:管****问 文档编号:127150767 上传时间:2020-03-30 格式:DOC 页数:15 大小:119.11KB
返回 下载 相关 举报
(售后服务)WV服务详解_第1页
第1页 / 共15页
(售后服务)WV服务详解_第2页
第2页 / 共15页
(售后服务)WV服务详解_第3页
第3页 / 共15页
(售后服务)WV服务详解_第4页
第4页 / 共15页
(售后服务)WV服务详解_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《(售后服务)WV服务详解》由会员分享,可在线阅读,更多相关《(售后服务)WV服务详解(15页珍藏版)》请在金锄头文库上搜索。

1、Windows Vista 的服务本文档提供了一些Windows Vista服务的相关信息。对于想在这个版本的Windows上面开发服务程序的开发者们,本文档也提供了一些最优方法。这些信息应用在Windows操作系统上。微软可能会随时更改本文档内容,可在以下地址获取最新的英文版本。http:/ 服务概述Microsoft Windows服务就是程序,通常,它们虽Windows一起启动,并在后台运行,直到被关闭。严格一点说,服务就是所有用服务API实现的Windows程序。通常,服务处理一些低级别的任务,这些任务很少需要和用户交互。尽管服务对于用户通常是不可见的,但Windows功能又离不开他们

2、。服务处理许多重要的操作系统功能,包括:1、联网。很多系统服务支持联网。比如动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)客户端服务通过存储和更新系统的IP地址来管理网络配置。2、硬件。即插即用服务(Plug and Play)使计算机可以识别硬件配置的变化并做出响应,例如用户添加或者卸载了一个硬件。3、远程访问。终端服务(Terminal Services)允许用户在远程登陆计算机。除了Windows自带的服务,大部分计算机还会运行很多第三方的服务。见到最多的就是防火墙和防病毒程序。服务怎样运行服务和一般程序最主要的区别是,服务被服务控

3、制管理器(Service Control Manager ,SCM)管理。使用服务API实现服务,这些API处理服务和SCM之间的交互。SCM维护一个数据库,这个数据库放置了所有已安装服务的信息,并提供一个统一的方法来控制这些服务:1、开始和停止服务。2、管理正在运行的服务。3、维护服务相关的状态信息。服务有三种状态:已运行,已停止,已暂停。1、已运行是服务的一般运行状态。2、已停止的服务已经完全关闭,必须经过一个启动过程,才能再次进入已运行的状态。3、已暂停服务中止处理,但是还驻留在内存中,并且继续响应控制请求。以暂停的服务可以跳过启动过程直接进入以运行的状态。服务的一个关键的特征是它怎样被

4、启动。SCM管理的数据库里有这样的信息。有三种启动模式:1、自动。在系统引导中,SCM自动启动这些服务。2、手动。想启动这类服务,必须利用控制面板中的管理工具。3、禁用。这些服务不能被启动。要想启动这类服务,用户必须把启动模式调整为自动或者手动当服务启动后,SCM利用控制请求来管理服务的状态。比如,SCM向服务发送控制请求,通知服务暂停,继续运行,或者准备关闭。SCM的数据库也包含了服务的安全设置。这些设置控制服务有多少权限去访问系统资源,也使得系统管理者可以控制每个服务的权限。Windows Vista中Windows服务的变化多年来,服务已经成为Windows一个重要的组成部分。它使得开发

5、者们可以创建长时间运行的程序:1、可以随计算机自动启动。2、可以被暂停和重开。3、无论用户登陆与否,都能运行。4、可以运行在一个独立的账户环境下,这个账户可以不同于已登陆的账户和默认账户。这些特点使得服务可以长时间的运行,而不干扰在同一计算机上工作的用户。自从服务概念的引入,服务的运行环境已经发生了很大的变化。这些变化已经带来了一些很多问题:安全性、可靠性、性能、操作和管理。这一节,讨论一下对于Windows Vista做出的改进。安全性增强近些年,服务已经成为那些病毒制造者们的目标。最近的例子有:“Blaster”、“ Sasser”、和“Code Red”。对于这个现象,有很多原因:1、服

6、务基本上都在长时间运行。通常,从系统启动到关闭,它们都在运行。2、服务通常都是面向网络的,这使得他们极易受到远程攻击。3、服务基本上以高权限账户运行,比如LocalSystem。这一节,讨论一下对于Windows Vista做出的改进,这些改进为了缓和服务的安全问题。这些改变有两个重要的目的:1、限制用户程序访问服务。会话0隔离(Session0 isolation)要求服务和用户程序运行在隔离的会话里。2、“固化”服务使不安全服务破系统的可能性降低。有以下两个互补的方法来达到这个目的:l 最小权限,使得服务运行在它所需要的权限范围内,做不了其他的事情。l 服务隔离,利用唯一的服务标识,使服务

7、如其他服务和程序隔离开。服务可以利用这个标识来限制其他服务和程序对它的资源的访问,也可以限制自己对其他服务和程序的资源访问。比如,服务隔离允许防病毒服务维护签名定义文件的专门入口。以最小权限运行Windows服务通常以LocalSystem账户运行,这个账户具有系统的最高权限。这样的服务成为病毒制造者很有吸引力目标。理想情况下,服务应该以低权限级的LocalService 或者NetworkService账户运行,从而减小对系统潜在的破坏。但是,很多服务需要的一些权限只有LocalSystem能够支持。在Windows Vista之前就用的“all-or-nothing”模型意思是,服务得到了

8、一些LocalSystem的权限后,它也同时具有了LocalSystem的所有其他权限。这意味着很多时候,服务所具有的权限不是它所需要的,产生对系统潜在的破坏性。Windows Vista允许服务以最小权限运行,解决了这个问题。服务不会再被标准账户支持的默认权限所限制。服务可以选择账户,这个账户有他们需要的权限,之后,服务还可以去掉所有它不需要的权限。这个功能可以用于所有的账户类型:LocalService, NetworkService,LocalSystem,一个域,或者一个本地账户。服务利用一些机制来声明他们所需要的权限,这些机制将在之后讨论。当SCM启动服务时:1、对于独立的服务,SC

9、M逆着对照进程标记符检查权限需求列表,所有没有被要求的权限都会被从进程标识符上去掉。2、对于共享的服务,例如svchost的服务宿主,在这个组里的所有服务需要的权限合并成权限列表。SCM只将没有任何一个成员服务需要的权限从进程标识符上删除。3、如果服务没有申明需要的权限,SCM假设服务需要与账户相关的所有权限。这样确保了向后兼容性。但是,如果服务组中有一个这样的服务,组中的其他服务也都以账户默认的一组权限运行。如果进程标识符里没有服务要求的权限,SCM不会启动这个服务。比如,以NetworkService账户运行的程序可以将SeTcbPrivilege指定为需要的权限。但是,NetworkSe

10、rvice进程标识符不支持SeTcbPrivilege,所以启动失败。怎么指定所需权限1、Sc.exe管理服务的命令行工具有两个新命令,支持为服务指定所需权限。l privs 这个命令为服务设定一个权限。privs 的语法是:sc privs Privilegesl qprivs 这个命令查询服务需要的权限,qprivs的语法是:sc qprivs service name buffersizePrivileges是一个字符串,包含权限列表,以斜杠分开(/)。例如,指定备份和恢复权限,将Privileges设置成“SeBackupPrivilege/SeRestorePrivilege”。2、

11、利用程序指定需要的权限,以下面的值为参数调用ChangeServiceConfig2:l 将dwInfo参数设置为SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFOl 使lpInfo指向一个SERVICE_REQUIRED_PRIVILEGES_INFO结构。这个结构包含了一个字符串,字符串列出了需要的权限。使用QueryServiceConfig2查询服务需要的权限。权限的变化将在服务下一次启动时生效。注意一点,不管是命令行工具还是函数,都会检查列表中的权限是否有效,但是它们不能确定服务是否支持指定的权限。这个工作是由SCM在试图启动一个服务的时候做的。注意:权限

12、列表只能被那些具有SERVICE_CHANGE_CONFIG权限的调用程序更改。默认情况下,只有本地管理员,权力用户和服务器操作员可以在远程或者本地取得得到这个权限。具有SERVICE_QUERY_CONFIG权限的调用程序可以查询需要的权限的列表。默认情况下,只有本地管理员,权力用户和服务器操作员可以在远程取得得到这个权限,服务和交互的用户可以在本地取得这个权限。服务隔离许多服务需要访问一些特定的对象,而这些对象只有高权限账户才能访问。比如,服务可能要向注册表写值,而注册表只有管理员能够访问。在Windows Vista以前的系统中,服务以象LocalSystem这样的高权限账户运行,从而得

13、到访问这些对象的权限。还有一个做法,就是降低这些对象的安全性,使具有低权限的服务已可以访问它们。这两个方式都有可能使攻击者或病毒得到系统的控制权。对于管理员,唯一可以降低这个风险的方法是,建立一个服务的专有账户,只让这个账户具有访问这些对象的权限。但是,这样又带来了管理效率的问题:大量的密码管理,因为管理员再也利用不到使用系统内置账户的好处了。为了缓和这个问题,Windows Vista引入了服务隔离,它给服务提供了一个访问特定对象的方法,既不需要以高权限运行,又不需要降低对象的安全。例如,服务隔离允许一个反病毒服务运行在比LocalSystem权限更低的账户下,但这个反病毒服务还能完全访问它

14、的特征定义文件或者注册表,通常这些只有管理员可以访问。服务隔离是一个专门用来保护资源(比如访问文件或者注册表的访问)的对象,它有一个包含服务安全ID(service security ID , SID)的权限控制表。我们把这个ID叫做“per-service SID”,它来源于服务的名字,对于服务是唯一的。SID被分配给服务之后,服务的所有者就可以更改所需的对象的权限控制列表(access control lists, ACLs),使得服务可以访问这个对象。例如,具有管理权限的服务才能够访问注册表键值HKEY_LOCAL_MACHINESOFTWARE。把per-service SID添加到这

15、个键值的ACL里,服务就可以运行在权限更低的账户下,但还可以访问这个键值。如果per-service SID被启用,它被添加到服务的进程标识符里。注意,在服务的进程被添加到进程标识符里的同时,必须启用per-service SID。per-service SID也允许,向进程标识符里添加几个SID之后,把进程标识符转换成一个限制标识符。利用受限SID减少潜在破坏使用per-service SID,提供了良好的隔离程度,并且允许服务运行在更低的权限账户下。但是,它并不阻止服务访问账户可以访问的资源,因为进程标识符包含了账户的SID。考虑下面的情况:X服务以LocalService账户运行,并且启用了SID。除了可以访问已经明确给予它访问权限的那些对象,它还可以访问LocalService账户可以访问的所有对象。如果这个服务涉及安全问题,攻击者可能利用它访问与这个服务不相关的资源,从而破坏系统。为了缓和这个问题,降低涉及安全问题的服务对系统造成破坏的可能性,Windows Vista结合写限制标识符(write-restricted tokens)和per-service SID为服务引入受限SID。服务启用受限SID时,服务的SID被添加到写限制服务进程标识符的正常和受限SID列表中。这样保证了,只有明确地将对象的

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 经营企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号