使用组策略限制软件运行示例.docx
《使用组策略限制软件运行示例.docx》由会员分享,可在线阅读,更多相关《使用组策略限制软件运行示例.docx(45页珍藏版)》请在冰点文库上搜索。
![使用组策略限制软件运行示例.docx](https://file1.bingdoc.com/fileroot1/2023-5/17/8b52311b-34b4-44d4-9c6b-130faf1cc08b/8b52311b-34b4-44d4-9c6b-130faf1cc08b1.gif)
使用组策略限制软件运行示例
导读
注意:
如果你没有耐心或兴趣看完所有内容而想直接使用规则的话,请至少认真看一次规则的说明,谢谢
实际上,本教程主要为以下内容:
理论部分:
1.软件限制策略的路径规则的优先级问题
2.在路径规则中如何使用通配符
3.规则的权限继承问题
4.软件限制策略如何实现3D部署(配合访问控制,如NTFS权限),软件限制策略的精髓在于权限,部署策略同时,往往也需要学会设置权限
规则部分:
5.如何用软件限制策略防毒(也就是如何写规则)
6.规则的示例与下载
其中,1、2、3点是基础,很多人写出无效或者错误的规则出来都是因为对这些内容没有搞清楚;第4点可能有
点难,但如果想让策略有更好的防护效果并且不影响平时正常使用的话,这点很重要。
如果使用规则后发现有的软件工作不正常,请参考这部分内容,注意调整NTFS权限
理论部分
软件限制策略包括证书规则、散列规则、Internet区域规则和路径规则。
我们主要用到的是散列规则和路径规则,其中灵活性最好的就是路径规则了,所以一般我们谈到的策略规则,若没有特别说明,则直接指路径规则。
或者有人问:
为什么不用散列规则?
散列规则可以防病毒替换白名单中的程序,安全性不是更好么?
一是因为散列规则不能通用,二是即使用了也意义不大——防替换应该要利用好NTFS权限,而不是散列规则,要是真让病毒替换了系统程序,那么再谈规则已经晚了
?
一.环境变量、通配符和优先级
关于环境变量(假定系统盘为C盘)?
%USERPROFILE%?
?
表示C:
\DocumentsandSettings\当前用户名?
%HOMEPATH%?
?
表示C:
\DocumentsandSettings\当前用户名
%ALLUSERSPROFILE%?
?
表示C:
\DocumentsandSettings\AllUsers
%ComSpec%?
?
表示C:
\WINDOWS\System32\?
%APPDATA%?
?
表示C:
\DocumentsandSettings\当前用户名\ApplicationData?
%ALLAPPDATA%?
?
表示C:
\DocumentsandSettings\AllUsers\ApplicationData?
%SYSTEMDRIVE%表示C:
%HOMEDRIVE%?
?
表示C:
%SYSTEMROOT%?
?
表示C:
\WINDOWS?
%WINDIR%?
?
?
?
表示C:
\WINDOWS?
%TEMP%和%TMP%?
?
表示C:
\DocumentsandSettings\当前用户名\LocalSettings\Temp?
%ProgramFiles%?
?
表示C:
\ProgramFiles?
%CommonProgramFiles%?
?
表示C:
\ProgramFiles\CommonFiles?
关于通配符:
Windows里面默认
*:
任意个字符(包括0个),但不包括斜杠
?
:
1个或0个字符
几个例子
*\Windows匹配C:
\Windows、D:
\Windows、E:
\Windows以及每个目录下的所有子文件夹。
C:
\win*匹配C:
\winnt、C:
\windows、C:
\windir以及每个目录下的所有子文件夹。
*.vbs匹配WindowsXPProfessional中具有此扩展名的任何应用程序。
C:
\ApplicationFiles\*.*匹配特定目录(ApplicationFiles)中的应用程序文件,但不包括ApplicationFiles的子目录
关于优先级:
总的原则是:
规则越匹配越优先
1.绝对路径>通配符全路径?
如C:
\Windows\>*\Windows\?
?
2.文件名规则>目录型规则?
?
?
?
?
如若在Windows目录中,那么?
?
>C:
\Windows
3.环境变量=相应的实际路径=注册表键值路径
如%ProgramFiles%=C:
\ProgramFiles=%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesDir%
4.对于同是目录规则,则能匹配的目录级数越多的规则越优先
?
?
对于同是文件名规则,优先级均相同
5.散列规则比任何路径规则优先级都高
6.若规则的优先级相同,按最受限制的规则为准
举例说明,例如cmd的全路径是C:
\Windows\system32\
那么,优先级顺序是:
绝对路径(如C:
\Windows\system32\?
?
>?
通配符全路径(如*\Windows\*\?
>?
文件名规则(如?
=?
通配符文件名规则(如*.*)?
>?
部分绝对路径(不包含文件名,如?
C:
\Windows\system32?
)?
?
=?
?
部分通配符路径(不包含文件名,如C:
\*\system32?
)?
?
>?
C:
\Windows?
?
=?
?
*\*
注:
1.?
通配符*并不包括斜杠\。
例如*\WINDOWS匹配C:
\Windows,但不匹配C:
\Sandbox\WINDOWS
2.*和**是完全等效的,例如**\**\abc=*\*\abc
3.C:
\abc\*?
?
可以直接写为C:
\abc\或者C:
\abc,最后的*是可以省去的,因为软件限制策略的规则可以直接匹配到目录。
4.软件限制策略只对“指派的文件类型”列表中的格式起效。
例如*.txt不允许的,这样的规则实际上无效,除非你把TXT格式也加入“指派的文件类型”列表中。
而且默认不对加载dll进行限制,除非在“强制”选项中指定:
?
?
?
?
?
?
?
?
?
?
5.*和*.*是有区别的,后者要求文件名或路径必须含有“.”,而前者没有此限制,因此,*.*的优先级比*的高
6.?
:
\*与?
:
\*.*是截然不同的,前者是指所有分区下的每个目录下的所有子文件夹,简单说,就是整个硬盘;而?
:
\*.*仅包括所有分区下的带“.”的文件或目录,一般情况
下,指的就是各盘根目录下的文件。
那非一般情况是什么呢?
请参考第7点
7.?
:
\*.*中的“.”可能使规则范围不限于根目录。
这里需要注意的是:
有“.”的不一定是文件,可以是文件夹。
例如F:
\,一样符合?
:
\*.*,所以规则对F:
\下的所有文件及子目录都生效。
8.这是很多人写规则时的误区。
首先引用《组策略软件限制策略规则包编写之菜鸟入门(修正版)》里的一段:
4、如何保护上网的安全?
在浏览不安全的网页时,病毒会首先下载到IE缓存以及系统临时文件夹中,并自动运行,造成系统染毒,在了解了这个感染途径之后,我们可以利用软件限制策略进行封堵?
%SYSTEMROOT%\tasks\**\*.*?
?
不允许的?
?
(这个是计划任务,病毒藏身地之一)?
%SYSTEMROOT%\Temp\**\*.*?
?
不允许的?
%USERPROFILE%\Cookies\*.*?
?
不允许的?
%USERPROFILE%\LocalSettings\**\*.*?
?
不允许的?
?
(这个是IE缓存、历史记录、临时文件所在位置)
说实话,上面引用的部分不少地方都是错误的
先不谈这样的规则能否保护上网安全,实际上这几条规则在设置时就犯了一些错误
例如:
%USERPROFILE%\LocalSettings\**\*.*?
?
不允许的
可以看出,规则的原意是阻止程序从LocalSettings(包括所有子目录)中启动
现在大家不妨想想这规则的实际作用是什么?
先参考注1和注2,**和*是等同的,而且不包含字符“\”。
所以,这里规则的实际效果是“禁止程序从LocalSettings文件夹的一级子目录中启动”,不包括LocalSettings根目录,也不包括二级和以下的子目录。
现在我们再来看看LocalSettings的一级子目录有哪些:
Temp、TemporaryInternetFiles、ApplicationData、History。
阻止程序从Temp根目录启动,直接的后果就是很多软件不能成功安装
那么,阻止程序从TemporaryInternetFiles根目录启动又如何呢?
实际上,由于IE的缓存并不是存放TemporaryInternetFiles根目录中,而是存于TemporaryInternetFiles的子目录的子目录里(-_-||),所以这种写法根本不能阻止程序从IE缓存中启动,是没有意义的规则
若要阻止程序从某个文件夹及所有子目录中启动,正确的写法应该是:
某目录\**?
某目录\*?
某目录\?
某目录
9.
?
:
\?
?
不允许的
这是流传的所谓防U盘病毒规则,事实上这条规则是没有作用的,关于这点在?
?
已经作了分析
二.软件限制策略的3D的实现:
“软件限制策略通过降权实现AD,并通过NTFS权限实现FD,同时通过注册表权限实现RD,从而完成3D的部署”
对于软件限制策略的AD限制,是由权限指派来完成的,而这个权限的指派,用的是微软内置的规则,即使我们修改“用户权限指派”项的内容(这个是对登陆用户的权限而言),也无法对软件限制策略中的安全等级进行提权。
所以,只要选择好安全等级,AD部分就已经部署好了,不能再作干预
而软件件限制策略的FD和RD限制,分别由NTFS权限、注册表权限来完成。
而与AD部分不同的是,这样限制是可以干预的,也就是说,我们可以通过调整NTFS和注册表权限来配置FD和RD,这就比AD部分要灵活得多。
小结一下,就是
AD——用户权利指派(内置的安全等级)
FD——NTFS权限
RD——注册表权限
先说AD部分,我们能选择的就是采用哪种权限等级,微软提供了五种等级:
不受限的、基本用户、受限的、不信任的、不允许的。
不受限的,最高的权限等级,但其意义并不是完全的不受限,而是“软件访问权由用户的访问权来决定”,即继承父进程的权限。
基本用户,基本用户仅享有“跳过遍历检查”的特权,并拒绝享有管理员的权限。
受限的,比基本用户限制更多,也仅享有“跳过遍历检查”的特权。
不信任的,不允许对系统资源、用户资源进行访问,直接的结果就是程序将无法运行。
不允许的,无条件地阻止程序执行或文件被打开
很容易看出,按权限大小排序为不受限的>基本用户>受限的>不信任的>不允许的
其中,基本用户、受限的、不信任的这三个安全等级是要手动打开的
具体做法:
打开注册表编辑器,展开至
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers
新建一个DWORD值,命名为Levels,其值可以为
0x10000?
?
?
?
?
?
?
?
?
?
?
?
不允许的”级别不包含任何FD操作。
你可以对一个设定成“不允许的”文件进行读取、复制、粘贴、修改、删除等操作,组策略不会阻止,前提当然是你的用户级别拥有修改该文件的权限
2.“不受限的”级别不等于完全不受限制,只是不受软件限制策略的附加限制。
事实上,“不受限的”程序在启动时,系统将赋予该程序的父进程的权限字,该程序所获得的访问令牌决定于其父进程,所以任何程序的权限将不会超过它的父进程。
权限的分配与继承:
这里的讲解默认了一个前提:
假设你的用户类型是管理员。
在没有软件限制策略的情况下,
很简单,如果程序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无法下载和运行病毒,不给病毒任何的机会。
FD:
NTFS权限
*要求磁盘分区为NTFS格式*
其实MicrosoftWindows的每个新版本都对NTFS文件系统进行了改进。
NTFS的默认权限对大多数组织而言都已够用。
注:
设置前请先在“文件夹选项”中取消选中“使用简单文件共享(推荐)”
NTFS权限的分配
1.如果一个用户属于多个组,那么该用户所获得的权限是各个组的叠加
2.“拒绝”的优先级比“允许”要高
例如:
用户A同时属于Administrators和Everyone组,若Administrators组具有完全访问权,但Everyone组拒绝对目录的写入,那么用户A的实际权限是:
不能对目录写入,但可以进行除此之外的任何操作
高级权限名称描述?
(包括了完整的FD和部分AD)
遍历文件夹/运行文件?
?
(遍历文件夹可以不管,主要是“运行文件”,若无此权限则不能启动文件,相当于AD的运行应用程序)
允许或拒绝用户在整个文件夹中移动以到达其他文件或文件夹的请求,即使用户没有遍历文件夹的权限(仅适用于文件夹)。
列出文件夹/读取数据
允许或拒绝用户查看指定文件夹内文件名和子文件夹名的请求。
它仅影响该文件夹的内容,而不影响您对其设置权限的文件夹是否会列出(仅适用于文件夹)。
读取属性(FD的读取)
允许或拒绝查看文件中数据的能力(仅适用于文件)。
读取扩展属性
允许或拒绝用户查看文件或文件夹属性(例如只读和隐藏)的请求。
属性由NTFS定义。
创建文件/写入数据(FD的创建)
“创建文件”允许或拒绝在文件夹中创建文件(仅适用于文件夹)。
“写入数据”允许或拒绝对文件进行修改并覆盖现有内容的能力(仅适用于文件)。
创建文件夹/追加数据
“创建文件夹”允许或拒绝用户在指定文件夹中创建文件夹的请求(仅适用于文件夹)。
“追加数据”允许或拒绝对文件末尾进行更改而不更改、删除或覆盖现有数据的能力(仅适用于文件)。
写入属性(即改写操作了,FD的写)
允许或拒绝用户对文件末尾进行更改,而不更改、删除或覆盖现有数据的请求(仅适用于文件)。
?
?
即写操作
写入扩展属性
允许或拒绝用户更改文件或文件夹属性(例如只读和隐藏)的请求。
属性由NTFS定义。
删除子文件夹和文件(FD的删除)
允许或拒绝删除子文件夹和文件的能力,即使子文件夹或文件上没有分配“删除”权限(适用于文件夹)。
删除(与上面的区别是,这里除了子目录及其文件,还包括了目录本身)
允许或拒绝用户删除子文件夹和文件的请求,即使子文件夹或文件上没有分配“删除”权限(适用于文件夹)。
读取权限(NTFS权限的查看)
允许或拒绝用户读取文件或文件夹权限(例如“完全控制”、“读取”和“写入”)的请求。
更改权限(NTFS权限的修改)
允许或拒绝用户更改文件或文件夹权限(例如“完全控制”、“读取”和“写入”)的请求。
取得所有权?
允许或拒绝取得文件或文件夹的所有权。
文件或文件夹的所有者始终可以更改其权限,而不论用于保护该文件或文件夹的现有权限如何。
以基本用户为例,基本用户能做什么?
在系统默认的NTFS权限下,基本用户对系统变量和用户变量有完全访问权,对系统文件夹只读,对ProgramFiles的公共文件夹只读,DocumentandSetting下,仅对当前用户目录有完全访问权,其余不能访问
关于基本用户的相关详细介绍,请看这里:
=
如果觉得以上的限制严格了或者宽松了,可以自行调整各个目录和文件的NTFS权限。
如果发现浏览器在基本用户下无法使用某些功能的,很多都是由NTFS权限造成的,可以尝试调整对应文件或文件夹的NTFS权限
NTFS权限的调整
基本用户、受限用户属于以下组
Users
AuthenticatedUsers
Everyone
INTERACTIVE
调整权限时,主要利用到的组为Users
为什么是Users组?
因为调整Users的权限可以限制基本用户、受限用户,但却不会影响到管理员,这样就既保证了使用基本用户的安全性和管理员帐户下的操作的方便性
例:
对用户变量Temp目录进行设置,禁止基本用户从该目录运行程序,可以这样做:
首先进入“高级”选项,取消勾选“从父项继承那些可以应用到子对象的权限项目,包括那些在此明确定义的项目(I)”
?
然后设置Users的权限如图
?
然后把除Administrators、Users、SYSTEM之外的所有组都删除之
这样基本用户下的程序就无法从Temp启动文件了
注意:
1.不要使用“拒绝”,不然管理员权限下的程序也会受影响
2.everyone组的权限适用于任何人、任何程序,故everyone组的权限不能太高,至少要低于Users组
其实利用NTFS权限还可以实现很多功能
又例如,如果想保护某些文件不被修改或删除,可以取消Users的删除和写入权限,从而限制基本用户,达到保护重要文件的效果
当然,也可以防止基本用户运行指定的程序
以下为微软建议进行限制的程序:
RD部分:
注册表权限。
由于微软默认的注册表权限分配已经做得很好了,不需要作什么改动,所以这里就直接略过了
三.关于组策略规则的设置:
规则要顾及方便性,因此不能对自己有过多的限制,或者最低限度地,即使出现限制的情况,也能方便地进行排除
规则要顾及安全性,首先要考虑的对象就是浏览器等上网类软件和可移动设备所带来的威胁。
没有这种防外能力的规则都是不完整或者不合格的
基于文件名防病毒、防流氓的规则不宜多设,甚至可以舍弃。
一是容易误阻,二是病毒名字可以随便改,特征库式的黑名单只会跟杀软的病毒库一样滞后。
于是,我们有两种方案:
如果想限制少一点的,可以只设防“入口”规则,主要面向U盘和浏览器
如果想安全系数更高、全面一点的,可以考虑全局规则+白名单
具体内容见二楼
待续.....
最后布置几道作业
?
,看看大家对上面的内容消化得如何
?
1.?
在规则“F:
\**\*\*.*?
?
不允许”下,下面那些文件不能被打开?
A:
F:
\
:
\\
:
\Folder1\\
:
\Folder1\\\
2.?
在以管理员身份登陆的情况下,建立规则如下:
%Temp%?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
受限的
%USERPROFILE%\LocalSettings\TemporaryInternetFiles?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
不允许的
%ProgramFiles%\InternetExplorer\?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
基本用户
%HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders\Desktop%?
?
不受限的
在这四条规则下,假设这样的情况:
下载一个到TemporaryInternetFiles目录,然后复制到Temp目录,再从Temp目录中运行,(复制和运行的操作都是IE在做),然后由释放到桌面,并运行。
那么的访问令牌为:
A.不受限的?
?
?
?
?
?
B.不允许的?
?
?
?
C.基本用户?
?
?
?
D.受限的
3.?
试说出F:
\win*和F:
\win*\的区别
4.?
若想限制QQ的行为,例如右下方弹出的广告,并不允许QQ调用浏览器,可以怎么做?
答对两题即及格。
不过貌似还是有些难度
[?
本帖最后由深红的雪于2008-12-2018:
48编辑?
]
规则部分
基础部分,如何建立规则:
首先,打开组策略
开始-运行,输入“”(不包含引号)并回车。
在弹出的对话框中,依次展开计算机配置-Windows设置-安全设置-软件限制策略
如果你之前没有配置过软件限制策略,那么可以在菜单栏上选择操作-创建新的策略
如图
?
然后转到“其它规则”项,在菜单栏选择“操作”,在下拉菜单选择“新路径规则”
在弹出的对话框中,就可以编辑规则了
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~华丽丽的分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
软件限制策略的其实并不复杂,在规则设置上是十分简单的,只有五个安全级别,你要做的就只是写一条路径,然后选择一个安全等级,这样就完成了一条规则的设置了,不像HIPS那样,光AD部分就细分成N项。
但软件限制策略的难点在于:
如何确保你的规则真正有效并按你的意愿去工作,即如何保证规则的正
确性和有效性。
从四道题目的答对率来看,发现问题还是不少的
?
附上题目的参考答案
考点:
注2、注4、注7
这题的C选项是陷阱,因为TXT文件不在规则的阻挡范围之内。
D项参考注7,F:
\Folder1\\(注意“.”)正好能匹配F:
\**\*\*.*,因此下面的EXE文件不能被打开
说明:
此题的考点为“AD权限的分配/最低权限原则”
我们先整理一下父子进程的关系:
->->
(基本用户)?
?
(受限的)?
?
(受限的)
其中,从Temp目录启动,受规则“%Temp%?
?
受限的”的限制,其权限降为“受限的”。
从桌面启动,虽然桌面的程序是不受限的,但由于其父进程为,故继承的权限,故的最终获得访问令牌还是“受限的”
另外要注意的是,复制、创建文件等操作都不会构成权限的继承
3.考点:
注1、注3、综合分析
说明:
F:
\win*和F:
\win*\仅相差一个字符“\”,由注1可知,*并不包括斜杠。
那么斜杠“\”在这里的作用是什么?
实际上,这个斜杠在规则中的作用相当于声明斜杠前的路径指的是目录,而不是文件,注意到这点后,就可以看出区别了:
F:
\win*既可以匹配到F:
\windows、F:
\windir、F:
\winrar等目录,也可以匹配到F:
\、F:
\等文件
而F:
\win*\仅能匹配到目录
4.考点:
NTFS权限
此题答案不唯一,只要是合理可行的方案即可
下面答案仅供参考:
限制QQ的行为,可以把QQ设为基本用户。
防止QQ广告,可以对Tencent下的AD目录调整NTFS权限——取消Users组的创建、写入权限
不允许QQ调用浏览器,可以对IE调整NTFS权限——取消Users组的“读取和运行”的权限
?
?
(1019Bytes,下载次数:
511)?
下面将详细讨论规则部分
一、再次强调一下通配符的使用
Windows里面默认
*:
任意个字符(包括0个),但不包括斜