当服务启动后,SCM 利用控制请求来管理服务的状态。比如,SCM 向服务发送控制请求,
通知服务暂停,继续运行,或者准备关闭。SCM 的数据库也包含了服务的安全设置。这些设置控
制服务有多少权限去访问系统资源,也使得系统管理者可以控制每个服务的权限。
Windows Vista 中 Windows 服务的变化
多年来,服务已经成为 Windows 一个重要的组成部分。它使得开发者们可以创建长时间运
行的程序:
1、可以随计算机自动启动。
2、可以被暂停和重开。
3、无论用户登陆与否,都能运行。
4、可以运行在一个独立的账户环境下,这个账户可以不同于已登陆的账户和默认账户。
这些特点使得服务可以长时间的运行,而不干扰在同一计算机上工作的用户。自从服务概念
的引入,服务的运行环境已经发生了很大的变化。这些变化已经带来了一些很多问题:安全性、
可靠性、性能、操作和管理。
这一节,讨论一下对于 Windows Vista 做出的改进。
安全性增强
近些年,服务已经成为那些病毒制造者们的目标。最近的例子有:“Blaster”、“ Sasser”、
和“Code Red”。对于这个现象,有很多原因:
1、服务基本上都在长时间运行。通常,从系统启动到关闭,它们都在运行。
2、服务通常都是面向网络的,这使得他们极易受到远程攻击。
3、服务基本上以高权限账户运行,比如 LocalSystem。
这一节,讨论一下对于 Windows Vista 做出的改进,这些改进为了缓和服务的安全问题。
这些改变有两个重要的目的:
1、限制用户程序访问服务。会话 0 隔离(Session0 isolation)要求服务和用户程序运行
在隔离的会话里。
2、“固化”服务使不安全服务破系统的可能性降低。有以下两个互补的方法来达到这个目的:
最小权限,使得服务运行在它所需要的权限范围内,做不了其他的事情。
服务隔离,利用唯一的服务标识,使服务如其他服务和程序隔离开。服务可以利用这个
标识来限制其他服务和程序对它的资源的访问,也可以限制自己对其他服务和程序的资
源访问。比如,服务隔离允许防病毒服务维护签名定义文件的专门入口。
以最小权限运行
Windows 服务通常以 LocalSystem 账户运行,这个账户具有系统的最高权限。这样的服
务成为病毒制造者很有吸引力目标。理想情况下,服务应该以低权限级的 LocalService 或者