如何恢复受 CrowdStrike Falcon 代理影响的 AWS 资源?

3 分钟阅读
1

我无法连接到安装了 CrowdStrike Falcon 代理的 AWS 资源。

简短描述

2024 年 7 月 19 日凌晨 4 点 9 分 (UTC 时间),CrowdStrike Falcon 代理(csagent.sys)的更新导致基于 Windows 的设备出现计划外停止错误或蓝屏。受影响的设备包括 Amazon Elastic Compute Cloud(Amazon EC2)实例和 Amazon WorkSpaces 个人虚拟桌面。这个问题只影响安装了 CrowdStrike 的 Windows Amazon EC2 实例和个人 WorkSpaces。

有关更多信息,请参阅 REMEDIATION AND GUIDANCE HUB: FALCON CONTENT UPDATE FOR WINDOWS HOSTS(在 CrowdStrike 网站上)。

通常,重启您的实例或 WorkSpace 可以让 CrowdStrike Falcon 代理成功更新。

**注意:**如果您的实例使用实例存储卷,则当实例停止、休眠或终止时,存储在这些卷上的数据不会保留。当实例停止、休眠或终止时,实例存储卷将以加密方式擦除。有关更多信息,请参阅 Amazon EC2 instance store temporary block storage for Amazon EC2 instances

解决方法

如果重启无法将实例恢复到正常状态,则使用 AWS Systems Manager Automation 运行手册来恢复您的实例。或者,手动恢复您的实例。

如果您选择使用运行手册,则请先执行以下操作:

  • 如果您的 Amazon Elastic Block Store(Amazon EBS)根卷已加密,请确保您的账户中存在加密密钥。并且,您必须拥有使用它的权限。
  • AWSSupport-StartEC2RescueWorkflow 运行手册会停止您的实例。如果您的实例使用实例存储卷,则使用手动恢复方法以避免数据丢失。
  • 在启动 AWSSupport-StartEC2RescueWorkflow 运行手册之前,请确保您的 AWS Identity and Access Management(IAM)用户或角色具有所需的权限。有关更多信息,请参阅AWSSupport-StartEC2RescueWorkflow中的所需IAM权限部分。您还必须向 IAM 角色添加 kms:CreateGrant 权限。

识别受损实例

**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请参阅 Troubleshoot AWS CLI errors。此外,确保您使用的是最新版本的 AWS CLI

要识别失败的实例,请运行 AWS CLI 命令 describe-instance-status

aws ec2 describe-instance-status --filters Name=instance-status.status,Values=impaired --query "InstanceStatuses[*].InstanceId" --region your-region

**注意:**请将 your-region 替换为您的 AWS 区域。

使用 AWS Systems Manager Automation 运行手册恢复单个 EC2 实例

要使用 AWSSupport-StartEC2RescueWorkflow 自动恢复,在 Systems Manager 控制台上打开运行手册,并选择您需要恢复的区域和实例。如果您的 EBS 根卷已加密,那么请将 AllowEncryptedVolume 设置为 True

此运行手册在虚拟私有云(VPC)中启动临时 EC2 实例(辅助实例)。辅助实例会自动与 VPC 的默认安全组相关联。该实例必须允许与 Amazon Simple Storage Service(Amazon S3)和 Systems Manager 端点进行出站 HTTPS(端口 TCP 443)通信。

您必须在以下子网之一中启动实例,以便该实例可以访问所需的 AWS 服务以完成工作流程任务:

  • AssociatePublicIpAddress 参数设置为 True 的公有子网。
  • 可通过 NAT 访问互联网的私有子网。

此辅助实例挂载所选实例的根卷,然后运行以下命令来删除受影响的文件:

get-childitem -path "$env:EC2RESCUE_OFFLINE_DRIVE\Windows\System32\drivers\CrowdStrike\" -Include C-00000291*.sys -Recurse | foreach { $_.Delete()}

要验证前面命令中的 Base64 OfflineScript 负载的内容,请运行以下命令:

PS C:\Windows\system32> [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("REPLACE_WITH_BASE64_HERE"))

使用 AWS Systems Manager Automation 运行手册恢复多个 EC2 实例

要在多个 EC2 实例上使用运行手册,请使用实例 ID、标签或资源组

