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

[玩转系统] PowerShell 安全功能

作者:精品下载站 日期:2024-12-14 02:59:13 浏览:14 分类:玩电脑

PowerShell 安全功能


PowerShell 具有多项旨在提高脚本环境安全性的功能。

执行政策

PowerShell 的执行策略是一项安全功能,用于控制 PowerShell 加载配置文件和运行脚本的条件。此功能有助于防止恶意脚本的执行。您可以使用组策略设置来设置计算机和用户的执行策略。执行策略仅适用于Windows平台。

有关详细信息,请参阅 about_Execution_Policies。

SecureString 类的使用

PowerShell 有多个支持使用 System.Security.SecureString 类的 cmdlet。而且,与任何 .NET 类一样,您可以在自己的脚本中使用 SecureString。但是,Microsoft 不建议使用 SecureString 进行新开发。 Microsoft 建议您避免使用密码并依靠其他方式进行身份验证,例如证书或 Windows 身份验证。

PowerShell 继续支持 SecureString 类以实现向后兼容性。使用 SecureString 仍然比使用纯文本字符串更安全。默认情况下,PowerShell 不会显示 SecureString 对象的未受保护值。但是,SecureString 可以轻松转换为纯文本字符串。有关使用 SecureString 的完整讨论,请参阅 System.Security.SecureString 类文档。

模块和脚本块日志记录

模块日志记录允许您为选定的 PowerShell 模块启用日志记录。此设置在计算机上的所有会话中均有效。指定模块的管道执行事件记录在事件查看器的 Windows PowerShell 日志中。

脚本块日志记录可以记录命令、脚本块、函数和脚本的处理 - 无论是交互调用还是通过自动化调用。此信息记录到 Microsoft-Windows-PowerShell/Operational 事件日志中。

有关更多信息,请参阅以下文章:

  • about_Group_Policy_Settings
  • about_Logging_Windows
  • about_Logging_非 Windows

AMSI 支持

Windows 反恶意软件扫描接口 (AMSI) 是一种 API,允许将应用程序操作传递到反恶意软件扫描程序(例如 Windows Defender),以扫描恶意负载。从 PowerShell 5.1 开始,在 Windows 10(及更高版本)上运行的 PowerShell 将所有脚本块传递给 AMSI。

PowerShell 7.3 扩展了发送到 AMSI 进行检查的数据。它现在包括 .NET 方法成员的所有调用。

有关 AMSI 的更多信息,请参阅 AMSI 如何提供帮助。

受限语言模式

ConstrainedLanguage 模式通过限制可在 PowerShell 会话中使用的 cmdlet 和 .NET 类型来保护您的系统。有关完整说明,请参阅 about_Language_Modes。

应用控制

Windows 10 包含两项技术:Windows Defender 应用程序控制 (WDAC) 和 AppLocker,可用于控制应用程序。它们允许您创建锁定体验,以帮助保护您的 PowerShell 环境。

有关 PowerShell 如何支持 AppLocker 和 WDAC 的详细信息,请参阅使用 Windows Defender 应用程序控制。

PowerShell 7.4 中的更改

在 Windows 上,当 PowerShell 在 Windows Defender 应用程序控制 (WDAC) 策略下运行时,它会根据定义的安全策略更改其行为。在 WDAC 策略下,PowerShell 在完整语言模式下运行策略允许的受信任脚本和模块。所有其他脚本和脚本块都是不受信任的,并且在约束语言模式下运行。当不受信任的脚本尝试执行不允许的操作时,PowerShell 会引发错误。很难知道为什么脚本无法在受限语言模式下正确运行。

PowerShell 7.4 现在支持审核模式下的 WDAC 策略。在审核模式下,PowerShell 在受限语言模式下运行不受信任的脚本,但会将消息记录到事件日志中,而不是引发错误。日志消息描述了策略处于强制模式时将应用哪些限制。

PowerShell 7.3 中的更改

  • PowerShell 7.3 现在支持通过 WDAC API 阻止或允许 PowerShell 脚本文件的功能。

PowerShell 7.2 中的更改

  • AppLocker 中有一个极端情况,您只有拒绝规则,并且约束模式不用于强制执行允许您绕过执行策略的策略。从 PowerShell 7.2 开始,进行了更改以确保 AppLocker 规则优先于 Set-ExecutionPolicy -ExecutionPolicy Bypass 命令。

  • PowerShell 7.2 现在不允许在锁定计算机上的 NoLanguage 模式 PowerShell 会话中使用 Add-Type cmdlet。

  • PowerShell 7.2 现在禁止脚本在 AppLocker 系统锁定条件下使用 COM 对象。内部使用 COM 或 DCOM 的 Cmdlet 不受影响。

安全服务标准

PowerShell 遵循 Microsoft Windows 安全服务标准。下表概述了满足维修标准和不满足维修标准的功能。

System Lockdown - with WDAC

安全功能

Constrained language mode - with WDAC

安全功能

System Lockdown - with AppLocker

纵深防御

Constrained language mode - with AppLocker

纵深防御

Execution Policy

纵深防御

软件物料清单 (SBOM)

从 PowerShell 7.2 开始,所有安装包都包含软件物料清单 (SBOM)。 SBOM 位于 $PSHOME/_manifest/spdx_2.2/manifest.spdx.json。 SBOM 的创建和发布是联邦政府网络安全现代化和增强软件供应链安全的第一步。

PowerShell 团队还为他们拥有但与 PowerShell 分开发布的模块生成 SBOM。 SBOM 将在该模块的下一版本中添加。对于模块,SBOM 安装在 _manifest/spdx_2.2/manifest.spdx.json 下的模块文件夹中。

有关此计划的更多信息,请参阅 Microsoft 的博客文章使用 SPDX 生成软件物料清单 (SBOM)。

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

取消回复欢迎 发表评论:

关灯