📝
AWSシリーズ3:AWS Systems Managerのセッションマネージャーを理解する
はじめに
以下の記事の続きです。以下の設定が終わってから続けてください。
本記事では、Systems Managerのセッションマネージャーを利用してみます。
セッションマネージャーのセキュリティー面のメリットも確認しながら進めていきます。
記事のカバー範囲
- AWSとVPN接続していない環境での設定・実験結果です。
オフィスでの利用では通常VPN接続しているはずです。あらためて内容の読み替えが必要になるかもしれません。 - SSOユーザーはカバーしていません。本記事ではIAMユーザーのクレデンシャルを使ったAWS CLIからのリモートセッションのみです。
- WindowsプラットフォームのEC2インスタンスのみを扱っています。Linuxの話題はありません。
まずはブラウザからセッションマネージャーを試してみる
ブラウザからWindowsインスタンスに対してリモートセッションを開始してみます。
- 「セッションの開始」を押す
- 理由を記載し、接続先インスタンスを選択し、「セッションを開始する」を押す
- ブラウザ上でPowerShellのコマンドラインセッションが開始する
ブラウザからは、PowerShellでのセッションしか利用できないことがわかります。(※2022年9月現在では、フリートマネージャーにてブラウザからリモートデスクトップ接続ができるようになっています)
次はセッションマネージャーを使ったRDP接続を試します。
事前準備:AWS CLIへのクレデンシャルの登録
- 手元のWindowsマシンのAWS CLIに、IAMユーザーのクレデンシャルを登録します。
aws configureコマンドでAWS Access Key IDとAWS Secret Access Keyを設定します。
以下は、私の設定完了後の状態です。
設定方法は、AWS公式ドキュメントを参照してください。
設定の基本 - AWS Command Line Interface
Windowsインスタンスにリモートデスクトップで接続する
- AWSマネジメントコンソールで稼働中のWindowsインスタンスのIDを調べる
- クライアントPCのpowershellコンソール上で、aws ssm session-startコマンドでトンネリングセッションを開始する
コマンドは以下の通りです。--target の引数は、自分のWindowsインスタンスIDに置き換えて実行してください。
aws ssm start-session --target i-0009765e4a3387908 --document-name AWS-StartPortForwardingSession --parameters "portNumber=3389, localPortNumber=13389"
- localhost:13389でリモートデスクトップを開始する
接続できました。
パブリックIPへのRDPとトンネリングとの違い
ネットワーク的な違いを図示します。
- パブリックIPへRDPした場合
Windowsインスタンスがインターネットに公開されています。
パブリックIPのRDPポート(3389ポート)に対してブルートフォースアタックをかければ、時間の問題でリモートデスクトップができてしまいます。
- SSMセッションマネージャーのトンネリングを使った場合
Windowsインスタンスがインターネットに公開されていません。
AWS CLIに鍵がついているのでセキュアになり、さらに、SSM AgentからSystems Managerへのアウトバウンド方向のTCP接続のみとなるので、外部からの攻撃をうけにくくなります。このトンネリングの場合は、WindowsインスタンスのセキュリティーグループにRDPポート(3389ポート)のインバウンドの許可がいりません。
セキュリティー強化の設定変更を行う
EC2インスタンスに付与しているセキュリティーグループからRDPポート(3389ポート)のインバウンド許可設定を削除します。
最後に
Systems Manager経由でリモートデスクトップセッションを利用するとセキュアになります。個人利用のAWSアカウントの場合でも、ぜひ設定してみてください。
Discussion