[Qwiklabs]Windowsの要塞ホストを使用したセキュアなRDPの構成

PR

こんにちは、こえじまです。

GCPのProfessional Cloud Architect受験に向け、Qwiklabsのハンズオンを勉強中です。

今回はWindowsの要塞ホストを使用したセキュアなRDPの構成(GSP303)の解説をします。

シナリオ(抜粋)

あなたの会社で新しいクラウドアプリケーションサービスをデプロイすることになりました。

セキュアな本番環境用 Windows サーバーを実現するために、新しい VPC ネットワーク環境を構築し、外部ネットワークからアクセスは要塞(ようさい)ホストからのRDPのみに制限する必要があります。

構成するインスタンスはデフォルト VPCネットワークからモニタリングするため、デフォルトVPC ネットワークへの内部接続用にネットワークインターフェースが必要となります。

ではやっていきましょう。

Task1. VPCネットワークを作成する

要塞ホスト用のVPCネットワークおよび、要塞ホストへのアクセスに必要なファイアウォールルールを作成していきます。

ワンポイント
要塞ホストは踏み台ホストとも言われ、インターネットと内部ネットワークの境界となるインスタンスのことを指します。
英語だとBastionと表現されることが多いです。

VPCネットワークとサブネットワークを作る

GUIでやる場合

ナビゲーションメニューのVPC network > VPC networksをクリックし、画面上部のCREATE VPC NETWORKをクリック。

  • VPCネットワークのName: securenetwork
  • Subnet creation mode: Custom
  • サブネットのName: 任意(ここではsecuresubnetwork)
  • Region: us-central1
  • IP address range: 任意(ここでは172.16.1.0/24)
ネットワークの作成
注意
画像ではRegionがasia-northeast1(東京)になっていますが、これではクリアとなりません。
必ずus-central1で作りましょう。
補足
画像ではサブネットを172.16.0.0/24としていますが、後で172.16.1.0/24に変更しました。
以降、securesubnetworkのアドレスレンジは172.16.1.0/24ですのでご注意ください。

Cloud Shellでやる場合

# VPCネットワークを作成
gcloud compute networks create securenetwork --subnet-mode=custom

# サブネットを作成
gcloud compute networks subnets create securesubnetwork --network=securenetwork --range=172.16.1.0/24 --region=us-central1

参考:gcloud compute networks create, gcloud compute networks subnets create

要塞ホストへの外部RDPトラフィックを許可するファイアウォールルールを作成する

ファイアウォールルールは色々やり方があるのですが、今回は要塞ホストにbastionというタグを付け、そのタグをTargetとしたファイアウォールを作成することにしました。

GUIでやる場合

同じくVPC networkの画面で、Firewallをクリックし、画面上部のCREATE FIREWALL RULEをクリック。

  • Name: 任意(ここではbastion-allow-rdp)
  • Targets: Specified target tags
  • Target tags: bastion
  • Source filter: IP ranges
  • Source IP ranges: 0.0.0.0/0
  • Protocols and ports: tcp: 3389
ファイアウォールルールの作成

Cloud Shellでやる場合

gcloud compute firewall-rules create bastion-allow-rdp --allow=tcp:3389 --network=securenetwork --target-tags=bastion

参考:gcloud compute firewall-rules create

ワンポイント
Sourceを指定しないと、0.0.0.0/0になるようです。

Task2. Windows インスタンスをデプロイしてユーザー パスワードを設定する

vm-securehostのデプロイ

ナビゲーションメニューのCompute Engine > VM instancesをクリックし、画面上部のCREATE INSTANCEをクリック。

  • Name: vm-securehost
  • Zone: us-central1-a(デフォルト)
  • Machine type: n1-standard-1(デフォルト)
vm-secureホストの作成

Boot DiskはWindows Server 2016と問題文に指定があるので、Changeをクリックし、以下のように設定します。

  • Operating system: Windows Server
  • Version: Windows Server 2016 Datacenter Core
  • Boot disk typeとSize: デフォルトのまま
Boot disk設定
ワンポイント
Windows Server 2016にはCoreとCore無しがありますが、CoreはCLIのみの軽いバージョンで、Core無しはGUI付きの重いバージョンです。
このタスクではどちらでも良いので、軽い方のCoreにしておきましょう。

