理论部分
软件限制策略包括证书规则、散列规则、Internet 区域规则和路径规则。我们主要用到的是散列规则和路径规则,其中灵活性最好的就是路径规则了,所以一般我们谈到的策略规则,若没有特别说明,则直接指路径规则。
一.环境变量、通配符和优先级
关于环境变量(假定系统盘为 C盘)
%USERPROFILE% 表示 C:\Documents and Settings\当前用户名
%HOMEPATH% 表示 C:\Documents and Settings\当前用户名
%ALLUSERSPROFILE% 表示 C:\Documents and Settings\All Users
%ComSpec% 表示 C:\WINDOWS\System32\cmd.exe
%APPDATA% 表示 C:\Documents and Settings\当前用户名\Application Data
%ALLAPPDATA% 表示 C:\Documents and Settings\All Users\Application Data
%SYSTEMDRIVE% 表示 C:
%HOMEDRIVE% 表示 C:
%SYSTEMROOT% 表示 C:\WINDOWS
%WINDIR% 表示 C:\WINDOWS
%TEMP% 和 %TMP% 表示 C:\Documents and Settings\当前用户名\Local Settings\Temp
%ProgramFiles% 表示 C:\Program Files
%CommonProgramFiles% 表示 C:\Program Files\Common Files
关于通配符:
Windows里面默认
* :任意个字符(包括0个),但不包括斜杠
? :1个或0个字符
几个例子
*\Windows 匹配 C:\Windows、D:\Windows、E:\Windows 以及每个目录下的所有子文件夹。
C:\win* 匹配 C:\winnt、C:\windows、C:\windir 以及每个目录下的所有子文件夹。
*.vbs 匹配 Windows XP Professional 中具有此扩展名的任何应用程序。
C:\Application Files\*.* 匹配特定目录(Application Files)中的应用程序文件,但不包括Application Files的子目录
关于优先级:
1.绝对路径 > 通配符相对路径
如 C:\Windows\explorer.exe > *\Windows\explorer.exe
2.文件型规则 > 目录型规则
如若a.exe在Windows目录中,那么 a.exe > C:\Windows
3.环境变量 = 相应的实际路径 = 注册表键值路径
如 %ProgramFiles% = C:\Program Files = %HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesDir%
4.散列规则比任何路径规则优先级都高
总的来说,就是规则越匹配越优先
注:
1.
通配符 * 并不包括斜杠 \。例如*\WINDOWS 匹配 C:\Windows,但不匹配 C:\Sandbox\WINDOWS
2. * 和 ** 是完全等效的,例如 **\**\abc = *\*\abc
3. C:\abc\* 可以直接写为 C:\abc\ 或者 C:\abc,最后的* 是可以省去的,因为软件限制策略的规则可以直接匹配到目录。
4. 软件限制策略只对“指派的文件类型”列表中的格式起效。例如 *.txt 不允许的,这样的规则实际上无效,除非你把TXT格式也加入“指派的文件类型”列表中。
5. * 和 *.* 是有区别的,后者要求文件名或路径必须含有“.”,而前者没有此限制,因此,*.* 的优先级比 * 的高
6. ?:\* 与 ?:\*.* 是截然不同的,前者是指所有分区下的每个目录下的所有子文件夹,简单说,就是整个硬盘;而 ?:\*.* 仅包括所有分区下的带“.”的文件或目录,一般情况
下,指的就是各盘根目录下的文件。那非一般情况是什么呢?请参考第7点
7. ?:\*.* 中的“.” 可能使规则范围不限于根目录。这里需要注意的是:有“.”的不一定是文件,可以是文件夹。例如 F:\ab.c,一样符合 ?:\*.*,所以规则对F:\ab.c下的所有文件及子目录都生效。
8.这是很多人写规则时的误区。首先引用《组策略软件限制策略规则包编写之菜鸟入门(修正版)》里的一段:
引用:
4、如何保护上网的安全
在浏览不安全的网页时,病毒会首先下载到IE缓存以及系统临时文件夹中,并自动运行,造成系统染毒,在了解了这个感染途径之后,我们可以利用软件限制策略进行封堵
%SYSTEMROOT%\tasks\**\*.* 不允许的 (这个是计划任务,病毒藏身地之一)
%SYSTEMROOT%\Temp\**\*.* 不允许的
%USERPROFILE%\Cookies\*.* 不允许的
%USERPROFILE%\Local Settings\**\*.* 不允许的 (这个是IE缓存、历史记录、临时文件所在位置)
说实话,上面引用的部分不少地方都是错误的
先不谈这样的规则能否保护上网安全,实际上这几条规则在设置时就犯了一些错误
例如:%USERPROFILE%\Local Settings\**\*.* 不允许的
可以看出,规则的
原意是阻止程序从Local Settings(包括所有子目录)中启动
现在大家不妨想想这规则的实际作用是什么?
先参考注1和注2,** 和* 是等同的,而且不包含字符“\”。所以,这里规则的实际效果是 “禁止程序从Local Settings文件夹的一级子目录中启动”,不包括Local Settings根目录,也不包括二级和以下的子目录。
现在我们再来看看Local Settings的一级子目录有哪些:Temp、Temporary Internet Files、Application Data、History。
阻止程序从Temp根目录启动,直接的后果就是很多软件不能成功安装
那么,阻止程序从Temporary Internet Files根目录启动又如何呢?
实际上,由于IE的缓存并不是存放Temporary Internet Files根目录中,而是存于Temporary Internet Files的子目录Content.IE5的子目录里(-_-||),所以这种写法根本不能阻止程序从IE缓存中启动,是没有意义的规则
若要阻止程序从某个文件夹及所有子目录中启动,正确的写法应该是:
某目录\**
某目录\*
某目录\
某目录
9.
这是流传的所谓防U盘病毒规则,事实上这条规则是没有作用的,关于这点在
关于各种策略防范U盘病毒的讨论 已经作了分析