如何恢复受 CrowdStrike Falcon 代理影响的 AWS 资源?
我无法连接到安装了 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、标签或资源组。
注意:
使用实例 ID
完成以下步骤:
- 在 Systems Manager 控制台上打开 AWSSupport-StartEC2RescueWorkflow 运行手册。
- 在执行自动化运行手册下,选择速率控制。
- 在目标部分中,为参数选择实例 ID,然后选择目标的参数值。
- 对于输入参数,选择要恢复的实例。
- 对于速率控制,选择并发选项,确定允许同时运行自动化的资源数量。有关更多信息,请参阅大规模控制自动化。
- 选择执行。
使用标签
完成以下步骤:
- 创建一个新的唯一标签,仅用于要恢复的实例。所有带有此标签的实例都会成为恢复操作的目标,可能会导致数据意外丢失,或影响实例可用性。有关更多信息,请参阅标记 Amazon EC2 资源和 Using Tag Editor。
- 要验证是否只有受影响的实例共享新标签,请使用 AWS 资源探索器或标签编辑器。
- 在 Systems Manager 控制台上打开 AWSSupport-StartEC2RescueWorkflow 运行手册。
- 在执行自动化运行手册下,选择速率控制。
- 在目标部分中,为参数选择实例 ID,然后选择目标的参数值。
- 对于标签,选择编辑,输入标签键和值,然后选择保存。
- 对于输入参数,选择要恢复的实例。
- 对于速率控制,选择并发选项,确定允许同时运行自动化的资源数量。有关更多信息,请参阅大规模控制自动化。
- 选择执行。
使用资源组
完成以下步骤:
- 创建一个仅用于要恢复的实例的新资源组。该资源组中的所有实例都会成为恢复操作的目标,可能会导致数据意外丢失或影响实例可用性。有关更多信息,请参阅 Creating query-based groups in AWS Resource Groups。
- 要验证只有受影响的实例属于新资源组,请使用 AWS Resources Groups 控制台。
- 在 Systems Manager 控制台上打开 AWSSupport-StartEC2RescueWorkflow 运行手册。
- 在执行自动化运行手册下,选择速率控制。
- 在目标部分中,为参数选择实例 ID,然后选择目标的参数值。
- 对于资源组,选择新的资源组。
- 对于输入参数,选择要恢复的实例。
- 对于速率控制,选择并发选项,确定允许同时运行自动化的资源数量。有关更多信息,请参阅大规模控制自动化。
- 选择执行。
手动恢复您的实例
完成以下步骤:
- 为实例 EBS 根卷创建快照。
- 在同一可用区中使用快照创建新的 EBS 卷。
- 在同一个可用区启动一个新的 Windows 实例。
- 将新的 EBS 卷作为数据卷连接到新实例。
- 将 EC2Rescue for Windows Server 工具下载到辅助实例中。
- 右键单击 EC2Rescue.exe,然后选择以管理员身份运行。
选择 “我同意许可协议”。
在 “欢迎” ** 屏幕上,选择 “下一步” 。
在选择模式屏幕上,选择离线****实例**。
选择脱机磁盘,然后选择 “**下一步” **。出现提示时,选择 “**是”,**然后选择 “**确定” **。
保持 EC2 Rescue 运行。
**注意:**如果您的原始实例使用 BitLocker 来加密 EBS 根卷,请按照屏幕提示输入您的密码或 BitLocker 恢复密钥。或者,您可以使用命令行命令 manage-bde unlock。有关更多信息,请参阅微软网站上的 manage-bde unlock。解锁驱动器后,重复步骤 6。 - 找到附加卷上的 X:\Windows\System32\drivers\CrowdStrike\ 文件夹,然后删除 C-00000291*.sys。
**注意:**在此示例中,X: 是分配给受影响实例的辅助 EBS 卷的驱动器号。在您的环境中,它可能是一个不同的字母。 - 返回 EC2 Rescue。
选择 “诊断和救援”,然后选择 “下一步” 。
将所有选项保留为默认值。
选择下一步 (Next),然后再次选择下一步 (Next)。
出现提示时,选择 “救援”,选择 “确定”,然后选择 “下一步” 。
选择完成。
在出现的弹出窗口中,选择 “修复磁盘签名”,然后选择 “**确定” **。
如果 “修复磁盘签名” 显示为灰色,则选择 “**确定” **。 - 将 EBS 卷与实例分离。
- 创建分离的 EBS 卷的快照。
- 选择与受影响实例相同的卷类型(例如 gp2 或 gp3),然后根据快照创建亚马逊系统映像 (AMI) 。
- 替换原始 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-StartEC2RescueWorkflow 的 Required 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。确保捕获了无法访问的实例的屏幕截图。
相关信息
相关内容
- 已提问 3 个月前lg...
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前