CrowdStrike Falcon エージェントの影響を受けた AWS リソースを復元する方法を教えてください。
CrowdStrike Falcon エージェントがインストールされている AWS リソースに接続できません。リソースを復元する方法について、トラブルシューティングしたいです。
簡単な説明
2024 年 7 月 19 日の 04:09 (UTC) に、CrowdStrike Falconエージェント (csagent.sys) のアップデートにより、Windows ベースのデバイスで予期しない停止エラーまたはブルースクリーンが引き起こされました。Amazon Elastic Compute Cloud (Amazon EC2) インスタンスと Amazon WorkSpaces Personal 仮想デスクトップなどのデバイスがその影響を受けました。Windows Amazon EC2 インスタンスおよび、CrowdStrike がインストールされている個人の Workspace のみがこの問題の影響を受けました。
詳細については、CrowdStrike のウェブサイトで「修復とガイダンスハブ: Channel File 291 インシデント」を参照してください。
多くの場合、インスタンスまたは WorkSpace を再起動すると、CrowdStrike Falcon エージェントは正常に更新されます。
注: インスタンスでインスタンスストアボリュームを使用している場合、そのインスタンスが停止または休止状態になるか、削除された場合、ボリュームに保存されているデータは保持されません。インスタンスが停止、休止状態になるか、削除されると、インスタンスストアボリュームは暗号化消去されます。詳細については、「EC2 インスタンスでの、インスタンスストア一時ブロックストレージ」を参照してください。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
再起動してもインスタンスが正常な状態に復元されない場合は、いずれかの AWS Systems Manager Automation ランブックを使用してインスタンスを復元してください。あるいは、手動でインスタンスを復元してください。
このランブックを使用するには、まず次の前提条件を確認してください。
- Amazon Elastic Block Store (Amazon EBS) のルートボリュームが暗号化されている場合は、その暗号化キーがアカウントに存在することを確認してください。使用するためのアクセス許可があることも確認してください。
- AWSSupport-StartEC2RescueWorkflow ランブックは、インスタンスを停止します。インスタンスがインスタンスストアボリュームを使用している場合は、手動での復元方法でデータ損失を回避してください。
- AWSSupport-StartEC2RescueWorkflow ランブックを開始する前に、AWS Identify and Access Management (IAM) のユーザーまたはロールに必要な権限を確保してください。詳細については、AWSSupport-StartEC2RescueWorkflow の「必要な IAM アクセス許可」セクションを参照してください。IAM ロールには、kms:CreateGrant アクセス許可も追加する必要があります。
障害が発生したインスタンスを特定する
障害が発生したインスタンスを特定するには、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 リージョンに置き換えてください。
Systems Manager Automation ランブックを使用して単一の EC2 インスタンスを復元する
AWS Support-Startec2RescueWorkflow を使用して復旧を自動化するには、Systems Manager コンソールでランブックを開きます。次に、復旧するリージョンとインスタンスを選択します。Amazon EBS ルートボリュームが暗号化されている場合は、AllowEncryptedVolume を True に設定します。
このランブックのワークフローでは、一時的な EC2 インスタンス (ヘルパーインスタンス) を仮想プライベートクラウド (VPC) で起動します。このワークフローでは、ヘルパーインスタンスが 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"))
Systems Manager Automation ランブックを使用して複数 EC2 インスタンスを復元する
ランブックを複数の EC2 インスタンスで使用するには、インスタンス ID、タグ、リソースグループのいずれかを使用します。
ランブックは、選択したインスタンスごとにヘルパーインスタンスを 1 つ起動します。インスタンスで選択したサブネットでは、IP アドレスを十分に確保してください。さらに、インスタンスクォータと EBS ボリュームクォータを十分に確保してください。
注: オートメーションランブックが完了するまでにかかる時間は、選択した並列処理量によって異なります。
インスタンス ID を使用する
次の手順を実行します。
- AWSSupport-StartEC2RescueWorkflow ランブックを Systems Manager コンソールで開きます。
- [オートメーションランブックの実行] で [レート制御] を選択します。
- [ターゲット] セクションの [パラメータ] で [InstanceID] を選択します。[ターゲット] で [パラメータ値] を選択します。
- [入力パラメータ] で復元するインスタンスを選択します。
- [レート制御] では、オートメーションを同時に実行できるリソースの数に応じて並列処理オプションを選択します。詳細については、「オートメーションを大規模に制御する」を参照してください。
- [実行] を選択します。
タグを使用する
次の手順を実行します。
- 復元するインスタンスにのみ使用する新しい一意のタグを作成します。このタグが付いたインスタンスはすべて復元のターゲットとなり、意図しないデータ損失を引き起こしたりインスタンスの可用性に影響したりする可能性があります。詳細については、「Amazon EC2 リソースにタグ付けする」および「タグエディタについて」を参照してください。
- 問題が発生したインスタンスのみが新しいタグを共有していることを確認するには、AWS Resource Explorer またはタグエディタを使用します。
- AWSSupport-StartEC2RescueWorkflow ランブックを Systems Manager コンソールで開きます。
- [オートメーションランブックの実行] で [レート制御] を選択します。
- [ターゲット] セクションの [パラメータ] で [InstanceID] を選択します。[ターゲット] で [パラメータ値] を選択します。
- [タグ] で [編集] を選択します。タグのキーと値を入力し、[保存] を選択します。
- [入力パラメータ] で復元するインスタンスを選択します。
- [レート制御] では、オートメーションを同時に実行できるリソースの数に応じて並列処理オプションを選択します。詳細については、「オートメーションを大規模に制御する」を参照してください。
- [実行] を選択します。
リソースグループを使用する
次の手順を実行します。
- 復元するインスタンスにのみ使用する新しいリソースグループを作成します。このリソースグループのインスタンスはすべて復元のターゲットとなり、意図しないデータ損失を引き起こしたりインスタンスの可用性に影響したりすることがあります。詳細については、AWS Resource Groups でのクエリベースのグループの作成」を参照してください。
- 影響を受けるインスタンスのみが新しいリソースグループに属していることを確認するには、AWS Resources Groups コンソールを使用します。
- AWSSupport-StartEC2RescueWorkflow ランブックを Systems Manager コンソールで開きます。
- [オートメーションランブックの実行] で [レート制御] を選択します。
- [ターゲット] セクションの [パラメータ] で [InstanceID] を選択します。[ターゲット] で [パラメータ値] を選択します。
- [リソースグループ] で新しいリソースグループを選択します。
- [入力パラメータ] で復元するインスタンスを選択します。
- [レート制御] では、オートメーションを同時に実行できるリソースの数に応じて並列処理オプションを選択します。詳細については、「オートメーションを大規模に制御する」を参照してください。
- [実行] を選択します。
手動でインスタンスを復元する
次の手順を実行します。
- インスタンスの EBS ルートボリュームのスナップショットを作成します。
- 同じアベイラビリティーゾーンのスナップショットから新しい EBS ボリュームを作成します。
- 同じアベイラビリティーゾーンで新しい Windows インスタンスを起動します。
- 新しいインスタンスに、新しい EBS ボリュームをデータボリュームとしてアタッチします。
- ヘルパーインスタンスに EC2Rescue for Windows Serverツールをダウンロードします。
- EC2Rescue.exe を右クリックし、[管理者として実行] を選択します。
ライセンス契約で [同意する] を選択します。
[ようこそ] 画面で [次へ] を選択します。
[モードの選択] 画面で [オフライン****インスタンス] を選択します。
オフラインディスクを選択し、[次へ] を選択します。プロンプトが表示されたら、[はい] を選択し、[OK] を選択します。
EC2Rescue の実行状態を維持してください。
注: 元のインスタンスでは BitLocker を使用して EBS ルートボリュームを暗号化している場合は、画面のプロンプトに従ってパスワードまたは BitLocker 復元キーを入力してください。または、コマンドラインで manage-bde unlock を実行します。詳細については、Microsoft のウェブサイトで「manage-bde unlock」を参照してください。ドライブのロックを解除した後、手順 6 を繰り返します。 - アタッチされたボリュームの X:\Windows\System32\drivers\CrowdStrike\ フォルダに移動し、C-00000291*.sys を削除します。
**注:**この例の X: は、影響を受けたインスタンスからセカンダリ EBS ボリュームに割り当てられたドライブレターです。環境によっては別の文字になる場合もあります。 - EC2Rescue に戻ります。
[診断とレスキュー] 、[次へ] の順に選択します。
すべてのオプションをデフォルトのままにします。
[次へ] を選択し、もう一度 [次へ] を選択します。
表示されるプロンプトで [レスキュー] を選択します。[OK] を選択し、[次へ] を選択します。
[完了] を選択します。
ポップアップウィンドウで [ディスク署名を修正] を選択し、[OK] を選択します。
[ディスク署名を修正] がグレー表示されている場合は、[OK] を選択します。 - 新しいインスタンスから EBS ボリュームをデタッチします。
- デタッチされた EBS ボリュームのスナップショットを作成します。
- 影響を受けたインスタンスと同じボリュームタイプ (gp2 や gp3 など) を選択し、スナップショットから Amazon マシンイメージ (AMI) を作成します。
- 元の EC2 インスタンスのルートボリュームを置き換え、AMI を指定します。
WorkSpaces
複数回再起動しても WorkSpace が正常な状態に戻らない場合は、WorkSpace を以前のスナップショットに復元します。WorkSpace を復元しても WorkSpace が正常な状態に戻らない場合は、WorkSpace を再構築します。
トラブルシューティング
上記の手順で接続の問題が解決しない場合は、次のトラブルシューティング手順を実行してください。
Systems Manager Automation ランブック
問題: ヘルパーインスタンスから AWS サービスエンドポイントに接続できない。この問題が原因で、waitForEc2RescueInstanceToBeManaged オートメーションのワークフローステップが失敗する可能性があります。
解決策: デフォルトのセキュリティグループでは、Systems Manager エンドポイントと S3 エンドポイントに到達するためのアウトバウンドトラフィック (TCP ポート 443) が許可されていることを確認します。また、選択したサブネットから当該エンドポイントに接続できるようにしておきます。カスタムセキュリティグループを使用するには、HelperInstanceSecurityGroupId パラメータの値をセキュリティグループ ID で更新します。パブリックサブネットを選択した場合は、AssociatePublicIpAddress パラメータを True に設定します。オートメーションの SubnetId パラメータを CreateNewVPC に設定して、必要な接続を備える新しい VPC を作成するという方法もあります。
問題: 停止保護が有効になっているため、問題が発生したインスタンスを停止できない。
解決策: 問題が発生したインスタンスで停止保護を無効化し、オートメーションを再実行します。
注: インスタンスでインスタンスストアボリュームを使用している場合、そのボリュームに保存されているデータは、インスタンスを停止する際に保持されません。
問題: ヘルパーインスタンスが起動しない。
解決策: EC2Rescue インスタンスに選択したインスタンスタイプは、ヘルパーインスタンスのサブネットのアベイラビリティーゾーンでは使用できない場合があります。ヘルパーインスタンスと同じアベイラビリティーゾーンでサポートされているインスタンスタイプを使用してください。
問題: オートメーションが AWS CloudFormation スタックの作成完了を確認する際、"Stack AWSSupport-EC2Rescue-{UUID} entered unexpected state: DELETE_IN_PROGRESS" というエラーが発生し、オートメーションが失敗する。
解決策: スタックで障害が発生した原因を特定するには、UUID を取得して CloudFormation コンソールを使用します。スタックリソースを作成するアクセス許可が欠けている場合、スタックで障害が発生する可能性があります。詳細については、「AWSSupport-StartEC2RescueWorkflow」の「必要な IAM アクセス許可」セクションと「IAM ポリシーで、アクセス拒否エラーまたは不正操作のエラーをトラブルシューティングする方法を教えてください。」を参照してください。
問題: EBS ボリュームが暗号化されているため、assertInstanceRootVolumeIsNotEncrypted オートメーションのワークフローステップでランブックを実行できない。
解決策: ボリュームで EBS 暗号化を使用している場合は、パラメータ AllowEncryptedVolume を True に設定します。
問題: デフォルトの VPC が削除された。
解決策: SubnetId パラメータを CreateNewVPC に設定し、インスタンスを正常に復元できる新しい VPC を作成します。
問題: detachInstanceRootVolume オートメーションのワークフローステップが失敗し、"error occurred (IncorrectState) when calling the DetachVolume operation: Unable to detach root volume" というエラーメッセージが表示される。
解決策: オートメーションを実行している間は、インスタンスの状態は Stopped のままにしてください。
手動でのインスタンスの復元
問題: "The application or operating system couldn't be loaded because a registered file is missing or contains errors" というエラーが発生し、インスタンスが起動しない。
解決策: [ディスク署名の修正] を選択しなかった場合、ディスク署名の競合が発生する可能性があります。この問題を解決するには、手動復元手順のステップ 8 を実行してください。インスタンスを EC2Rescue を使用せずに復元した場合は、「Amazon EC2 Windows インスタンスに関する問題のトラブルシューティング」を参照してください。
**注:**前述のトラブルシューティング手順で EC2 インスタンスへの接続の問題が解決されない場合は、AWS サポートにお問い合わせください。到達不可能なインスタンスのスクリーンショットを必ず取得しておいてください。
関連情報
- 言語
- 日本語
