当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 安全和 PowerShell:处理脚本

作者:精品下载站 日期:2024-12-14 08:08:25 浏览:11 分类:玩电脑

安全和 PowerShell:处理脚本


[玩转系统] 安全和 PowerShell:处理脚本

IT 安全是企业真正关心的问题之一。正如越来越多的基础设施攻击所表明的那样,这是正确的。控制许多任务的脚本也是常见的攻击目标。但是如何提高 PowerShell 环境中的安全性呢?下面的文章展示了一些方面的解决方案。

PowerShell 提供什么

PowerShell已经包含一些“标准”功能来提高安全性并防止攻击者恶意攻击,例如执行策略、日志记录和监控功能以及数字签名。他们是一个好的开始。

执行政策

对于 PowerShell,安全性从执行策略开始。执行策略指定 PowerShell 执行脚本必须创建的条件。在这里您可以定义不同的级别,例如本地脚本可以不签名运行,而下载的脚本必须签名。就其本身而言,此功能对于防止意外执行脚本很有用。然而,黑客对此并不以为然。

提示:如果您使用执行策略,请通过组策略控制它们。它们始终位于本地权限之上,因此在对抗不需要的执行方面更加强大。

使用“Get-ExecutionPolicy -list”检查设置的策略。如果设置为 RemoteSigned,则意味着始终执行本地脚本,仅下载带有签名的脚本。如果脚本本身现在简单地设置为“解锁”并在本地可用,那么这个障碍就已经被克服了。

记录和监控

PowerShell 中还包含日志记录和监控。您可以在此处确保脚本的执行可通过 Windows 事件日志进行跟踪。但是,您还应该通过组策略来执行此操作,因为只能通过集中化来实现可追溯性。

电子签名

我们已经在执行指南中提到了数字签名,并发现它非常重要。它回答了两个问题:谁创建了脚本(身份验证)?签名后脚本是否再次更改(完整性)?当然最好从官方提供商处购买证书,因为它们被认为特别安全。您还可以使用 New-SelfSignedCertificate 创建自己的证书并在脚本中使用它们。

每次更改脚本后,都必须重新签名。

受限语言

PowerShell 可以在不同的语言模式下使用。其中之一是受限语言。它最近已得到广泛实施,但如果您想限制 PowerShell 语言和命令的功能,则需要集中化。

这是因为每个新会话的设置都会重置为 FullLanguage。因此,只有通过 Applocker 或 Device Guard 等解决方案才能实现集中化。

证书

运行 PowerShell 脚本所需的凭据是一个令人兴奋的话题,同时也是最大的挑战之一。

PowerShell 凭据由用户名和密码组成,并且在脚本中没有丢失任何内容。用户手动输入凭据是安全的,但当然会阻止脚本的自动执行。解决此问题的一种方法是对密码信息进行加密,然后由 PowerShell 脚本在运行时读取该密码信息。但是,这只适用于执行加密的计算机。如果将密码文件复制到另一台计算机,则该文件将无法再在该计算机上使用。使用这种方法,甚至无法实现安全委托。

JEA——足够的管理

JEA 的目标是真正只向用户提供执行某些操作所需的权限。此处的一个示例是在 Active Directory (AD) 中创建用户,而无需该用户在 AD 中还拥有其他授权。

JEA 为 PowerShell 提供基于角色的访问控制 (RBAC) 平台。由于此处使用白名单,因此必须了解用户应该能够执行的所有操作。因此,相应指南的维护相当复杂,并且仍然需要用户具备 PowerShell 知识。

ScriptRunner 如何显着提高安全性

因此,PowerShell 配备了一些“基本功能”,以便能够安全地处理脚本。另一方面,PowerShell在实际使用过程中出现的一些问题也没有得到解决。 ScriptRunner 的高级安全功能如下所述。

脚本集中化

借助 ScriptRunner,所有 PowerShell 脚本都可以集中存储和结构化。这为团队开发和使用创造了先决条件。

此外,还确保所有参与者始终使用当前的脚本版本。对脚本的访问是通过权限控制来控制的。使用 PowerShell ISE 的 ScriptRunner 插件,可以在中央存储库中编辑脚本并签入和签出。还可以与 Git、TFS 和其他源代码管理系统集成。

凭证的安全管理

运行大多数 PowerShell 脚本都需要凭据。借助 ScriptRunner,可以集中、安全地存储这些信息。 ScriptRunner 服务器上的 Windows 凭据存储可用于此目的,并且支持来自 CyberArk、Pleasant 和 Thycotic 的密码服务器连接器。这允许您管理中央存储库中的所有凭据,从而大大简化管理,特别是在使用多个 ScriptRunner 实例时。

用户没有特权权限

ScriptRunner 控制从中央服务帐户运行 PowerShell 脚本的权限。这意味着对于每个所谓的目标(Exchange、Active Directory、Azure、Office365、VMware 等),都会使用适当的服务帐户。

因此,应该能够启动脚本的用户(例如来自帮助台团队的用户)不需要对相应目标的特殊权限。

这种分离允许将任务安全地委派给仅是标准域用户的用户。

安全执行和中央监控

ScriptRunner 提供了安全执行 PowerShell 脚本的所有可能性:从本地执行到 PowerShell 远程处理以及特殊执行模式,例如: JEA,有很多选择。执行本身可以通过三种方式实现:

  1. 用户手动执行
  2. 时间控制执行
  3. 由监控或工作流系统等第三方系统触发自动执行

所有活动都可以通过中央仪表板进行跟踪。重要信息还可通过 Windows 事件日志和 Windows 性能计数器获取。

安全授权

到目前为止描述的功能允许员工安全、轻松地委派个人任务。安全,因为用户不需要任何特殊权限即可执行任务。很简单,因为员工不需要任何 PowerShell 专业知识,并且可以通过方便的 Web 界面进行操作。所需的输入掩码是从相应的 PowerShell 脚本动态创建的。这意味着根本不需要开发用户界面。

其结果是为整个 PowerShell 生命周期提供了一个安全的解决方案,从联合脚本开发到服务台团队和最终用户的使用。

[玩转系统] 安全和 PowerShell:处理脚本

相关内容

  • PowerShell 脚本如何在 ScriptRunner 中工作 |脚本运行器
  • 网络研讨会:PowerShell 安全

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