3、软件限制策略的优先权
一个特定的程序可以有多个不同的规则适用,为此,可以按下列优先权顺序来使用这些规则。优先权按从高到低的顺序排列如下:
散列规则>证书规则>路径规则> Internet区域规则
如果存在多个路径规则冲突,则最具限制性的规则占有优先权。总的原则就是:规则越匹配越优先。
例如:
C:\Windows\System32\Taskmgr.exe C:\Windows\System32\*.exe *.exe
C:\Windows\System32\
C:\Windows\
本例是按优先权从高到低排列的。从这里我们可以看出:
绝对路径>通配符路径
文件名规则>目录规则
对于同样是目录规则的,则目录数匹配越多就越优先。
如果同时存在两个相似的规则,则最具限制性的规则优先权最高。例如,如果 C:\Windows\ 上有一个路径规则,其安全级别为“不允许的”,而 %windir% 上也有一个路径规则,其安全级别为“不受限制的”,则会采用最具限制性的规则,即“不允许的”。
这里,我们再顺便介绍一下环境变量和通配符。
在路径规则里,允许使用诸如“%windir%”“%userprofile%”之类的环境变量。一般情况下,我们的系统是在C盘,但也有些人基于其它一些原因如要安装双系统等,将系统安装在其它比如D盘下面,这时我们平常用到的一些路径比如“C:\windows\”就会无效,为了防止这种情况,我们就可以使用系统变量,像“%windir%”,系统会自动为我们匹配其目录。我们在创建规则的时候也可以使用这些环境变量,以适用于不同的系统。下面列出的是一些常使用的环境变量,更多的环境变量你可以运行 CMD 然后运行 SET 命令进行查看。
ALLUSERSPROFILE = C:\Documents and Settings\All Users
APPDATA = C:\Documents and Settings\Administrator\Application Data
CommonProgramFiles = C:\Program Files\Common Files
ComSpec = C:\WINDOWS\system32\cmd.exe
HOMEDRIVE = C:
HOMEPATH = \Documents and Settings\Administrator
ProgramFiles = C:\Program Files
SystemDrive = C:
SystemRoot = C:\WINDOWS
TEMP = C:\Documents and Settings\当前用户名\Local Settings\Temp
TMP = C:\Windows\Temp
USERPROFILE = C:\Documents and Settings\Administrator
WINDIR = C:\WINDOWS
同样,路径规则也支持使用通配符,对DOS熟悉的筒子应该知道这个东西,就是“?”和“*”。
? :包括1个或0个字符* :包括任意个字符(包括0个),但不包括斜杠
对于通配符,其实网上很多教程上的做法是有误的。
例如有一条:%USERPROFILE%\Local Settings\**\*.* 不允许的这条规则本意是 阻止所有被指派的文件从 Local Settings 目录(包括其子目录)启动,但是经过验证发现,“**”和“*”是完全等效的,并且“*”不包括“\”。那么这条规则的实际意思就是“阻止所有被指派的文件从 Local Settings 的一级目录运行”,不包括 Local Settings 目录本身,也不包括二级及其下的所有子目录。我们来看看 Local Settings 目录下的一级目录有哪些呢?默认情况下是:Temp、Temporary Internet Files、Application Data、History,那么这条规则里就包括有 禁止TEMP目录下的所有被指派的文件运行 的意思,其根本结果就是会造成很多软件无法安装。因为有些软件在安装时会先行解压到TEMP目录。
影响最大(简直可以列入本年度十大最错误的做法中了)的一条:?:\autorun.inf “不允许的”
相信对 软件限制策略 有研究的筒子都见过这条规则吧,这条规则的本意是阻止所有盘根目录下的 autorun.inf 文件运行,以阻止U盘病毒的运行。它也确实达到了它的目的, autorun.inf 文件双击的时候被阻止了。但病毒被阻止了吗?答案是否定的,病毒还是会被正常运行。
为什么呢?我们来了解一下系统是怎么处理 autorun.inf 文件的。
首先,svchost.exe 读取 autorun.inf,然后 explorer.exe 读取 autorun.inf,再然后 explorer.exe 将 autorun.inf 里的相关内容写入注册表中 MountPoints2 这个键值。只要 explorer.exe 成功写入注册表,那么这个 autorun.inf 文件的使命就完成了,U盘里的病毒就等着你去双击U盘了。
那么我们的软件限制策略中,将 autorun.inf 设为“不允许的”这一做法在这个过程中起到什么作用?
很遗憾地告诉你:没有任何作用。
真要说它起到的作用,仅仅是阻止你打开 autorun.inf 这个文件而已。所以,对于 autorun.inf 的所有策略,都是无效的。
真要想防止U盘病毒的运行,策略的设置只有一种方法:?:\*.* 不允许 &n
bsp; 意思就是阻止所有盘下面的被指派文件运行。当然,如果你只想阻止U盘下的文件运行的话,那就将规则里的“?”改为具体的盘符即可。当然还有其它很多办法来防止U盘病毒的,这个我会在文后附上其它解决方法的,欢迎筒子们进行验证。让我们去伪存真,找到最好的解决办法吧:)
4、规则的权限分配及继承
这里的讲解的一个前提是:假设你的用户类型是管理员。
在没有软件限制策略的情况下,如果程序a启动程序b,那么a是b的父进程,b继承a的权限
现在把a设为基本用户,b不做限制(把b设为不受限或者不对b设置规则效果是一样的)然后由a启动b,那么b的权限继承于a,也是基本用户,即:
a(基本用户)-> b(不受限的)= b(基本用户)
若把b设为基本用户,a不做限制,那么a启动b后,b仍然为基本用户权限,即
a(不受限的)-> b(基本用户)= b(基本用户)
可以看到,一个程序所能获得的最终权限取决于:父进程权限 和 规则限定的权限 的最低等级,也就是我们所说的最低权限原则
举一个例子:
若我们把IE设成基本用户等级启动,那么由IE执行的任何程序的权限都将不高于基本用户级别,只能更低。所以就可以达到防范网马的效果——即使IE下载病毒并执行了,病毒由于权限的限制,无法对系统进行有害的更改,如果重启一下,那么病毒就只剩下尸体了。
甚至,我们还可以通过NTFS权限的设置,让IE无法下载和运行病毒,不给病毒任何的机会。
这里,我们来看一下NTFS的权限(这里的权限是NTFS权限,与规则无关)。NTFS的所有权限如下:
遍历文件夹/运行文件 (遍历文件夹可以不管,主要是“运行文件”,若无此权限则不能启动文件,相当于AD的运行应用程序)
允许或拒绝用户在整个文件夹中移动以到达其他文件或文件夹的请求,即使用户没有遍历文件夹的权限(仅适用于文件夹)。
列出文件夹/读取数据
允许或拒绝用户查看指定文件夹内文件名和子文件夹名的请求。它仅影响该文件夹的内容,而不影响您对其设置权限的文件夹是否会列出(仅适用于文件夹)。
读取属性
允许或拒绝查看文件中数据的能力(仅适用于文件)。
读取扩展属性
允许或拒绝用户查看文件或文件夹属性(例如只读和隐藏)的请求。属性由 NTFS 定义。
创建文件/写入数据
“创建文件”允许或拒绝在文件夹中创建文件(仅适用于文件夹)。“写入数据”允许或拒绝对文件进行修改并覆盖现有内容的能力(仅适用于文件)。
创建文件夹/追加数据
“创建文件夹”允许或拒绝用户在指定文件夹中创建文件夹的请求(仅适用于文件夹)。“追加数据”允许或拒绝对文件末尾进行更改而不更改、删除或覆盖现有数据的能力(仅适用于文件)。
写入属性
允许或拒绝用户对文件末尾进行更改,而不更改、删除或覆盖现有数据的请求(仅适用于文件)。 即写操作
写入扩展属性
允许或拒绝用户更改文件或文件夹属性(例如只读和隐藏)的请求。属性由 NTFS 定义。
删除子文件夹和文件
允许或拒绝删除子文件夹和文件的能力,即使子文件夹或文件上没有分配“删除”权限(适用于文件夹)。
删除 (与上面的区别是,这里除了子目录及其文件,还包括了目录本身)
允许或拒绝用户删除子文件夹和文件的请求,即使子文件夹或文件上没有分配“删除”权限(适用于文件夹)。
读取权限(NTFS权限的查看)
允许或拒绝用户读取文件或文件夹权限(例如“完全控制”、“读取”和“写入”)的请求。
更改权限(NTFS权限的修改)
允许或拒绝用户更改文件或文件夹权限(例如“完全控制”、“读取”和“写入”)的请求。
取得所有权
允许或拒绝取得文件或文件夹的所有权。文件或文件夹的所有者始终可以更改其权限,而不论用于保护该文件或文件夹的现有权限如何。
在系统默认的NTFS权限下,基本用户对于windows\program files目录只有 遍历文件夹/运行文件 列出文件夹/读取属性 读取扩展属性 读取权限 这四项权限,对于documents and settings目录,仅对其所有的目录有完全控制的权限,其它目录只读?
我们的规则里面所说到的基本用户、受限用户,基本上等同于 NTFS 权限里的 USERS 组,但受限用户受到的限制更多,不管NTFS权限如何,其始终受到限制。
更多NTFS权限的设置,大家可以查阅NTFS相关的内容。
5、如何编写规则
关于规则编写,我们要遵循以下几个原则:要方便,不能对自己有过多的限制,这样,即使出现问题也好排队要安全,要考虑到你的系统中毒的来源有哪些,针对其做好防护。
基于文件名的病毒规则尽量少用,因为容易出现误阴,而且病毒的文件名随便可以改,我们做的又不是特征库。
下面介绍规则的具体编写方式
开始 -> 运行 -> gpedit.msc
在左边的窗口中依次展开计算机配置-> Windows设置->安全设置->软件限制策略
如果你之前没有进行过设置,那么在 软件限制策略 上点右键,选择创建新的策略然后在 其它规则 上右键点击,选择 新路径规则 既可以进行规则的创建了。


规则的设置很简单,就五个安全级别,根据你自己的需要设置即可。难点主要是规则的正确性和有效性,这个得靠多多实践来提升了。
另外提醒一下,大家在设置规则时,注意不要更改以下4条系统默认规则同时还要考虑它们的影响:
%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRoot%路径不受限的
%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRoot%*.exe 路径 不受限的
%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRoot%System32\*.exe 路径 不受限的
%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
ProgramFilesDir%路径不受限的
相当于规则:
%SystemRoot%不受限的整个Windows目录不受限
%SystemRoot%\*.exe 不受限的 Windows下的exe文件不受限
%SystemRoot%\System32\*.exe 不受限的 System32下的exe文件不受限
%ProgramFiles%不受限的整个ProgramFiles目录不受限
这里要注意的一点是规则在新添加或者进行修改以后根据不同的机器,会在一至两分钟内生效,不会立即生效,如果长时间不生效,我们可以通过注销,重新登陆来生效,也可以使用命令 gpupdate /force 来强制刷新。