警告:默认情况下,很多注册表键所设置的保护因为要顾及到大多数系统组件的正常运行而只提供了最基本的保护。如果想要得到最高级别的安全,某些访问权限必须被修改,进行这些操作的时候一定要小心,因为用户为了完成自己工作所需要运行的程序可能需要访问注册表的某些键。因此本文后面的内容一定要小心注意,除此之外,对注册表非必要的修改可能会引起系统故障甚至无法修复。
传统方式
在Windows XP继承的特性中,对于子对象的权限是自动从父级对象继承来的,这可以通过DACL编辑器的允许父项的权限传播到该对象和所有子对象这个选项看到。除了从父级对象继承权限的对象外,其他子对象都可以分别设定权限。
如果这个选项没有被选中,DACL将会给对象和该对象的子对象设定访问权限,而它们无法从父级对象继承权限。
注册表权限
如果要手工查看某一注册表键的访问权限:
运行regedit.exe
在想要查看权限的键上点击鼠标右键
从弹出菜单中选择权限…
权限设置将只有完全控制、读取还有特别的权限这三种可以使用,然而在按下高级按钮后还可以设置更细致的访问权限。表8 显示了注册表键的权限列表,表9 显示了为了提高安全性哪些键的访问权限可以重新被设置。
注意:任何时候,只要某个键的权限不是纯粹的读取或者完全控制,那么就可以通过高级安全设置的特殊权限菜单进行设置。
特殊的权限 |
描述 |
查询数值 | 允许查询注册表的特定值 |
设置数值 | 允许新建一个键或者复写一个已有键的键值 |
创建子项 | 允许子项的创建 |
枚举子项 | 允许查看某个键下所有子项的列表 |
通知 | 允许键值发生改变时触发的registration of a callback function that is triggered when the value changes |
创建链接 | 允许一个到特定键的链接的创建 |
删除 | 允许键或者键值的删除 |
写入DAC | 允许对键访问控制权限的修改 |
写入所有者 | 允许用户取得对某个键的所有权 |
读取控制 | 允许对键访问控制列表的读取 |
表8 注册表权限和描述
特殊的权限 |
完全控制 |
读取 |
写入 |
删除 |
查询数值 | x | x | ||
查询数值 | x | x | ||
创建子项 | x | x | ||
枚举子项 | x | x | ||
通知 | x | x | ||
创建链接 | x | |||
删除 | x | x | ||
写入DAC | x | |||
写入所有者 | x | |||
读取控制 | x | x | x |
如同对多个用户组设置允许或者禁止的权限,决定对每个组设置什么样的注册表权限控制也是一件很麻烦的事情。Windows XP使用了一种简单的方法来查看就一个特定对象,每个用户组或者用户都具有怎样的权限。要查看这些有效的权限,可以采取如下的操作:
·在注册表编辑器(例如regedit.exe)中,右键点击 一个注册表键
·从弹出菜单中选择权限
·点击高级
·点击有效权限选项卡
·在组或用户名称下点击选择按钮
·在输入要选择的对象名称对话框中输入要查看权限的组或对象名称
·点击确定,所有为该用户或者该组设置的权限都会显示出来 使用安全模板组件修改注册表设置
在安全模板中,注册表的权限可以通过在inf文件中修改现有注册表键或者添加自己的注册表键并设置权限这两种方法自定义。
要查看安全模板中注册表的设置,依次选择:
·安全模板
·默认的文件目录 (%SystemRoot%\Security\Templates)
·特定的配置文件
·注册表
修改注册表键的权限
想要修改某个安全模板中已有的注册表键的安全设置:
·在右侧的面板中,双击想要修改的键
·确保配置这个项,然后是被选中的。在这个选项下,还有其它两个选项,如同图5所示:
·将继承权传播到所有子项 - 所有子键都从被设置的键处继承新设置的权限,这个设置对那些在DACL列表中没有继承权的子键无效。
·用可继承权代替所有子项上的现有权限 - 所有子键都会被应用新设置的权限,并且会不顾其他原因直接获得继承权,无论是否允许子键继承。
图5 注册表权限配置选项
·点击编辑安全设置
·点击高级按钮,图6显示了高级安全设置窗口
图6 高级安全设置
·如果来自父键的权限没有被继承,确保允许父项的继承权限传播到该对象和所有子对象复选框没有被选中。
·通过点击添加或者删除按钮增减用户,以符合建议的设置标准。
·点击用户和/或用户组
·点击编辑,将会出现一个权限设置对话框,如图7。
·在应用到下拉菜单,选择正确的设置,可用的值有:只有该项,该项及子项,还有只有子项。
·在权限面板,选择希望使用的权限,可以参阅本段前面的内容。
·点击确定 - 确定 - 确定 - 确定退出
图7 注册表键的权限设置窗口
添加注册表键到安全配置
要添加注册表键到安全配置:
·在注册表上点击鼠标右键
·从弹出菜单中选择添加项
·选择要添加的注册表键
·点击确定
·出现一个数据库安全设置对话框,这个窗口中包含了所有要保存到安全配置数据库中的设置的相应注册表键。
·点击高级然后按照前一章修改注册表键的权限一段所说的内容修改权限。
·在退出高级安全数据库窗口后,选择将继承权限传播到所有子项或者用可继承权限替换所有子项上的现有权限
·点击确定
安全配置中需要排除的注册表键
在一些场合中,某些注册表键还是需要保留当前安全设置的,要确保父键没有把他们新获得的权限传播给这些子键,这些对象应当从设置中被排除。
要排除一个对象:
在注册表的右侧面板,双击要改变的键
选中不允许替代在该项上的权限按钮
点击确定
建议的注册表权限
下面的表10中没有明确列出的注册表键,如果它们都在DACL列表中被选中了将继承权限传播到所有子项这个复选框,那么假设它们已经从父键处继承了相应的权限。至于在DACL列表中选中了不允许替代在该项上的权限的键,都已经明确地从安全配置中排除了,它们将保持自己的原始权限。
表格中的"继承"代表将继承权限传播到所有子项这;"替换"代表用可继承权限替换所有子项上的现有权限,而"忽略"则表示不代替该项的权限。
注意:以下列出的注册表设置大部分都是针对Windows XP默认安全模板"setup security.inf"的,我们已经从默认权限中删除了Power Users和Everyone组,并且还修改了额外一些注册表权限。
- 上一篇:winXP通过安全模板修改受限制的组
- 下一篇:全面认识快速关机的危害