こんにちわ!サーバーワークス日本最南端社員の久保玉井(くぼたまい)です。
地道にコツコツとジム通いやウォーキングをすることにより、最近肩こりや腰痛が減った気がします。定期的な運動って大事ですね(^o^)丿
さて今回は、Windows サーバーのパスワード復旧な内容となります。
AWS の EC2 にて Windows サーバーを立ち上げて、Local Administrator のパスワード変更した後にパスワードを忘れた方向けにお役に立てれば幸いです。
実はこのネタは、2022年4月に某先輩に捧げた内容なんですが、記事化されなかったので今回供養した次第です。落合先輩!記事化しましたよ!
EC2Rescure ってご存知でしょうか?
皆さんご存知の Amazon EC2。仮想サーバーとしてメジャーな AWS サービスですよね?
そんなAmazon EC2 では、EC2Rescue なるツールが提供されています。
EC2Rescue for Windows Server
EC2Rescue for Windows Server は、Amazon EC2 Windows Server インスタンス上で動作し、潜在的な問題の診断とトラブルシューティングを行うことができる使いやすいツールです。
EC2 で準備した仮想サーバー類のトラブルシューティングで利用するツールなのですが、それで復旧作業が可能になります。
ちなみに、過去記事では佐竹さんも紹介されていました。
悲しい過去の出来事
ちなみに私は過去にオンプレで Windowsサーバー をインストール準備し、パスワードを控えたのにそれが何故か間違っていて、再度 Windowsサーバーをインストールした事があります。
小学生の頃にDQ2で、復活の呪文を間違えて学習ノートに書き写した記憶が鮮明に蘇りましたね。
今回の手順を行えば、Local Administrator 限定ではありますがパスワード復旧できるので助かります。
前提条件
今回の復旧手順ですが、以下 AWS ドキュメントや情報センターを元に手順をご紹介します。
Systems Manager Run Command での EC2Rescue for Windows Server の使用 - Amazon Elastic Compute Cloud
EC2 Windows インスタンスの管理者パスワードをリセットする | AWS re:Post
実施するにあたりいくつかの前提条件がありますので、以下に明記します
- Systems Manager の Agent が必要です。
- 当該インスタンスが Systems Manager へ疎通できる状態が必要 (インターネットアクセスやVPCエンドポイントなどが必要)
- パラメーターストアへパスワード内容を書き出すための権限(ポリシー)が必要
- 上記権限を当該インスタンスが保有する必要がある(IAM ロールの付与)
実施手順
ではさっそくやっていきましょう!
IAM ポリシーおよびロールの準備
まずはパラメーターストアに put できるような IAM ポリシーの準備が必要です。今回はドキュメントを参考に以下の内容にしました。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": [ "arn:aws:ssm:*:*:parameter/EC2Rescue/Passwords/i-*" ] } ] }
作成した IAM ポリシー( PutPalameterstore )を、IAMロールにアタッチします。今回は Fleet Manager で接続もしたかったので、AWS管理ポリシーの AmazonSSMManagedInstanceCore も付与しました。
EC2 インスタンスの立ち上げ
次に、Systems Manager の Agent がインストール済の EC2 インスタンスが必要です。今回は、クイックスタートで準備できる Microsoft Windows Server 2022 を用いました。
適切なインスタンスサイズや、キーペア、ネットワークなどを指定後に先程作成した IAM ロールを指定します。
無事に起動できました。
念のためにキーペアを用いて、パスワードを入手し Fleet Manager で接続してみます。
入手したパスワード情報を入力後、Fleet Managerで接続っと!
無事に接続できました。
Systems Manager でパスワードを復旧する
ようやく準備が整いました。ここからが今回の記事の大事なところです。
EC2Rescue for Windows Server では Systems Manager から各種復旧操作などが可能です。AWS CLI でも操作が可能なのですがドキュメントでは以下の内容が紹介されています。
- オフラインルートボリュームで特定されたすべての問題の修正を試みる
- 現在の Amazon EC2 Windows インスタンスからログを収集する
- オフライン Amazon EC2 Windows インスタンスボリュームからログを収集する
- ローカル管理者のパスワードをリセットする
今回は、Windowsのローカル管理者(Local Administrator)のパスワードをリセットし復旧していきます。
Systems ManagerのRun Commandを選びます。
黄色いRun Commandボタンを押します。
するとどのコマンドドキュメントを実施するのか選択となるのですが、今回は「AWSSupport-RunEC2RescueForWindowsTool」を選択します。
コマンドのパラメータでは「ResetAccess」を選択します(最初から選択されてます)
パスワードをリセット(復旧)したいインスタンスを指定ですが、今回は手動指定しました。
出力オプションでS3の指定がありましたが、今回は不要だったので外します。
一番下にスクロールして実行ボタンを押します。
画面が切り替わり進行中と表示されます。2~3分待った後に更新ボタンを押します。
無事に終了しましたね。
パスワードはパラメーターストアにあります。
Run Commandの実行後、変更後のパスワードはパラメーターストアに保存されます。
パラメーターストアの一覧に当該インスタンスのパスワードは保存されています。
そのパラメーターを選択すると、パスワードの確認が出来ます。
Fleet Manager で接続を試みる!
では再度 Fleet Manager で接続してみましょう。
まずはキーペアを元にして取得したパスワードで接続を試みてみます。
インスタンス作成時に指定したキーペアでのパスワードでは接続は出来ませんでした(想定どおり)
次にRun Commandでパスワード復旧(リセット)し、パラメーターストアに保存されているパスワードで接続します。
やったー!接続できましたヽ(^o^)丿
Systems Manager Run Command でパスワードの復旧が出来ることがこれで判りました。
注意事項
パスワードがそのままパラメーターストアに残り続ける事になりますので、適宜削除が必要だと思います。
各企業によって運用ポリシーがあると思いますので、それに従ってパスワードの管理をされてください。
私も不要なので速攻削除しました。
まとめ
ではまとめです!
- パラメーターストアに保存されたパスワードは企業のポリシーに即して管理されてください。
- IAMロールも付与しつづけるのかは要検討だと思います。
- EC2Rescue以外にEC2LaunchやEC2Configなどもあるが、ルートボリュームのアタッチやデタッチ操作があるのが個人的には怖い
- どのツールが良いのかは要件に合わせて選択した方が良いと思います。
以上ですね。この記事がどなたかのお役に立てれば嬉しいです。
最後までお読み頂きありがとうございました\(^o^)/
久保玉井純(執筆記事の一覧)
アプリケーションサービス部
サーバーワークス日本最南端社員。
最近、AWS Authorized Instructor Award 2022で表彰いただきました。引き続きわかりやすいトレーニング提供できるように頑張ります!