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 Personal 仮想デスクトップが含まれます。この問題が影響するのは、Windows Amazon EC2 インスタンスと CrowdStrike がインストールされている個人の Workspace のみです。
詳細については、「修復とガイダンス」ハブ: Windows ホスト向けの Falcon のコンテンツ更新」(CrowdStrike のウェブサイト)を参照してください。
通常、インスタンスまたは WorkSpace を再起動すると、CrowdStrike Falcon エージェントは正常に更新されます。
**注:**インスタンスでインスタンスストアボリュームを使用している場合、そのボリュームに保存されているデータは、インスタンスが停止、休止状態、または終了すると維持されなくなります。インスタンスが停止、休止状態、または終了すると、インスタンスストアボリュームは暗号的に消去されます。詳細については、「Amazon EC2 インスタンスの Amazon EC2 インスタンスストア一時ブロックストレージ」を参照してください。
解決方法
再起動してもインスタンスが正常な状態に復元されない場合は、AWS Systems Manager Automation ランブックのいずれかを使用してインスタンスを復元します。あるいは、手動でインスタンスを復元します。
ランブックを使用する場合は、まず次のアクションを実行します。
- Amazon Elastic Block Store (Amazon EBS) のルートボリュームが暗号化されている場合は、その暗号化キーがアカウントに存在しているようにしてください。また、使用するには権限が必要です。
- AWSSupport-StartEC2RescueWorkflow ランブックによってインスタンスが停止します。インスタンスがインスタンスストアボリュームを使用している場合は、手動で復元する方法を使用してデータ損失を回避します。
- AWSSupport-StartEC2RescueWorkflow ランブックを開始する前に、AWS Identify and Access Management (IAM) のユーザーまたはロールに必要な権限を確保してください。詳細については、「AWSSupport-StartEC2RescueWorkflow」の「Required IAM permissions」セクションを参照してください。また、kms:CreateGrant 権限を IAM ロールに追加する必要もあります。
障害が発生したインスタンスを特定する
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、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 インスタンスを1つ復元する
AWSSupport-StartEC2RescueWorkflow を使用して復元を自動化するには、ランブックを Systems Manager コンソールで開き、復元するリージョンとインスタンスを選択します。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"))
AWS Systems Manager Automation ランブックを使用して EC2 インスタンスを複数復元する
ランブックを複数の EC2 インスタンスで使用するには、インスタンス ID、タグ、リソースグループのいずれかを使用します。
注:
- ランブックでは、選択したインスタンスごとにヘルパーインスタンスを1つ起動します。
- インスタンスで選択したサブネットには、IP アドレスが十分あるようにしてください。
- インスタンスクォータと EBS ボリュームクォータが十分であるようにください。
- 自動化ランブックが完了するまでにかかる時間は、選択した並列処理量によって異なります。
インスタンス ID を使用する
次の手順を実行します。
- AWSSupport-StartEC2RescueWorkflow ランブックを Systems Manager コンソールで開きます。
- [Automation ランブックの実行] で、[レート制御] を選択します。
- [ターゲット] セクションで、[パラメータ] に [InstanceId] を選択してから、[ターゲット] に [パラメータ値] を選択します。
- [入力パラメータ] には、復元するインスタンスを選択します。
- [レート制御] には、オートメーションを同時に実行できるリソースの数に合った並列処理オプションを選択します。詳細については、「オートメーションを大規模に制御する」を参照してください。
- [実行] を選択します。
タグを使用する
次の手順を実行します。
- 復元するインスタンスにのみ使用する新しい一意のタグを作成します。このタグが付いたインスタンスはすべて復元のターゲットとなり、意図しないデータ損失を引き起こしたりインスタンスの可用性に影響したりすることがあります。詳細については、「Amazon EC2 リソースにタグ付けする」および「タグエディターの使用」を参照してください。
- 影響を受けるインスタンスのみが新しいタグを共有していることを確認するには、AWS Resource Explorer または タグエディターを使用します。
- AWSSupport-StartEC2RescueWorkflow ランブックを Systems Manager コンソールで開きます。
- [Automation ランブックの実行] で、[レート制御] を選択します。
- [ターゲット] セクションで、[パラメータ] に [InstanceId] を選択してから、[ターゲット] に [パラメータ値] を選択します。
- [タグ] で [編集] を選択し、タグのキーと値を入力して [保存] を選択します。
- [入力パラメータ] には、復元するインスタンスを選択します。
- [レート制御] には、オートメーションを同時に実行できるリソースの数に合った並列処理オプションを選択します。詳細については、「オートメーションを大規模に制御する」を参照してください。
- [実行] を選択します。
リソースグループを使用する
次の手順を実行します。
- 復元するインスタンスにのみ使用する新しいリソースグループを作成します。このリソースグループのインスタンスはすべて復元のターゲットとなり、意図しないデータ損失を引き起こしたりインスタンスの可用性に影響したりすることがあります。詳細については、AWS Resource Groups でのクエリベースのグループの作成」を参照してください。
- 影響を受けるインスタンスのみが新しいリソースグループに属していることを確認するには、AWS Resources Groups コンソールを使用します。
- AWSSupport-StartEC2RescueWorkflow ランブックを Systems Manager コンソールで開きます。
- [Automation ランブックの実行] で、[レート制御] を選択します。
- [ターゲット] セクションで、[パラメータ] に [InstanceId] を選択してから、[ターゲット] に [パラメータ値] を選択します。
- [リソースグループ] には、新しいリソースグループを選択します。
- [入力パラメータ] には、復元するインスタンスを選択します。
- [レート制御] には、オートメーションを同時に実行できるリソースの数に合った並列処理オプションを選択します。詳細については、「オートメーションを大規模に制御する」を参照してください。
- [実行] を選択します。
手動でインスタンスを復元する
次の手順を実行します。
- インスタンスの EBS ルートボリュームのスナップショットを作成します。
- 同じアベイラビリティーゾーンのスナップショットから新しい EBS ボリュームを作成します。
- 同じアベイラビリティーゾーンで新しい Windows インスタンスを起動します。
- データボリュームとして新しいインスタンスに新しい EBS ボリュームをアタッチします。
- ヘルパーインスタンスに Windows サーバー用 EC2Rescue ツールをダウンロードします。
- 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] を選択します。 - Linux インスタンスから EBS ボリュームをデタッチします。
- デタッチされた EBS ボリュームのスナップショットを作成します。
- 影響を受けたインスタンスと同じボリュームタイプ (gp2 や gp3 など) を選択し、スナップショットからAmazon マシンイメージ (AMI) を作成します。
- 元の EC2 インスタンスのルートボリュームを置き換え、AMI を指定します。
Amazon WorkSpaces
複数回再起動しても WorkSpace が正常な状態に戻らない場合は、WorkSpace を以前のスナップショットに復元します。WorkSpace を復元しても WorkSpace が正常な状態に戻らない場合は、WorkSpace を再構築します。
トラブルシューティング
前述の手順で EC2 インスタンスへの接続の問題が解決されない場合は、復元オプションに応じて次のトラブルシューティング手順に従います。
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 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」というエラーメッセージが表示されて失敗する。
**解決策:**オートメーションを実行している間は、インスタンスを Stopped 状態のままにしておきます。
手動でのインスタンスの復元
**問題:**インスタンスが次のエラーにより起動しない。 「The application or operating system couldn't be loaded because a registered file is missing or contains errors.」
解決策:[ディスク署名を修正] を選択しなかった場合、ディスク署名の競合が発生している可能性があります。
この問題を解決するには、手動による復元の手順の手順8に従います。インスタンスを EC2 Rescue なしで復元した場合は、「Amazon EC2 Windows インスタンスに関する問題のトラブルシューティング」を参照してください。
**注:**前述のトラブルシューティング手順で EC2 インスタンスへの接続の問題が解決されない場合は、AWS サポートにお問い合わせください。到達不可能なインスタンスのスクリーンショットを必ず取得しておいてください。
関連情報
関連するコンテンツ
- 質問済み 3年前lg...
- 質問済み 6年前lg...
- 質問済み 1年前lg...
- 承認された回答質問済み 7ヶ月前lg...
- AWS公式更新しました 2年前