【转】Windows 软件限制策略的应用

   软件限制策略是本地安全策略的一个组成部分,管理员通过设置该策略对文件和程序进行标识,将它们分为可信任和不可信任两种,通过赋予相应的安全级别来实现对程序运行的控制。这个措施对于解决未知代码和不可信任代码的可控制运行问题非常有效。软件设置策略使用两个方面的设置对程序进行限制:安全级别和其他规则。
  安全级别分为“不允许的”和“不受限制的”两种。其中,“不允许的”将禁止程序的运行,不论用户的权限如何;“不受限的”允许登录用户使用他所拥有的权限来运行程序。其它规则,即由管理员通过制定规则对指定的一批或一个文件和程序进行标识,并赋予“不允许的”或“不受限的”安全级别。在这个部分中,管理员可以制定四种类型的规则,按照优先级别分别是:散列规则、证书规则、路径规则和Internet区域规则,这些规则将对文件的访问和程序的运行提供最大限度的授权级别。

1、访问软件限制策略
  作为本地安全策略的一部分,软件限制策略同时也包含在组策略中,这些策略的设置必须以administrator账户或Administrators组成员的身份登录系统。软件限制策略的访问方式有两种:
  (1)在“开始”“运行”处运行secpol.msc,启动本地安全策略编辑器,在“安全设置”下可以看到“软件限制策略”项目。
  (2)在“开始”“运行”处运行gpedit.msc,启动组策略编辑器,在“计算机设置”“Windows设置”“安全设置”下可以看到“软件限制策略”。

2、新建软件限制策略
  首次打开“软件限制策略”时,该项目是空的。策略需要由管理员手动添加。方法是点击“软件限制策略”使其处于选中状态,点击编辑器窗口“操作”菜单下的“新建一个策略”项目,此时可以看到“软件限制策略”下增加了“安全级别”和“其它规则”以及三条属性。一旦执行了新建策略操作后,就不能再次执行该操作,并且这个策略也不能删除。

3、设置默认的安全级别
  新建软件限制策略后,策略的默认安全级别为“不受限的”,如果要更改默认的安全级别,需要在“安全级别”中进行设置,方法如下:
  (1)打开“安全级别”,在右侧窗格中,可以看到有两条设置,其中图标中带有一个小对号的设置为默认设置;
  (2)点击不是默认值的那条设置,单击右键,选择“设置为默认”项。当设置“不允许的”为默认值时,系统会显示一个提示信息对话框,点击“确定”即可。该步骤也可以双击非默认的设置,在弹出的属性窗口中,点击“设为默认值”。

4、设置策略的作用范围和对象
  通过策略的“强制”属性可以设置策略应用的软件文件是否包含库文件以及作用的对象是否包含管理员账户。通常情况下,为了避免引起系统不必要的问题以及便于对系统的管理,策略的作用范围应设置为不包含库文件的所有软体文件,作用对象设置为除本地管理员外的所有用户。设置的方法如下:
  (1)单击“软件限制策略”,双击右侧窗格中的“强制”属性项目;
  (2)选择“除去库文件(如Dll文件)以外的所有软体文件”选项和“除本地管理员以外的所有用户”选项,单击“确定”。

