こんにちは、こえじまです。
GCPのProfessional Cloud Architect受験に向け、Qwiklabsのハンズオンを勉強中です。
今回はWindowsの要塞ホストを使用したセキュアなRDPの構成(GSP303)の解説をします。
シナリオ(抜粋)
あなたの会社で新しいクラウドアプリケーションサービスをデプロイすることになりました。
セキュアな本番環境用 Windows サーバーを実現するために、新しい VPC ネットワーク環境を構築し、外部ネットワークからアクセスは要塞(ようさい)ホストからのRDPのみに制限する必要があります。
構成するインスタンスはデフォルト VPCネットワークからモニタリングするため、デフォルトVPC ネットワークへの内部接続用にネットワークインターフェースが必要となります。
ではやっていきましょう。
Task1. VPCネットワークを作成する
要塞ホスト用のVPCネットワークおよび、要塞ホストへのアクセスに必要なファイアウォールルールを作成していきます。
[aside]ワンポイント
要塞ホストは踏み台ホストとも言われ、インターネットと内部ネットワークの境界となるインスタンスのことを指します。
英語だとBastionと表現されることが多いです。
[/aside]
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)
[aside type=”warning”]注意
画像ではRegionがasia-northeast1(東京)になっていますが、これではクリアとなりません。
必ずus-central1で作りましょう。
[/aside]
[aside]補足
画像ではサブネットを172.16.0.0/24としていますが、後で172.16.1.0/24に変更しました。
以降、securesubnetworkのアドレスレンジは172.16.1.0/24ですのでご注意ください。
[/aside]
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
[aside]ワンポイント
Sourceを指定しないと、0.0.0.0/0になるようです。
[/aside]
Task2. Windows インスタンスをデプロイしてユーザー パスワードを設定する
vm-securehostのデプロイ
ナビゲーションメニューのCompute Engine > VM instancesをクリックし、画面上部のCREATE INSTANCEをクリック。
- Name: vm-securehost
- Zone: us-central1-a(デフォルト)
- Machine type: n1-standard-1(デフォルト)
Boot DiskはWindows Server 2016と問題文に指定があるので、Changeをクリックし、以下のように設定します。
- Operating system: Windows Server
- Version: Windows Server 2016 Datacenter Core
- Boot disk typeとSize: デフォルトのまま
[aside]ワンポイント
Windows Server 2016にはCoreとCore無しがありますが、CoreはCLIのみの軽いバージョンで、Core無しはGUI付きの重いバージョンです。
このタスクではどちらでも良いので、軽い方のCoreにしておきましょう。
[/aside]
続いてネットワークインターフェースの設定です。
ネットワークインターフェース設定が必要なので画面下部の「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無し)を選ぶ点に注意しましょう。
[aside type=”warning”]注意
ここではDatacenter Coreを選ばないようにしましょう。
Datacenter Coreには後で必要となるリモートデスクトップが含まれていないため、別途インストールが必要になります。
[/aside]
Network tagはbastionと付けておきましょう。
vm-bastionhostはインターネットに公開するので、securenetworkのネットワークインターフェースでExternal IPをNoneにしないようにしましょう。
今回はデフォルトの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をクリックします。
もし以下の画面が表示されたら、まだWindows Serverが起動完了していません。もう少し待ちましょう。
無事ログイン出来ると以下の画面が表示されます。
左下のWindowsマークをクリックするとRemote Desktopのアイコンがあるのでクリック。
接続先として、vm-securehostのInternel IP(GCPコンソールで確認できます)か、vm-securehostと入力して接続します。
[aside type=”warning”]注意
IDとパスワードを入力するのですが、キーボードが英字配列となっているので注意しましょう。
メモ帳(Notepad)を開き、そこにパスワードを入力してからコピペするのがオススメです。
[/aside]
証明書の認証が出ると思いますが、気にせず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のクエスト解説は次の記事でまとめています。
良かったらそちらもご覧ください。
[kanren2 postid=”2317″]
コメント