📝

AWSシリーズ3:AWS Systems Managerのセッションマネージャーを理解する

2022/09/30に公開

はじめに

以下の記事の続きです。以下の設定が終わってから続けてください。
https://zenn.dev/kiyoka/articles/aws1-systems-manager-managed

本記事では、Systems Managerのセッションマネージャーを利用してみます。
セッションマネージャーのセキュリティー面のメリットも確認しながら進めていきます。

記事のカバー範囲

  • AWSとVPN接続していない環境での設定・実験結果です。
    オフィスでの利用では通常VPN接続しているはずです。あらためて内容の読み替えが必要になるかもしれません。
  • SSOユーザーはカバーしていません。本記事ではIAMユーザーのクレデンシャルを使ったAWS CLIからのリモートセッションのみです。
  • WindowsプラットフォームのEC2インスタンスのみを扱っています。Linuxの話題はありません。

まずはブラウザからセッションマネージャーを試してみる

ブラウザからWindowsインスタンスに対してリモートセッションを開始してみます。

  1. 「セッションの開始」を押す
    2021-11-28-17-16-37-image.png
  2. 理由を記載し、接続先インスタンスを選択し、「セッションを開始する」を押す
    2021-11-28-17-38-17-image.png
  3. ブラウザ上でPowerShellのコマンドラインセッションが開始する
    2021-11-28-17-41-36-image.png
    ブラウザからは、PowerShellでのセッションしか利用できないことがわかります。(※2022年9月現在では、フリートマネージャーにてブラウザからリモートデスクトップ接続ができるようになっています)
    次はセッションマネージャーを使ったRDP接続を試します。

事前準備:AWS CLIへのクレデンシャルの登録

  1. 手元のWindowsマシンのAWS CLIに、IAMユーザーのクレデンシャルを登録します。
    aws configureコマンドでAWS Access Key IDとAWS Secret Access Keyを設定します。
    以下は、私の設定完了後の状態です。
    2021-11-28-18-31-03-image.png
    設定方法は、AWS公式ドキュメントを参照してください。
    設定の基本 - AWS Command Line Interface

Windowsインスタンスにリモートデスクトップで接続する

  1. AWSマネジメントコンソールで稼働中のWindowsインスタンスのIDを調べる
    2021-11-28-18-33-49-image.png
  2. クライアントPCのpowershellコンソール上で、aws ssm session-startコマンドでトンネリングセッションを開始する
    2021-11-28-18-35-02-image.png
    コマンドは以下の通りです。--target の引数は、自分のWindowsインスタンスIDに置き換えて実行してください。
aws ssm start-session --target i-0009765e4a3387908 --document-name AWS-StartPortForwardingSession --parameters "portNumber=3389, localPortNumber=13389"
  1. localhost:13389でリモートデスクトップを開始する
    2021-11-28-18-39-04-image.png
    2021-11-28-18-39-40-image.png
    接続できました。
    2021-11-28-18-40-46-image.png

パブリックIPへのRDPとトンネリングとの違い

ネットワーク的な違いを図示します。

  • パブリックIPへRDPした場合
    Windowsインスタンスがインターネットに公開されています。
    パブリックIPのRDPポート(3389ポート)に対してブルートフォースアタックをかければ、時間の問題でリモートデスクトップができてしまいます。
    2021-11-28-22-42-31-image.png
  • SSMセッションマネージャーのトンネリングを使った場合
    Windowsインスタンスがインターネットに公開されていません。
    AWS CLIに鍵がついているのでセキュアになり、さらに、SSM AgentからSystems Managerへのアウトバウンド方向のTCP接続のみとなるので、外部からの攻撃をうけにくくなります。このトンネリングの場合は、WindowsインスタンスのセキュリティーグループにRDPポート(3389ポート)のインバウンドの許可がいりません。
    2021-12-05-23-34-02-image.png

セキュリティー強化の設定変更を行う

EC2インスタンスに付与しているセキュリティーグループからRDPポート(3389ポート)のインバウンド許可設定を削除します。

最後に

Systems Manager経由でリモートデスクトップセッションを利用するとセキュアになります。個人利用のAWSアカウントの場合でも、ぜひ設定してみてください。

Discussion