続いてネットワークインターフェースの設定です。

ネットワークインターフェース設定が必要なので画面下部の「Management, security, disks, networking, sole tenancy」をクリックして、メニューを開きます。

Networkタブをクリックし、Network tagとしてsecureと付けておきましょう。(後で使います。)

ネットワークインターフェースは1つ目をsecurenetwork用、2つ目をdefaultネットワーク用に設定します。

外部からアクセスさせたくないので、External IPはどちらもNoneにしておきましょう。

ネットワークインターフェース設定
ネットワークインターフェース設定

vm-bastionhostのデプロイ

vm-securehostと同様にインスタンスを作成します。

Nameをvm-bastionhostにする点と、Boot diskはWindows Server 2016 Datacenter(Core無し)を選ぶ点に注意しましょう。

Boot disk設定
注意
ここではDatacenter Coreを選ばないようにしましょう。
Datacenter Coreには後で必要となるリモートデスクトップが含まれていないため、別途インストールが必要になります。

Network tagはbastionと付けておきましょう。

vm-bastionhostはインターネットに公開するので、securenetworkのネットワークインターフェースでExternal IPをNoneにしないようにしましょう。

今回はデフォルトのEphemeralのままとしています。

External IPをEphemeralに

Task3. セキュアなホストに接続し、Internet Information Serverを構成する

vm-bastionhostからvm-securehostにアクセスするためのファイアウォールルールを構成する

インターネットからvm-bastionhostにアクセスするためのファイアウォールルールは前段で作成しましたが、vm-bastionhostからvm-securehostにアクセスするためのファイアウォールルールはまだ作成していません。

GUIでもCloud Shellでもどちらでも良いので作成しておきましょう。

vm-securehostにsecureというタグを付けているので、それを使ったファイアウォールルールを作成しました。

gcloud compute firewall-rules create secure-allow-rdp --allow=tcp:3389 --network=securenetwork --target-tags=secure --source-tags=bastion

RDP用のパスワードをリセットする

vm-bastionhostにRDPログインするのですが、このままだとIDとパスワードが分かりません。

ナビゲーションメニューのCompute Engine > VM instancesをクリックし、vm-bastionhostのRDPボタンの右側にある▼をクリック。

Set Windows passwordでパスワードをリセットし、設定されたIDとパスワードをメモしておきます。

パスワードリセット

同様にvm-securehostでもパスワードをリセットし、新しいパスワードをメモしておきます。

vm-securehostへのRDP

vm-bastionhostのRDPボタンをクリックするとRDPが始まります。

Domainは空で、IDとパスワードは先程メモしたものを入力し、OKをクリックします。

Domainは空

もし以下の画面が表示されたら、まだWindows Serverが起動完了していません。もう少し待ちましょう。

RDPが早すぎた場合

無事ログイン出来ると以下の画面が表示されます。

ログイン後の画面

左下のWindowsマークをクリックするとRemote Desktopのアイコンがあるのでクリック。

Remote Desktopを選択

接続先として、vm-securehostのInternel IP(GCPコンソールで確認できます)か、vm-securehostと入力して接続します。

注意
IDとパスワードを入力するのですが、キーボードが英字配列となっているので注意しましょう。
メモ帳(Notepad)を開き、そこにパスワードを入力してからコピペするのがオススメです。

証明書の認証が出ると思いますが、気にせずYesをクリック。

すると、Windows Server 2016 Datacenter Coreなのでコマンドプロンプトの黒い画面が出てきます。

IISのインストール

IISのインストールはPowershellから実施します。

: powershellモードに移行
powershell

# IISのインストール
Install-WindowsFeature -name Web-Server -IncludeManagementTools

参考:How To Install IIS In Windows Server 2016

本来はこのあと、IISにhttpアクセス出来るように適切なファイアウォールルールを作成する必要がありますが、今回はIISがインストールされればそれでOKなようです。

クリア!

お疲れさまでした!

このラボが含まれる、Cloud Architecture: Design, Implement, and Manageのクエスト解説は次の記事でまとめています。

良かったらそちらもご覧ください。

[Qwiklabs]Cloud Architecture: Design, Implement, and Manageの解説

2020年6月17日

PR

コメントを残す

メールアドレスが公開されることはありません。