防范加密货币挖矿攻击的最佳实践

Last reviewed 2023-10-20 UTC

加密货币挖矿(也称为“比特币挖矿”)是用来创建新的加密货币和验证交易的过程。如果获得您的环境访问权限的攻击者也可能利用您的资源执行自己的挖矿操作并导致您产生费用,则会发生加密货币攻击。

根据 2021 年 11 月的威胁情报报告,加密货币挖矿攻击是攻击者在破解您的 Google Cloud 环境后利用您的计算资源的最常用方式。该报告还表明,攻击者通常会在破解您的系统后的 22 秒内将加密货币挖矿软件下载到您的资源中。加密货币挖矿可能会快速增加费用,而加密货币挖矿攻击可能会导致费用远远超出您的预期。由于费用可能会快速增加,因此您必须采取防护、检测和缓解措施来保护您的组织。

本文档面向安全架构师和管理员。其中介绍了有助于保护 Google Cloud 资源免受加密货币挖矿攻击以及有助于在发生攻击时缓解影响的最佳做法。

识别威胁途径

如需确定您的组织是否遭受加密货币挖矿攻击,您必须识别应用于您的组织的威胁途径。

2021 年 11 月的威胁情报报告表明大多数攻击者利用了以下漏洞:

  • 用户账号密码安全系数低或无密码
  • Google Cloud API 身份验证弱或无
  • 第三方软件中的漏洞
  • Google Cloud 环境或您在 Google Cloud 上运行的第三方应用中的错误配置
  • 泄露的凭据,例如在公共 GitHub 代码库中发布的服务账号密钥

此外,您还可以订阅并查看以下文档,了解威胁途径列表:

在识别应用于您的威胁途径后,您可以使用本文档中其余的最佳做法来帮助解决这些威胁途径。

保护账号和账号凭据

攻击者可能会利用不受保护或管理不当的账号获得 Compute Engine 资源的访问权限。Google Cloud 包含可配置的不同选项,用于管理账号和群组。

限制对云环境的访问权限

下表介绍了可用于定义谁可以访问您的云环境的组织政策

组织政策限制条件 说明
网域限定共享 指定 Cloud Identity 或 Google Workspace 的哪些客户 ID 有效。
可在 Cloud IAM 中为工作负载身份联合配置的允许的 AWS 账号 在混合云环境中,定义哪些 AWS 账号可以使用工作负载身份联合。
为处理工作负载而允许的外部身份提供商 在混合云环境中,定义工作负载可以使用哪些身份提供商。

设置 MFA 或 2FA

Cloud Identity 支持使用各种方法执行多重身份验证 (MFA)。配置 MFA,尤其是对于您的特权账号。如需了解详情,请参阅对访问公司资源的用户统一执行多重身份验证

为了帮助防范可能导致加密货币挖矿攻击的钓鱼式攻击,请使用 Titan 安全密钥进行双重验证 (2FA)。

配置最小权限

最小权限可确保用户和服务仅拥有执行其特定任务所需的访问权限。最小权限会减慢攻击在整个组织中传播的能力,因为攻击者无法轻易提升他们的权限。

如需满足您的组织的需求,请使用 Identity and Access Management (IAM) 中的精细政策、角色和权限。此外,定期使用角色 RecommenderPolicy Analyzer 分析您的权限。角色 Recommender 使用机器学习来分析您的设置,并提供建议来帮助确保您的角色设置符合最小权限原则。Policy Analyzer 可让您查看哪些账号有权访问您的云资源。

监控账号

如果您使用群组来分配 IAM 政策,请监控群组日志以确保不会添加非公司账号。此外,根据 Cloud Identity 或 Google Workspace 网域限制可以访问资源的身份。如需了解详情,请参阅按网域限制身份

确保您的离职流程包括员工离职或变更职务时停用账号和重置权限的过程。如需了解详情,请参阅撤销对 Google Cloud 的访问权限

如需审核用户和群组,请参阅 Google Workspace 的审核日志

减少通过互联网对 Compute Engine 和 GKE 资源的曝光

减少互联网曝光意味着攻击者发现和利用漏洞的机会较少。本部分介绍了有助于保护 Compute Engine 虚拟机和 Google Kubernetes Engine (GKE) 集群免受互联网曝光的最佳做法。

限制外部流量

请勿为您的虚拟机分配外部 IP 地址。您可以使用禁止 VPC 外部 IPv6 使用组织政策限制条件拒绝所有虚拟机的外部 IP 地址。如需查看哪些虚拟机具有可公开访问的 IP 地址,请参阅查找实例的 IP 地址。如果您的架构需要虚拟机的外部 IP 地址,请使用为虚拟机实例定义允许的外部 IP 组织政策,以便可以定义允许拥有外部 IP 地址的实例名称列表。

将 GKE 节点仅限于内部 IP 地址。如需了解详情,请参阅创建专用集群

