审核 SSH 访问的最佳实践


本文档介绍了对通过 SSH 访问 Linux 虚拟机 (VM) 实例进行审核的最佳实践。

借助 Cloud Audit Logs,您可以分析过去的活动,在调查影响 Google Cloud 资源的可疑活动时,它可以成为重要的信息来源。

以下部分包含最佳实践,可帮助您保留不可否的审核跟踪记录:

本文档重点介绍特定于 Google Cloud 的实践或在 Google Cloud 上使用 SSH 时特别重要的实践。本文档未涵盖特定 SSH 客户端或服务器实现的最佳实践。

为 IAP 启用数据访问日志

如需确保每当用户尝试建立 SSH 连接时,IAP 都会向 Cloud Audit Logging 添加条目,请为 Cloud Identity-Aware Proxy API 启用数据访问日志。数据访问日志默认处于停用状态。除非您担心日志数据量,否则请为包含虚拟机实例的所有项目启用数据访问日志。

监控与 SSH 使用相关的审核日志条目

SSH 使用可能会影响虚拟机及其工作负载的安全性,因此为成功的连接尝试和失败的访问尝试保留审核跟踪记录非常重要。在生产环境中,这一点尤为重要,因为SSH 使用在这类环境中应被视为敏感操作。

如需跟踪 SSH 访问并可以发现可疑行为,请务必监控与 SSH 相关的日志条目,包括:

服务 方法 说明
IAP AuthorizeUser 表示通过 IAP TCP 转发进行的连接尝试。 日志条目包含有关用户设备、已满足的访问权限级别和不满足的访问权限级别的详细信息。
OS Login google.cloud.oslogin.v1.OsLoginService.CheckPolicy 表示登录尝试
OS Login google.cloud.oslogin.OsLoginService.v1.StartSession 表示 OS Login 2FA 验证的开始
OS Login google.cloud.oslogin.OsLoginService.v1.ContinueSession 表示 OS Login 2FA 验证的完成
Compute Engine v1.compute.projects.setCommonInstanceMetadata 如果字段 projectMetadataDelta 包含“ssh-keys”的相应条目,则此日志条目表示在项目元数据中添加、移除或修改了 SSH 密钥。
Compute Engine v1.compute.instances.setMetadata 如果字段 projectMetadataDelta 包含“ssh-keys”或“sshKeys”的相应条目,则此日志条目表示在实例元数据中添加、移除或修改了 SSH 密钥。
Compute Engine google.ssh-serialport.v1.connect 表示对串行控制台的连接尝试
IAM beta.compute.instances.setIamPolicyv1.compute.instances.setIamPolicy 表示对虚拟机实例的 IAM 政策的更改。IAM 政策更改可能会影响用户修改实例元数据的能力。
IAM SetIamPolicy 表示对项目的 IAM 政策的更改。IAM 政策更改可能会影响用户修改项目元数据和项目的数据访问审核日志配置的能力。

所有审核日志记录都包含 principalEmail 字段,用于标识发起活动的主账号。

如需全面了解虚拟机上的活动,请将虚拟机配置为将 /var/log/messages 和 SSH 服务器日志导出到 Cloud Logging,例如使用 Ops Agent

请注意,根据您使用的 Linux 发行版,SSH 服务器日志可能会写入不同的日志文件(通常是 /var/log/auth.log/var/log/secure),Ops Agent 使用的默认配置未涵盖这些日志文件。