科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网服务器频道通过组策略集中控制PowerShell安全性设置

通过组策略集中控制PowerShell安全性设置

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

PowerShell是一种新的命令行外壳和脚本语言,用于进行系统管理和自动化。Windows PowerShell 建立在 .NET Framework 的基础上,可使 IT 专业人员和开发人员控制和自动完成 Windows 和应用程序的管理。

来源:赛迪网 2008年10月7日

关键字: 系统管理 Windows PowerEdge 组策略

  • 评论
  • 分享微博
  • 分享邮件

  摘要:PowerShell是用于系统管理和自动化的一种新的命令行外壳和脚本语言,你一定想知道PowerShell的安全原理,以确认PowerShell是否是安全的。本文介绍了PowerShell的安全性选项,除了默认值之外,我们可以设置PowerShell的执行策略。本文还介绍了如何通过组策略来集中控制PowerShell安全性设置。

  PowerShell是一种新的命令行外壳和脚本语言,用于进行系统管理和自动化。Windows PowerShell 建立在 .NET Framework 的基础上,可使 IT 专业人员和开发人员控制和自动完成 Windows 和应用程序的管理。

  Windows PowerShell并不只是常规的脚本语言。他有内置的安全功能,以及一些额外的安全性选项,您可以根据实际情况进行设置。

  1、Windows PowerShell默认安全性

  在PowerShell界面下,我们刚开始使用时,可能只是运行一些简单的命令。这与安全是不相关的,只是你必须在PowerShell界面下,然后才可以做这些事情。这本身就是安全。

  PowerShell中一些默认的安全性设置,可以确保任何恶意的企图能被拦截。

  1.1 PowerShell不会运行不带路径的脚本

  第一个默认的安全性措施:PowerShell将不会运行当前文件夹中的脚本。这样恶意脚本试图拦截cmdlets和命令名时将会失败。

  例如,如果您想运行C:\文件夹中名为Example.ps1的脚本,命令行中您需要包含脚本的完整路径,即使当前目录就是在C:\Scripts文件夹中。

  当您尝试运行不带路径的Example.ps1脚本时,将提示出错信息,如图所示。

图1:脚本必须包括路径的脚本,才能被成功执行

  当你运行包括绝对路径的该脚本时,执行结果如图2所示。

图2:脚本中包含了绝对路径时,该脚本运行顺利

  1.2 所有PowerShell脚本必须实时交互才能运行

  另一个默认设置:所有的脚本必须运行交互。这种安全措施,以确保Powershell脚本文件不会执行的带病毒的脚本。这同时也意味着你必须在PowerShell界面前,实时运行脚本。

  这种默认设置与PowerShell中的ExecutionPolicy执行策略相关联。该ExecutionPolicy的默认执行策略时设置为Restricted,如图3所示。

  图3:ExecutionPolicy的默认执行策略是Restricted,以限制执行Powershell脚本文件

  2、对PowerShell安全策略选项进行自定义设置

  PowerShell中默认的ExecutionPolicy执行策略是非常安全的。它不容许运行任何来源的任何脚本。因此,您创建的脚本,是无法运行的;从Internet上下载的脚本将无法运行;甚至经过信任发布者签名的脚本也无法运行。

  因此,在运行脚本之前,我们需要重新设置ExecutionPolicy执行策略。

  2.1 设置 ExecutionPolicy 执行策略选项

  有四个层次的ExecutionPolicy执行策略`选项 。这四个层面为您提供很大保障,确保了哪些脚本可以运行,哪些需要与其他脚本相关联才能运行。

  这四个层次的要求包括:

  ●Restricted:这是PowerShell的默认配置。此项设置意味着没有脚本可以运行,而不论该脚本是否经过签字认证。唯一可以在PowerShell中运行的是单独的命令。

  ●AllSigned:此项设置允许PowerShell运行脚本。所有的配置文件和脚本必须通过信任的出版商签名(trusted publisher), 这里所指的脚本页包括你在本地计算机上创建的脚本。但如果恶意脚本经过了签名的话,在PowerShell中也照样能够执行。

  ●RemoteSigned:此项设置允许脚本运行,但要求所有从互联网上下载的脚本必须通过信任的出版商签名(trusted publisher)。运行本地计算机中的脚本运行不需要签署。脚本运行前,将不会有提示信息。对于签过名的恶意脚本,此安全策略仍然无法防范。

  ●Unrestricted:不建议设置为此项执行策略!这允许未签名的脚本运行,包括所有从网上下载的脚本和配置文件,包括通过Outlook和Messenger下载下来的文件。在执行前你都会被提示是否执行.,风险在于是运行未经签字、无法确认安全性的脚本将被允许执行。

  要设置这些执行策略的选项,只需键入set-executionpolicy ,如图4所示。

图4:使用set-executionpolicy设置执行策略选项

  2.2 使用组策略来集中控制PowerShell安全性设置

  PowerShell功能非常强大,但如果工作环境中的电脑上无法运行脚本的话,它也是有局限性。首先,你必须在每台电脑上安装PowerShell运行环境。PowerShell运行环境的部署,只需要安装一个exe应用程序,非常容易安装。

  您可以使用ZAP文件,使用组策略来推动它,或者您可以采取集中式方式来安装应用程序。请记住, PowerShell目前已被作为操作系统的一个升级包,因此Windows更新也可以触发安装操作。

  当您安装了PowerShell运行环境之后,建议你调整执行策略,允许运行脚本。由于随着ExecutionPolicy默认值为Restricted,你需要配置每一台计算机,才能运行脚本,如果你打算手工进行设置的话,这可能需要花上几天时间。

  您也可以使用组策略来替您完成这个设置。当然,你需要建立自己的管理模板(ADM文件) 实现这个功能,或者从微软站点上下载名为admFiles_PowerShell.msi的ADM模板(http://www.microsoft.com/downloads/details.aspx?FamilyID=2917a564-dbbc-4da7-82c8-fe08b3ef4e6d&DisplayLang=en#QuickInfoContainer)。建议采用后者的方式,下载ADM模板。

  下载完成以后,你需要安装admFiles_PowerShell.msi。安装完成后, 在C:\program files\Microsoft Group Policy文件夹中就有了.ADM文件。如果没有别的,这个.ADM模板中的设置就已经非常安全!PowerShellExtensionPolicy.ADM这个文件需要导入到组策略对象编辑器。导入后,在组策略对象中将有两个新的节点:一个是Computer Configuration\Administrative Templates\Windows Components\Windows PowerShell,另一个是User Configuration\Administrative Templates\Windows Components\Windows PowerShell,如图5所示:

图5 :PowerShell ADM模板执行后,在GPO中新增加了两个设置项

  当你去设制这个策略时,你会看到三个设置选项,如图6所示:

图6 : 在GPO中设置PowerShell的ExecutionPolicy选项

  3、小结

  PowerShell是配合Windows Server 2008的发布,在2008年初推出的新功能。PowerShell推出后发展迅猛。所有关注PowerShell的人,都希望PowerShell提供内置的安全性设置。现在看来,PowerShell在这点上确实不负众望:PowerShell提供了默认的安全性设置,脚本被设置为限制执行的策略。即使你用记事本创建了一个.PS1文件,该脚本是安全性很好。

  即使你可以进入PowerShell界面,也必须输入脚本的路径,。

  除了默认值之外,我们可以设置PowerShell的执行策略,通过组策略集中控制PowerShell,提供了PowerShell的安全。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章