注意:

  • 运行手册为每个选定实例启动一个辅助实例。
  • 确保您在所选子网中有足够的 IP 地址供实例使用。
  • 确保您有足够的实例配额EBS 卷配额
  • 自动化运行手册完成所需的时间取决于所选的并发量。

使用实例 ID

完成以下步骤:

  1. Systems Manager 控制台上打开 AWSSupport-StartEC2RescueWorkflow 运行手册。
  2. 执行自动化运行手册下,选择速率控制
  3. 目标部分中,为参数选择实例 ID,然后选择目标参数值
  4. 对于输入参数,选择要恢复的实例。
  5. 对于速率控制,选择并发选项,确定允许同时运行自动化的资源数量。有关更多信息,请参阅大规模控制自动化
  6. 选择执行

使用标签

完成以下步骤:

  1. 创建一个新的唯一标签,仅用于要恢复的实例。所有带有此标签的实例都会成为恢复操作的目标,可能会导致数据意外丢失,或影响实例可用性。有关更多信息,请参阅标记 Amazon EC2 资源Using Tag Editor
  2. 要验证是否只有受影响的实例共享新标签,请使用 AWS 资源探索器标签编辑器
  3. Systems Manager 控制台上打开 AWSSupport-StartEC2RescueWorkflow 运行手册。
  4. 执行自动化运行手册下,选择速率控制
  5. 目标部分中,为参数选择实例 ID,然后选择目标参数值
  6. 对于标签,选择编辑,输入标签,然后选择保存
  7. 对于输入参数,选择要恢复的实例。
  8. 对于速率控制,选择并发选项,确定允许同时运行自动化的资源数量。有关更多信息,请参阅大规模控制自动化
  9. 选择执行

使用资源组

完成以下步骤:

  1. 创建一个仅用于要恢复的实例的新资源组。该资源组中的所有实例都会成为恢复操作的目标,可能会导致数据意外丢失或影响实例可用性。有关更多信息,请参阅 Creating query-based groups in AWS Resource Groups
  2. 要验证只有受影响的实例属于新资源组,请使用 AWS Resources Groups 控制台
  3. Systems Manager 控制台上打开 AWSSupport-StartEC2RescueWorkflow 运行手册。
  4. 执行自动化运行手册下,选择速率控制
  5. 目标部分中,为参数选择实例 ID,然后选择目标参数值
  6. 对于资源组,选择新的资源组。
  7. 对于输入参数,选择要恢复的实例。
  8. 对于速率控制,选择并发选项,确定允许同时运行自动化的资源数量。有关更多信息,请参阅大规模控制自动化
  9. 选择执行

手动恢复您的实例

完成以下步骤:

  1. 为实例 EBS 根卷创建快照
  2. 在同一可用区中使用快照创建新的 EBS 卷
  3. 在同一个可用区启动一个新的 Windows 实例
  4. 将新的 EBS 卷作为数据卷连接到新实例。
  5. 将 EC2Rescue for Windows Server 工具下载到辅助实例中。
  6. 右键单击 EC2Rescue.exe,然后选择以管理员身份运行
    选择 “我同意许可协议”。
    在 “欢迎” ** 屏幕上,选择 “下一步”
    选择模式
    屏幕上,选择
    离线****实例**。
    选择脱机磁盘,然后选择 “**下一步” **。出现提示时,选择 “**是”,**然后选择 “**确定” **。
    保持 EC2 Rescue 运行。
    **注意:**如果您的原始实例使用 BitLocker 来加密 EBS 根卷,请按照屏幕提示输入您的密码或 BitLocker 恢复密钥。或者,您可以使用命令行命令 manage-bde unlock。有关更多信息,请参阅微软网站上的 manage-bde unlock。解锁驱动器后,重复步骤 6。
  7. 找到附加卷上的 X:\Windows\System32\drivers\CrowdStrike\ 文件夹,然后删除 C-00000291*.sys
    **注意:**在此示例中,X: 是分配给受影响实例的辅助 EBS 卷的驱动器号。在您的环境中,它可能是一个不同的字母。
  8. 返回 EC2 Rescue。
    选择 “诊断和救援”,然后选择 “下一步”
    将所有选项保留为默认值。
    选择
    下一步 (Next)
    ,然后再次选择下一步 (Next)
    出现提示时,选择 “救援”,选择 “确定”,然后选择 “下一步”
    选择
    完成

    在出现的弹出窗口中,选择 “修复磁盘签名”,然后选择 “**确定” **。
    如果 “修复磁盘签名” 显示为灰色,则选择 “**确定” **。
  9.   将 EBS 卷与实例分离
  10. 创建分离的 EBS 卷的快照。
  11. 选择与受影响实例相同的卷类型(例如 gp2 或 gp3),然后根据快照创建亚马逊系统映像 (AMI)
  12. 替换原始 EC2 实例上的根卷并指定 AMI。

