快速入门:将 SSH 状态控制 应用于测试计算机

在以下步骤中,将使用 Azure Policy 将 SSH 状态控制设置部署到测试 Linux VM。

有关背景和概念性参考,请参阅 什么是 SSH 状态控制?

有关更高级的演练,请参阅 使用 SSH 状态控制管理 sshd 设置

如果没有 Azure 帐户,可以 创建免费试用版

谨慎

  • 本快速入门演示如何应用适用于新的可释放测试计算机的限制性 sshd 配置。 如果要将此配置应用于其他计算机,可以自行锁定。尝试安全控制(如 SSH 状态控制)时,请使用隔离的沙盒环境,这样即使策略分配中的错误也不会重新配置意外的计算机。

先决条件

在尝试本文中的步骤之前,请确保已具备:

  1. 有权创建资源组、策略分配和虚拟机的 Azure 帐户。
  2. 与 Azure 交互的首选环境,例如:
    1. Azure Cloud Shell(建议)
      1. 注意:示例将使用 bash 模式。 读者可能会将示例适应其他 shell 环境,包括 PowerShell。
    2. 安装并登录 Azure CLI 自己的 shell 环境
    3. 在 Web 浏览器中 Azure 门户

检查是否已登录到测试环境

  1. 使用门户中的帐户信息查看当前上下文。

    屏幕截图,显示 Azure 门户中的帐户信息

创建资源组

此示例中 eastus 位置的选择并不重要。 可以使用任何可用的 Azure 位置。

通过门户 创建资源组的 屏幕截图

将策略分配给资源组

本快速入门使用内置策略定义 Configure SSH Posture Control on Linux machines应用审核和配置行为。

示例分配主要依赖于 SSH 状态控制默认值(例如端口 22,不允许根访问),且自定义受限(横幅文本)。

  1. 导航到策略,然后导航到定义
  2. 筛选列表以查找并选择 Configure SSH Posture Control on Linux machines
  3. 在策略定义页中,单击“分配”
  4. 在策略分配工作流中
    1. 选择新的空资源组(之前创建)作为范围。
    2. 可选:为此策略分配选择名称。 默认情况下,使用策略定义的名称。
    3. 可选:在“参数”选项卡上,重写默认值,例如“横幅”值。
    4. 注意:规则“端口”应配置为单个值,以确保审核和配置方案的适当功能和符合性。
    5. 完成策略分配的创建。

谨慎

无论是使用门户还是 CLI,在继续操作之前,检查刚刚创建的策略分配的范围。 如果作用域错误地设置为之前创建的新空资源组以外的任何内容,应立即更正该范围以避免将意外的计算机混为一谈。

创建测试 VM 并将其准备用于计算机配置

  1. 创建 Linux 虚拟机
  2. 添加系统分配的标识(如果尚不存在)
  3. 添加计算机配置扩展(在门户中标记为适用于 Linux 的 Azure 计算机配置)

提示

在本快速入门中,计算机配置(VM 具有托管标识和代理扩展)的先决条件是在创建 VM 期间直接解决的。 使用 Deploy prerequisites to enable Guest Configuration policies on virtual machines 内置策略计划,可以大规模满足这些先决条件。

在继续操作之前休息一下

现在会自动执行几个步骤。 每个步骤可能需要几分钟时间。 因此,请在 至少 15 分钟 等待,然后再继续。

观察结果

使用以下步骤可以看到:

  1. 有多少台计算机符合(或不合规)
    1. 在生产规模上特别有用,你可能拥有数千台计算机
  2. 哪些计算机符合(或不合规)
  3. 对于给定计算机,哪些单独的规则符合(或不合规)

可选:添加更多测试计算机以体验缩放

在本文中,策略已分配给最初为空的资源组,然后获取了一个 VM。 虽然这演示了系统端到端工作,但它不提供大规模操作的感觉。 例如,在策略分配符合性视图中,一台计算机的饼图可能会感到人为。

请考虑将更多测试计算机添加到资源组,无论是手动还是通过自动化。 这些可以是已启用 Azure VM 或已启用 Arc 的计算机。 当看到这些计算机符合性(甚至失败)时,可以更敏锐地大规模操作 SSH 态势控制。

可选:手动检查测试计算机以确认结果

开始使用 SSH 姿势控制等新功能时,手动检查带外结果可能很有价值。 这有助于建立信心和明确性。 例如,本文中的步骤应在测试 VM 上生成修改后的登录横幅配置。 可以通过尝试通过 SSH 连接到计算机来查看横幅或检查sshd_config文件来确认这一点。

清理资源

若要避免持续产生费用,请考虑删除本文中使用的资源组。 例如,Azure CLI 命令将 az group delete --name "sshdemo01"