5、制定规则
  只通过安全级别的设置,显然不能很好的实现对文件和程序的控制,必须通过制定合理的规则来标识那些禁止或允许运行的文件和程序,并进而实现对这些文件和程序的灵活控制。上文中提到可制定规则的类型有四种:散列规则、证书规则、路径规则和Internet区域规则。它们标识文件以及制定规则的方法如下:
  散列规则:利用散列算法计算出指定文件的散列,这个散列是唯一标识该文件的一系列定长字节。制定了散列规则后,用户访问或运行文件时,软件限制策略会根据文件的散列及安全级别来允许或阻止对该文件进行访问或运行。当文件移动或重命名,不会影响文件的散列,软件限制策略对该文件依然有效。制定方法如下:
  (1)点击“软件限制策略”下的“其它规则”,在“其他规则”上单击右键,或在右侧窗格的空白区域单击右键,选择“新散列规则”。
  (2)点击“浏览”,指定要标识的文件或程序,例如cmd.exe,确认后,在文件散列中可以看到计算出来的散列,在“安全级别”中选择“不允许的”或“不受限的”,点击“确定”,在“其它规则”中可以看到新增了一条类型为散列的规则。
  证书规则:利用与文件或程序相关联的签名证书进行标识。证书规则需要的证书可以是自签名的、由证书颁发机构(CA)颁发或是由Windows公钥机构发布。证书规则不应用于EXE文件和DLL文件,它主要应用于脚本和Windows安装程序包。当某个文件由其关联的签名证书标识后,运行该文件时,软件限制策略会根据该文件的安全级别来决定是否可以运行。文件的移动和更名不会对证书规则的应用产生影响。制定证书规则时要求能够访问到用来标识文件的证书文件,证书文件的扩展名为.CER。创建方法同散列规则。
  路径规则:利用文件或程序的路径进行标识,该规则可以针对一个指定的文件、用通配符表示的一类文件或是某一路径下的所有文件及子文件夹中的文件。由于标识是由路径来完成的,当文件移动或重命名时,路径规则会失去作用。在路径规则中,根据路径范围的大小,优先级别各有高低,范围越大,优先级越低。通常路径的优先级从高到低为:指定的文件、带路径的以通配符表示的一类文件、通配符表示的一类文件、路径、上一级路径。创建方法同散列规则。
  Internet区域规则:利用应用程序下载的Internet区域进行标识。区域主要包括:Internet、本地Intranet、本地计算机、受限制的站点、受信任的站点。该规则主要应用于Windows的安装程序包。创建方法同散列规则。

6、维护可执行代码的文件类型
  不论是那种规则,它所影响的文件类型只有“指派的文件类型”属性中列出的那些类型,这些类型是所有规则共享的。某些情况下,管理员可能需要删除或添加某种类型的文件,以便规则能够对这类文件失去或产生作用,这就需要我们来维护“指派的文件类型”属性。方法如下:
  (1)单击“软件限制策略”,双击右侧窗格中的“指派的文件类型”属性项目;
  (2)如果新增一种文件类型,在“文件扩展名”处输入添加的扩展名,点击“添加”;如果要删除一种文件类型,单击列表中的制定类型,点击“删除”。

7、利用规则的优先级灵活控制程序的运行
  四种规则的优先级从高到依次为:散列规则、证书规则、路径规则、Internet区域规则。如果有超过一条以上的规则同时作用于同一个程序,那么优先级最高的规则设定的安全级别将决定该程序是否能运行。如果多于一条的同类规则作用于同一个程序,那么同类规则中最具限制力的规则将起作用。这为我们提供了一条对程序的运行进行灵活控制的途径。单一规则的作用效果虽然全面,但是也限制了我们所需要的那些部分,复合规则的综合作用将产生诸如“除了我们需要的/不需要的以外,其他全部不允许/不受限制”这样的效果,这也许才是我们真正需要的安全级别。
  提示:软件限制策略的生效需要注销并重新登录系统。如果在软件限制策略中为一个程序制定了一条安全级别为“不受限的”规则,而这个程序包含在“不要运行指定的Windows应用程序”策略的不允许运行程序列表中,那么最终这个程序是不允许运行的。要取消对程序的限制,需要将相关的规则删除:在“其他规则”中的规则列表中,在要删除的规则上点击右键,选择“删除”即可。

  上述三种限制程序运行的措施各有特点。从限制的实现方法和效果来看,限制用户对文件的访问权限可以让管理员以Administartor账户身份对所有用户的权限进行控制,作用的范围可以是所有类型的文件和文件夹,但是这种方法受到应用环境的限制。采取基于策略的措施,不论是启用“不要运行指定的Windows应用程序”策略还是设置软件限制策略,对于要限制的用户对象作用范围来讲都是用户组,不能针对具体的用户进行设置,要么是所有的用户,要么是除管理员组外的所有用户。但是这些措施对系统环境的要求不高,在XP系统中都可以进行实施。另外,基于策略的设置可以对计算机进行更加灵活的管理。特别是软件限制策略允许管理员通过多种方式对程序进行标识,对于程序的运行具有很高的可控性。