Amazon WorkSpaces

如果多次重启都无法使 WorkSpace 恢复到正常状态,则可以将 WorkSpace 恢复到以前创建的快照。如果 WorkSpace 恢复操作并未将其恢复到正常状态,则可以重建 WorkSpace

故障排除

如果前面的步骤无法解决 EC2 实例的连接问题,请按照以下故障排除步骤进行恢复。

Systems Manager Automation 运行手册

**问题:**辅助实例无法连接到 AWS 服务端点。此问题可能导致 waitForEc2RescueInstanceToBeManaged 自动化工作流程步骤失败。
**解决方案:**确认默认安全组允许出站流量(TCP 端口 443)到达 Systems Manager 和 S3 端点。此外,请确保所选子网可以连接到这些端点。要使用自定义安全组,请使用您的安全组 ID 替换 HelperInstanceSecurityGroupId 参数值。如果您选择公有子网,请确保将 AssociatePublicIpAddress 参数设置为 True。您也可以将参数 SubnetId 设置为 CreateNewVPC,以便自动化创建具有所需连接的新 VPC。

**问题:**受影响的实例无法停止,因为停止保护已开启
解决方案:关闭受影响实例的停止保护,然后重新运行自动化。
**注意:**如果您的实例使用实例存储卷,则当实例停止时,存储在这些卷上的数据不会保留。

**问题:**辅助实例无法启动。
解决方案: 为 EC2Rescue 实例选择的实例类型可能在辅助实例子网的可用区中无法使用。请使用辅助实例所在可用区中受支持的实例类型。

**问题:**当自动化工作流程验证 AWS CloudFormation 堆栈创建是否已完成时,它会失败并出现错误:“Stack AWSSupport-EC2Rescue-{UUID} entered unexpected state: DELETE_IN_PROGRESS”。
**解决方案:**要确定导致堆栈失败的原因,请获取 UUID ID 并使用 CloudFormation 控制台。如果您没有创建堆栈资源的权限,则可能会发生堆栈失败。有关更多信息,请参阅 AWSSupport-StartEC2RescueWorkflowRequired IAM permissions 部分,以及如何使用 IAM 策略排查“访问被拒绝”或“未经授权的操作”错误?

**问题:**由于 EBS 卷经过加密,该运行手册在 assertInstanceRootVolumeIsNotEncrypted 自动化工作流程步骤中失败。
**解决方案:**如果卷使用 EBS 加密,则将 AllowEncryptedVolume 参数设置为 True

**问题:**默认 VPC 已被删除。
**解决方案:**将 SubnetId 参数设置为 CreateNewVPC 以创建一个允许实例成功恢复的新 VPC。

**问题:**detachInstanceRootVolume 自动化工作流程步骤失败,并显示错误消息:“error occurred (IncorrectState) when calling the DetachVolume operation: Unable to detach root volume”。 
解决方案:运行自动化时,将实例保持在已停止状态。

手动恢复实例

**问题:**该实例无法启动,出现错误: “The application or operating system couldn't be loaded because a registered file is missing or contains errors”。
解决方案:如果您没有选择修复磁盘签名,则可能会出现磁盘签名冲突。
要解决此问题,请按照手动恢复步骤中的步骤 8 进行操作。如果您在没有 EC2 Rescue 的情况下恢复了实例,请参阅 Windows 实例的常见问题

**注意:**如果前面的故障排除步骤无法解决与 EC2 实例的连接问题,请联系 AWS Support。确保捕获了无法访问的实例的屏幕截图

相关信息

在无法访问的实例上运行 EC2Rescue 工具

AWS 官方
AWS 官方已更新 2 个月前