表 6.1:XP Professional 的默认环境变量
变量名
说明
ALLUSERSPROFILE
返回所有用户配置文件位置的本地变量。
APPDATA
返回应用程序在默认情况下存储数据的位置的本地变量。
CD
返回当前目录字符串的本地变量。
CMDCMDLINE
返回用于启动当前 Cmd.exe 程序的确切命令行的本地变量。
CMDEXTVERSION
返回当前命令处理器扩展的版本号的系统变量。
COMPUTERNAME
返回计算机名称的系统变量。
COMSPEC
将精确路径返回给命令外壳可执行文件的系统变量。
DATE
返回当前日期的系统变量。该变量与 date /t 命令使用相同的格式。Cmd.exe 程序生成此变量。有关详细信息,请参阅 Date 命令。
ERRORLEVEL
返回最近使用命令的错误代码的系统变量。非零值通常表示错误。
HOMEDRIVE
返回用户主目录的本地工作站驱动器号的系统变量。此变量是基于在组中为“本地用户”和“组”指定的主目录值设置的。
HOMEPATH
返回用户主目录的完整路径的系统变量。此变量是基于在组中为“本地用户”和“组”指定的主目录值设置的。
HOMESHARE
返回用户共享主目录的网络路径的系统变量。此变量是基于在组中为“本地用户”和“组”指定的主目录值设置的。
LOGONSEVER
本地变量,返回验证当前登录会话的域控制器的名称。
NUMBER_OF_PROCESSORS
指定计算机上安装的处理器数目的系统变量。
OS
返回操作系统名称的系统变量。Windows XP Professional 将操作系统显示为 Microsoft Windows NT.
PATH
指定可执行文件的搜索路径的系统变量。
PATHEXT
系统变量,返回操作系统将其视为可执行文件的文件扩展名的列表。
PROCESSOR_ARCHITECTURE
返回处理器芯片结构的系统变量。值:x86、IA64.
PROCESSOR_IDENTFIER
返回处理器描述的系统变量。
PROCESSOR_LEVEL
返回计算机处理器型号的系统变量。
PROCESSOR_REVISION
返回处理器修订号的系统变量。
PROMPT
返回当前解释程序的命令提示设置的本地变量。由 Cmd.exe 生成。
RANDOM
返回 0 到 32767 之间的随机十进制数的系统变量,由 Cmd.exe 程序生成。
SYSTEMDRIVE
返回包含 Windows 根目录(例如,系统根目录)的驱动器的系统变量。
SYSTEMROOT
返回 Windows 根目录位置的系统变量。
TEMP 或 TMP
系统和用户变量,返回当前登录的用户可以使用的应用程序的默认临时目录。某些应用程序需要使用 TEMP,而其他应用程序需要使用 TMP.
TIME
返回当前时间的系统变量。该变量与 time /t 命令使用相同的格式,并由 Cmd.exe 生成。有关详细信息,请参阅 Time 命令。
USERDOMAIN
返回包含用户帐户的域的名称的本地变量。
USERNAME
返回当前登录用户名的本地变量。
USERPROFILE
返回当前用户配置文件位置的本地变量。
WINDIR
返回操作系统目录位置的系统变量。
在路径规则中使用通配符
在路径规则中可以使用“?”和“*” 通配符。以下示例显示了应用于不同路径规则的通配符:
“\DC ???login$”匹配 \DC ?01login$、\DC ?02login$,依此类推。
“*Windows”匹配 C:Windows、D:Windows、E:Windows 以及每个目录下的所有子文件夹。
“C:win*”匹配 C:winnt、C:windows、C:windir 以及每个目录下的所有子文件夹。
“*.vbs”匹配 Windows XP Professional 中具有此扩展名的任何应用程序。
“C:Application Files*.*”匹配特定子目录中的所有应用程序文件。
注册表路径规则
许多应用程序将其安装文件夹或应用程序目录的路径存储在 Windows 注册表中。有些应用程序可以安装在文件系统中的任何位置。要找到它们,可以创建路径规则来查找这些注册表项。
使用特定文件夹路径(如 C:Program FilesMicrosoft Platform SDK)或环境变量(如 %ProgramFiles%Microsoft Platform SDK)可能不会很容易地标识这些位置。但是,如果程序将其应用程序目录存储在注册表中,则可以创建一个路径规则,该路径规则将使用注册表中所存储的值,例如:
%HKEY_LOCAL_MACHINESOFTWAREMicrosoftPlatformSDKDirectoriesInstall Dir%.
此类路径规则称为注册表路径规则,其格式如下所示:
%<Registry Hive><Registry Key Name><Value Name>%
注意:任何注册表路径规则后缀都不应在规则中的最后一个 % 符号之后紧跟一个 字符。必须完整写出注册表配置单元的名称,缩写无效。
如果将默认规则设置为“不允许的”,将设置四个注册表路径,以便操作系统能够访问系统文件以执行正常操作。创建这些注册表路径规则是为了避免将您自己和所有其他用户锁定在系统之外。这些注册表规则被设置为“不受限的”。只有高级用户才可以修改或删除这些规则。注册表路径规则设置如下所示:
%HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NT CurrentVersionSystemRoot%
%HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NT CurrentVersionSystemRoot%*.exe
%HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NT CurrentVersionSystemRoot%System32*.exe
%HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows CurrentVersionProgramFilesDir%
路径规则优先权
如果有多个匹配的路径规则,则最具体的匹配规则优先权最高。以下一组路径按优先权从最高(最具体的匹配)到最低(最一般的匹配)排序:
Drive:Folder1Folder2FileName.Extension
Drive:Folder1Folder2*.Extension
*.Extension
Drive:Folder1Folder2
Drive:Folder1
区域规则
可以使用区域规则标识从下列任意区域(在 Internet Explorer 中定义)下载的软件:
Internet
Intranet
受限站点
受信任的站点
我的电脑
Internet 区域规则的当前版本仅适用于 Windows Installer (*.msi) 程序包。此规则不适用于通过 Internet Explorer 下载的软件。受区域规则影响的所有其他文件类型已在此模块后面提供的指派文件类型表中列出。有一个由所有区域规则共享的指派文件类型组成的列表。
路径规则建议
使用下表确定最适合于应用程序的用户和环境的路径规则。
表 6.2:确定给定应用程序的最佳路径规则
任务
推荐规则
允许或不允许特定程序版本。
哈希规则
浏览到文件以创建哈希。
标识始终安装在同一位置的程序。
带有环境变量的路径规则
%ProgramFiles%Internet Exploreriexplore.exe
标识可以安装在客户端计算机上的任何位置的程序。
注册表路径规则
%HKEY_LOCAL_MACHINESOFTWARE ComputerAssociatesInoculateIT6.0PathHOME%
标识中央服务器上的一组脚本。
路径规则
\SERVER_NAMEShare
标识一组服务器上的一组脚本。
例如,DC01、DC02 和 DC03。
带有通配符的路径规则
\DC??Share
禁止所有 .vbs 文件,但登录脚本目录中的 .vbs 文件除外。
带有通配符的路径规则
*.VBS 设置为“不允许的”
\LOGIN_SRVShare*.VBS 设置为“不受限的”
不允许由病毒安装的名称始终为 flcss.exe 的文件。
路径规则
flcss.exe 设置为“不允许的”
标识一组可以在任何位置运行的脚本。
证书规则
使用证书对脚本进行数字签名。
允许从受信任的 Internet 区域站点安装软件。
区域规则
将“受信任的站点”设置为“不受限的”。
软件限制策略优先权规则
规则按特定顺序进行评估。与程序匹配程度较高的规则比与同一程序匹配程度较低的规则优先。如果为同一软件建立了两个不同安全级别的相同规则,则安全级别最高的规则优先。例如,如果将两个哈希规则(一个哈希规则的安全级别为“不允许的”,另一个的安全级别为“不受限的”)应用于同一软件程序,则安全级别为“不允许的”的规则优先,程序将不会运行。以下列表定义了规则的优先权顺序(从具体到一般):
1.哈希规则
2.证书规则
3.路径规则
4.区域规则
5.默认规则
软件限制策略选项
本部分讨论了影响软件限制策略行为的各种强制选项。这些选项将改变数字签名文件的 Microsoft Authenticode信任设置的强制行为范围。有两个强制选项:“动态链接库 (DLL) 检查”和“跳过管理员”。
DLL 检查
大多数程序都由可执行文件和许多支持 DLL 组成。默认情况下,不会对 DLL 强制实施软件限制策略规则。这是针对大多数客户的推荐选项,下面列出了这样做的三个原因:
不允许主要可执行文件可以阻止程序运行,因此无需再阻止构成程序的 DLL.
由于 DLL 检查必须检查链接到应用程序的所有库,因此会降低系统性能。例如,如果用户在登录会话中运行了 10 个程序,则软件限制策略将评估每个程序。打开 DLL 检查后,软件限制策略将评估每个程序中的每个 DLL 负载。如果每个程序使用 20 个 DLL,这将导致 10 个可执行程序检查以及 200 个 DLL 检查,因此软件限制策略必须执行 210 次评估。
Internet Explorer 之类的程序由可执行文件、iexplore.exe 和多个支持 DLL 组成。
将默认安全级别设置为“不允许的”将强制系统不仅要标识主要可执行文件(在允许该程序运行之前),还要标识作为 .exe 文件组成部分的所有 DLL,这将加重系统负担。
如果要最高限度地确保环境中运行的程序的安全性,则建议您使用“DLL 检查”选项。这是因为尽管病毒主要攻击可执行文件,但某些病毒却专门攻击 DLL.
要确保程序中不包含病毒,可以使用一组哈希规则来标识可执行文件以及构成该文件的所有 DLL.
要关闭“DLL 检查”选项,请执行下列操作:
在“强制属性”对话框中,选择“除去库文件(如 Dll)之外的所有软件文件” .
图 6.9
“强制属性”对话框显示了文件和用户强制选项