先日業務で初めてWindowsServerに触れる機会があり、その際にSSMを経由したRDP接続に関してアウトプットとして記事の投稿をしたいと思います。
構成図
VPC内のプライベートサブネット配下に設置したWindosServerにSSM経由でアクセスするものです。
1 事前準備
事前準備して以下のダウンロードが必要です。
- AWS CLI
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html - Session Manager Plugin
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html#install-plugin-macos - MicroSoft Remote Desktop
https://apps.apple.com/jp/app/microsoft-remote-desktop/id1295203466?mt=12
※AWS CLIを使用する際にはAWS Configureの設定を実施してください。(以下記事参照)
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config
2 VPCを作成する
マネジメントコンソールから構成図の通りVPCを作成します。
今回はシンプルな構成のためVPCウィザードから作成しました。
以下のような構成で作成していきます。
3 セキュリティグループの作成
今回セキュリティグループは2つ作成します。
- EC2用
- VPCエンドポイント
セキュリティグループは以下のとおり設定します。
■EC2用のセキュリティグループ
EC2にはVPCエンドポイント経由でアクセスするためEC2のインバウンド設定は不要です。
■VPCエンドポイント用のセキュリティグループ
ソースの範囲はVPCエンドポイントを配置するサブネットのCIDRを指定しています。
※いずれのセキュリティグループもアウトバウンドルールはデフォルトでOKです。
3 EC2を起動する
続いてWindowsServerを作成していきます。
VPCの設定とセキュリティグループを今回作成したものに変更してパブリックIPアドレスは非有効にしておきます。
あとはデフォルトでOKなので割愛します。
(サーバーはWindowsServerを指定)
4 EC2にIAMロールをアタッチする
EC2でSystems Managerを利用するための権限としてのIAMロールを作成します。
以下IAMロールを作成し、先程作成したEC2にアタッチします。
SSMを利用できるようにしたいので AmazonSSMManagedInstanceCore
ポリシーをアタッチします。
作成後先程作成したEC2にアタッチします。
5 WindowServerのパスワードを取得
EC2インスタンスの「接続」→「RDPクライアント」から「パスワードを取得」を押下してEC2作成時に指定したキーペアをを参照してログイン用のパスワードを取得します。
あとでRDPする際に必要になりますのでメモ帳なのでコピペしておいてください。
6 VPCエンドポイントの作成
今回プライベートサブネットに配置されているインスタンスに接続したいのでVPCエンドポイントを経由する必要があります。
以下3つのエンドポイントを今回作成したVPCのサブネットに配置します。
- com.amazonaws.ap-northeast-1.ssm
- com.amazonaws.ap-northeast-1.ssmmessages
- com.amazonaws.ap-northeast-1.ec2messages
6 接続テスト
ターミナルで以下コマンドでセッションを開始します。
aws ssm start-session --target i-xxxx --document-name AWS-StartPortForwardingSession --parameters "portNumber=3389, localPortNumber=13389"
ターミナル上で上記コマンドを実行しWaiting for connections...
の文字が表示されたらセッションが確立された状態になっています。
続いてMicroSoft Remote DesktopでRDP接続していきます。
コンピュータ名にlocalhost:13389
を入力します。
※13389はポートフォワーディングで開いたローカルポートです。
この設定をAddしてConnectするとログイン画面がでてきますので、先程メモしたパスワードでログインします。
WindowsServerへのリモートデスクトップアクセスが成功しました。
うまくつながらないときは
接続がうまくいかない時は以下のポイントをチェックすると良いかもです。
- VPCエンドポイントの「プライベート DNS名」が有効になっているか
- EC2に適切なポリシーのIAMロールがアタッチされているか
- VPCエンドポイントセキュリティグループでHTTPSアクセスを許可しているか
- VPC の「DNS ホスト名」と「DNS 解決」が有効になっているか
SSM経由でインスタンスにアクセスできるようになるとEC2のポートを開かなくても良いのでセキュリティの向上につながって良いなと思いました。