对项目中的所有资源限制互联网的入站流量和出站流量。如需了解详情,请参阅 VPC 防火墙规则分层防火墙政策

如需详细了解如何限制外部流量(例如,将 Cloud NAT 配置为允许没有外部 IP 地址的虚拟机的传出通信,或使用代理负载均衡器进行传入通信),请参阅安全地连接到虚拟机实例

使用服务边界

使用 VPC Service Controls 为 Compute Engine 和 GKE 资源创建服务边界。借助 VPC Service Controls,您可以控制边界外与 Compute Engine 资源的通信。实施服务边界后,边界内可进行自由的通信,阻止数据渗漏,并且可阻止边界外的服务通信。使用 IP 地址和用户身份等情境感知访问权限属性进一步控制从互联网对 Google Cloud 服务进行的访问。

设置零信任安全性

使用 Chrome Enterprise 进阶版设置零信任安全机制。Chrome Enterprise 进阶版提供威胁和数据保护以及访问权限控制。如果您的工作负载同时位于本地和 Google Cloud 中,请配置 Identity-Aware Proxy (IAP)。配置 TCP 转发以控制哪些人可以通过公共互联网访问 Google Cloud 资源上的 SSH 和 RDP 等管理服务。TCP 转发可防止这些服务在互联网上公开曝光。

确保 Compute Engine 和 GKE 资源的安全

加密货币挖矿攻击需要访问 Compute Engine 和 GKE 资源。本部分介绍有助于保护 Compute Engine 和 GKE 资源的最佳实践。

确保虚拟机映像的安全

通过配置安全强化型虚拟机来使用经过安全强化的精选虚拟机映像。安全强化型虚拟机的设计可以防止在启动周期内加载内核级恶意软件或 rootkit 等恶意代码。安全强化型虚拟机可提供启动安全性,监控完整性并使用虚拟可信平台模块 (vTPM)

要限制可以部署哪些映像,您可以实施可信映像政策定义可信映像项目组织政策定义了哪些项目可以存储映像和永久性磁盘。确保这些项目中仅存在可信映像和维护的映像。

在 GKE 中,确保您的容器使用基础映像,该映像会定期使用安全补丁进行更新。此外,请考虑使用 distroless 容器映像,其中仅包含您的应用及其运行时依赖项。

确保对虚拟机的 SSH 访问的安全

配置 OS Login 以管理对 Compute Engine 中运行的虚拟机的 SSH 访问。OS Login 通过将管理员的 Linux 用户账号与其 Google 身份相关联可简化 SSH 访问管理。OS Login 与 IAM 搭配使用,以便您可以定义管理员拥有的权限。

如需了解详情,请参阅保护虚拟机和容器

限制服务账号

服务账号是工作负载用于调用服务的 Google API 的 Google Cloud 账号。

不允许 Google Cloud 在创建资源时为其分配默认服务账号角色。如需了解详情,请参阅限制服务账号的使用

如果您的应用在 Google Cloud 外部运行,但需要访问 Google Cloud 资源,请勿使用服务账号密钥。相反,请实现工作负载身份联合来管理外部身份以及您与这些身份关联的权限。对于 GKE,您可以实现工作负载身份。如需了解详情,请参阅为您的使用场景选择合适的身份验证方法

如需了解帮助保护服务账号的更多最佳做法,请参阅使用服务账号的最佳实践

监控服务账号和服务账号密钥的使用情况

设置监控功能,以便跟踪服务账号和服务账号密钥在您的组织中的使用情况。如需深入了解重要的使用模式,请使用服务账号数据分析。例如,您可以使用服务账号数据分析来跟踪项目中权限的使用情况,并识别未使用的服务账号。如需查看上次使用服务账号和密钥来调用 Google API 执行身份验证活动的时间,请查看服务账号和服务账号密钥的近期使用情况

监控和修补虚拟机及容器

为了启动加密货币挖矿攻击,攻击者通常会利用错误配置和软件漏洞来获取 Compute Engine 和 GKE 资源的访问权限。

如需深入了解应用于您的环境的漏洞和错误配置,请使用 Security Health Analytics 扫描您的资源。特别是,如果您使用 Security Command Center 高级方案,请查看所有 Compute Engine 实例发现结果容器发现结果并设置流程以快速解决问题。

使用 Artifact Analysis 检查存储在 Artifact Registry 或 Container Registry 中的容器映像是否存在漏洞。

确保您的组织可以在补丁程序可用时立即部署补丁程序。您可以将 OS Patch Management 用于 Compute Engine。Google 会自动在 GKE 中修补漏洞。如需了解详情,请参阅确保映像和集群保持最新状态

使用 WAF 保护您的应用

攻击者可以通过在部署的应用中查找第 7 层漏洞来尝试访问您的网络。为了帮助缓解这些攻击,请配置 Google Cloud Armor,这是一个使用第 7 层过滤和安全政策的 Web 应用防火墙 (WAF)。Google Cloud Armor 为托管在 Google Cloud、本地或其他云端的应用和服务提供拒绝服务攻击 (DoS) 和 WAF 保护。

