書くこと
パブリックサブネットに存在するWindowsのEC2インスタンスに、RDP接続するときの方法を記載します。
ここでは3つのRDP接続方法を取り上げて、それぞれについて見ていきたいと思います。
以下の方法があると考えます。
- Systems Managerのフリートマネージャー(Fleet Manager)でRDP接続する。(新しいやり方)
- Systems ManagerでポートフォワードしてRDPクライアントで接続する。(ちょっと古いやり方)
3389
ポートを開放してRDPクライアントで接続する。(古いやり方)
❶が一番セキュアで一番簡単な方法となります。なぜなら、WindowsにRDPポート(3389
)を開放せずに、AWSコンソールからブラウザですぐにアクセスできるからです。
❷はフリートマネージャーほど簡単ではありませんが、Windowsに3389
ポートを開放しなくてよいことは同じです。しかし、ポートフォワードを実行する手間があります。また、アクセスはRDPクライアントを使用します。
❸はWindowsに3389
ポートの穴を開ける必要があります。その上でRDPクライアントで接続する、一番古いやり方となります。AWSの過去を見ることも大切だと感じたので、今回書いてみることにしました。
フリートマネージャー
フリートマネージャーでの接続の仕方から見ていきます。
構成図
ユーザーはWEBブラウザでアクセスし、Systems Manager経由でEC2にアクセスします。

インスタンスプロファイル
フリートマネージャーはSystems Managerの機能の一部なので、EC2がSystems Managerを使用できる必要があります。
そのため、AmazonSSMManagedInstanceCore
のポリシーがアタッチされたIAMロールを、インスタンスプロファイルとしてEC2に付与しておく必要があります。
ここでは、「EC2InstanceProfile」という名前でロールを作成しました。

EC2作成
作成したインスタンスプロファイルをアタッチして、WindowsのEC2インスタンスを作成しました。
以下はセキュリティグループの画面ですが、インバウンドでは何も許可をしていません。
アウトバウンドは443ポートのみ全宛先に許可しています。これは、Systems Managerに対して443通信をするからです。

接続してみる
作成したEC2にチェックを入れて、「接続」ボタンをクリックします。

「RDPクライアント」タブをクリックして、「Fleet Managerを使用して接続する」にチェックを入れます。
「Fleet Manager Remote Desktop」ボタンをクリックします。

今回はキーペアで接続します。(ユーザー名とパスワードでも接続できます。パスワード取得にはキーペアが必要になります)
EC2を作成したときに作ったキーペアを指定します。
「Connect」ボタンを押します。

接続することができました。

Systems Managerポートフォワード
次はSystems Managerのポートフォワードを使用して、WindowsのEC2にRDP接続してみたいと思います。
構成図
ユーザーはRDPクライアントでlocalhost:任意のポート
を指定し、接続します。ポートフォワードされてEC2に接続されます。

前提
Systems Managerでポートフォワードする際も、AmazonSSMManagedInstanceCore
ポリシーがアタッチされたEC2インスタンスプロファイルが必要です。
また、セキュリティグループのルールは変更していません。インバウンドでは何も許可しておらず、443
のアウトバウンドのみ全宛先に許可しています。
AWS CLIとSession Managerプラグインのインストール
ポートフォワードをするために、ローカルの作業端末にAWS CLIとSession Managerプラグインが必要になります。
以下を参照してインストールしていただければと思います。
AWS CLI の最新バージョンをインストールまたは更新します。
AWS CLI 用の Session Manager プラグインをインストールする
ポートフォワード実行
以下のコマンドでは、ローカルの3389
ポートをEC2の3389
ポートにフォワーディングしています。
Administratorのパスワード取得
接続にはパスワードが必要になるため、AWSコンソールで取得します。
先ほどフリートマネージャーで接続を行ったときの画面の、「RDPクライアント」タブをクリックします。
「パスワードを取得」ボタンをクリックします。

キーペアをアップロードして、「パスワードを復号化」をクリックします。

パスワードが復号されて表示されるので、メモ帳などにコピーします。

接続してみる
Macを使っているので、ここでは「Microsoft Remote Desktop」というアプリで接続します。
接続先をlocalhost
として作成します。(localhost:3389
がEC2インスタンスの3389
ポートにフォワードされるため)
- Microsoft Remote Desktopアプリはデフォルトで
3389
ポートを使用します。

接続先を追加して接続を試みると、UsernameとPasswordを聞かれます。
UsernameはAdministratorで、Passwordは先ほど復号したパスワードです。

接続できました。

ポートフォワードを行っているコンソールを見てみると、「Connection accepted for session…」という表示が現れています。
3389ポート開放してRDP接続
最後は、セキュリティグループに3389
ポートを開放してRDP接続するやり方です。
構成図
Systems Managerがいなくなり、ユーザーからEC2に直接アクセスするので、EC2のセキュリティグループに3389
ポートを開ける必要があります。

セキュリティグループに3389
を許可
EC2インスタンスに紐付いているセキュリティグループのルールを変更します。
インバウンドに3389
ポートを許可しました。
また、アウトバウンドの443
ポート許可は削除しました。(Systems Managerを使用しないので必要なくなった)

接続してみる
EC2インスタンスに接続する画面から、同じく「RDPクライアント」タブを選択します。
そして、「リモートデスクトップファイルのダウンロード」をクリックします。

ダウンロードしたRDPファイルをダブルクリックします。

UsernameとPasswordが聞かれます。
ポートフォワードのときに確認した、Administratorのパスワードを入力します。

接続できました。

まとめ
簡単にまとめてみます。
- フリートマネージャーの場合
- セキュリティグループのインバウンドに
3389
ポートを開放しなくて良い。 - セキュリティグループのアウトバウンドに
443
ポートの開放は必要。 - RDPクライアントも不要。ブラウザでアクセスできる。
- セキュリティグループのインバウンドに
- Systems Managerのポートフォワード
- セキュリティグループのインバウンドに
3389
ポートを開放しなくて良い。 - セキュリティグループのアウトバウンドに
443
ポートの開放は必要。
- RDPクライアントが必要。
- セキュリティグループのインバウンドに
3389
ポートを開放してRDP接続- セキュリティグループのインバウンドに
3389
ポートの開放が必要。
- セキュリティグループのアウトバウンドにポート開放は不要。
- RDPクライアントが必要。
- セキュリティグループのインバウンドに
フリートマネージャーかSystems Managerのポートフォワードの2択なのではないかと個人的には感じました。
要望が無いならフリートマネージャー。ブラウザでのアクセスに抵抗があるならポートフォワードかと思いました。
コメント