Google Cloud Armor 包含一个 WAF 规则,可帮助解决 Apache Log4j 漏洞。攻击者可以使用 Log4j 漏洞引入可以执行未授权加密货币挖矿的恶意软件。如需了解详情,请参阅 Google Cloud Armor WAF 规则以帮助处理 Apache Log4j 漏洞

确保供应链的安全

持续集成和持续交付 (CI/CD) 提供了一种快速向客户交付最新功能的机制。为了帮助防止加密货币挖矿攻击破坏您的流水线,请执行代码分析并监控您的流水线中是否存在恶意攻击。

实现 Binary Authorization 以确保在开发过程中所有映像都由可信授权机构进行签名,然后在部署映像时强制执行签名验证。

在 CI/CD 过程中尽早进行安全检查(有时称为“提前测试”)。如需了解详情,请参阅提前测试安全性:确保软件供应链的安全。如需了解如何使用 GKE 设置安全供应链,请参阅软件供应链安全

管理 Secret 和密钥

未经授权的加密货币挖矿攻击的关键攻击途径是不安全或泄露的密文。本部分介绍了可用于帮助保护密文和加密密钥的最佳做法。

定期轮替加密密钥

确保定期轮替所有加密密钥。如果 Cloud KMS 管理加密密钥,您可以自动轮替加密密钥

如果您使用具有 Google 拥有和 Google 管理的密钥的服务账号,则这些密钥也会自动轮替。

避免下载 Secret

公开的密钥是攻击者的密钥攻击途径。如果可能的话,请勿下载加密密钥或其他密文,包括服务账号密钥。如果必须下载密钥,请确保您的组织实施了密钥轮替流程。

如果您使用的是 GitHub 或其他公共代码库,则必须避免泄露凭据。使用密文扫描等工具,以便收到 GitHub 代码库中密文泄露的警告。如需停止向 GitHub 代码库提交密钥,请考虑使用 git-secrets 等工具。

使用 Secret ManagerHashicorp Vault 等密文管理解决方案来存储密文,定期进行轮替,并应用最小权限。

检测异常活动

如需监控异常活动,请配置 Google Cloud 和第三方监控工具并设置提醒。例如,根据 Compute Engine 审核日志记录信息GKE 审核日志中的管理员活动配置提醒。

此外,使用 Security Command Center 中的 Event Threat Detection 找出基于管理员活动、Google 群组更改和 IAM 权限更改的威胁。使用 Security Command Center 中的 Virtual Machine Threat Detection 来识别与 Compute Engine 虚拟机相关的威胁。如需详细了解 Security Command Center 服务,请参阅 Security Command Center 服务层级

为帮助检测基于网络的威胁(例如恶意软件),请配置 Cloud IDS

参与 Security Command Center 加密货币挖矿保护计划

如果您是 Security Command Center 高级方案客户并使用 Compute Engine,则可以参与 Security Command Center 加密货币挖矿保护计划。借助此计划,您可以支付与 Compute Engine 虚拟机环境中未检测到和未经授权的加密货币挖矿攻击相关的 Compute Engine 虚拟机费用。您必须实施加密货币挖矿检测最佳实践,其中一些与本页描述的其他最佳实践重叠。

更新突发事件响应方案

确保您的突发事件响应方案和 playbook 为您的组织如何应对加密货币挖矿攻击提供了规范性指导。例如,确保您的方案包含以下内容:

  • 如何通过 Cloud Customer Care 提交支持请求,并与您的 Google 技术支持客户经理 (TAM) 联系。如果您没有支持账号,请查看可用的支持方案并创建一个支持账号。
  • 如何区分合法的高性能计算 (HPC) 工作负载和加密货币挖矿攻击。例如,您可以标记哪些项目启用了 HPC,并针对意外增加费用的情况设置提醒。
  • 如何处理已遭破解的 Google Cloud 凭据
  • 如何隔离受感染的系统并从健康状况良好的备份恢复系统。
  • 您的组织中的哪些人必须收到通知以调查和应对攻击。
  • 您需要记录哪些信息来执行回顾性活动。
  • 如何验证您的补救措施是否有效地移除了挖矿活动并解决了导致攻击的初始漏洞。
  • 如何响应从 Cloud Customer Care 发送的提醒。如需了解详情,请参阅违反政策常见问题解答

如需了解详情,请参阅应对攻击并在遭受攻击后进行恢复

实施灾难恢复计划

如需为加密货币挖矿攻击做好准备,请完成业务连续性灾难恢复方案,创建突发事件响应 playbook,并执行桌面演练。

如果发生未经授权的加密货币挖矿,请确保您可以解决导致初始漏洞的威胁途径,并且可以从已知的良好状态重建环境。灾难恢复计划必须能够确定已知的良好状态,以使攻击者不能重复使用相同的漏洞来利用您的资源。

后续步骤