WVD用にAzure Firewallを設定し、インターネットアクセスを制御する
Windows Virtual Desktop (WVD)のセッションホストから、許可されたサービスにのみ接続させる、またネットワークレベルで許可/拒否されたログを取る方法です。
下記のようなシンプルな構成で進めます。赤囲みしたコンポーネント以外のWVD環境はあるものとして進めます。(つまり、既存のWVD環境に後付けできます)
要件
- ホストプール内のセッションホスト(仮想デスクトップ)からのインターネットアクセスを制御したい
- 既定ではすべてのアクセスを禁止したい
- 許可されたサービスにのみ接続させたい
- ファイアウォールに来た通信は許可/拒否ともにログを取っておく
Azure Firewallの設定
ルールの設定
ルールの設定
「Windows Virtual Desktop へのホスト プールの送信アクセス」に従って設定します。
アプリケーションルール
上のドキュメントに加え、以下の4つを追加します。
-
FQDNタグ
WindowsDiagnostics
WindowsUpdate
-
ターゲットのFQDN
-
*xt.queue.core.windows.net
へのhttps
-
*.ingest.monitor.core.windows.net
へのhttps
-
ネットワークルール
KMSのルールを追加します。
ネットワークルールは最終的には下記のようになります。
DNSは今回Firewallを通らずに、ルーティングテーブルで直送するため、ここでは記述していません。DNSがFirewallを通る環境では記述する必要があります。
参考
ログの設定
ルーティングテーブルの設定
ルートの作成
AD(DNS)など自分の管理下にあるサービスへは直接ルーティングし、それ以外はすべてAzure Firewall (仮想アプライアンスという扱いになります)にルーティングする設定を行います。
- 環境の例
名前 | ルーティング先 |
---|---|
default | Azure Firewallへのデフォルトルート |
mgmt | AD DC (DNS) があるVNet |
サブネットへの割り当て
ホストプールのあるサブネットに関連付けます。ホストプール以外のサブネットには関連付けません。
下記の例はhostという名前がついたサブネットがホストプールのあるサブネットになっています。NSGがあってもかまいません。
動作確認
セッションホストの再起動
ルーティングテーブルを設定するため、セッションホストを再起動します。
WVDログイン
WVDのセッションホストにログインし、Edgeなどブラウザでどこかにアクセスして、つながらないことを確認します。
ログの確認
拒否したログを確認してみます。
AzureDiagnostics
| where Category == "AzureFirewallApplicationRule"
| search "Deny"
| parse msg_s with Protocol " request from " SourceIP ":" SourcePort:int " to " FQDN ":" *
| project TimeGenerated,Protocol,FQDN
下記のような表示がされると思います。(環境によって違います)
ここまでで、インターネットに出られない環境ができました。
Azure Monitorをファイアウォールで通す (オプション)
Azure Monitor for WVDを利用している場合は、セッションホストのエージェントからログをLog Analyticsのワークスペースに書き出せるようにする必要があります。ログは、ネットワーク通信で行われ、ファイアウォールの要件が定義されています。
これに従い、Azure Firewallのアプリケーションルールを定義します。
Office 365をファイアウォールで通す
Office 365 URL および IP アドレス範囲が公開されていますので、これに従ってルールを設定します。
Microsoft 365 Common および Office Onlineはすべての基礎になるものなので、これを設定し、必要なアプリケーションを足していきます。
例えばTeamsの場合は、このようにしてもよいでしょう。
アプリケーションサイトを通す
例えばGoogleを通す場合は下記のようにします。(実際には、関連サイトなどを登録する必要があります)
留意点
実環境で必要なサービスへの許可ルール設定
ここではシンプルな構成で解説しましたので、実際の環境では足らないこともあると思います。例えばWVDのベース機能で見ても、FSLogixのプロファイル置き場に対して許可ルールを設定しないといけないことがあると思います。
事前にわかっていることは初めから設定できますが、それ以外はAzure FirewallでDenyしたパケットのログを見ながら通していくとよいでしょう。
-
RDP Shortpathが使えない (今のところ)
「RDP Shortpath の接続シーケンス」や「Azure VM の外部接続 (SNAT) オプション まとめ」を合わせて考えると、下記のようになってつながらないものと思われます。
- セッションホストにより、プライベートおよびパブリックの IPv4 と IPv6 のアドレスの一覧をペイロードに載せてクライアントに送信 (アドレスは変換されない)
- クライアントでは、バックグラウンド スレッドが開始され、提供されたホストの IP アドレスの 1 つに対して、UDP ベースの並列トランスポートを直接確立しようと試行 (クライアント -> ホスト)
- セッションホストではクライアントからのUDPパケットを受領
- セッションホストからクライアントに対してUDPパケットを送信
- ルーティングテーブルに従ってAzure Firewallにルーティング
- Azure FirewallでSNATがかかり、送信元アドレスが変更される
- クライアント(もしくは中間のNATルーター)では未知のアドレスからのUDP 3390が届くので破棄
参考
実環境で必要なサービスへの許可ルール設定
ここではシンプルな構成で解説しましたので、実際の環境では足らないこともあると思います。例えばWVDのベース機能で見ても、FSLogixのプロファイル置き場に対して許可ルールを設定しないといけないことがあると思います。
事前にわかっていることは初めから設定できますが、それ以外はAzure FirewallでDenyしたパケットのログを見ながら通していくとよいでしょう。
RDP Shortpathが使えない (今のところ)
「RDP Shortpath の接続シーケンス」や「Azure VM の外部接続 (SNAT) オプション まとめ」を合わせて考えると、下記のようになってつながらないものと思われます。
- セッションホストにより、プライベートおよびパブリックの IPv4 と IPv6 のアドレスの一覧をペイロードに載せてクライアントに送信 (アドレスは変換されない)
- クライアントでは、バックグラウンド スレッドが開始され、提供されたホストの IP アドレスの 1 つに対して、UDP ベースの並列トランスポートを直接確立しようと試行 (クライアント -> ホスト)
- セッションホストではクライアントからのUDPパケットを受領
- セッションホストからクライアントに対してUDPパケットを送信
- ルーティングテーブルに従ってAzure Firewallにルーティング
- Azure FirewallでSNATがかかり、送信元アドレスが変更される
- クライアント(もしくは中間のNATルーター)では未知のアドレスからのUDP 3390が届くので破棄
Author And Source
この問題について(WVD用にAzure Firewallを設定し、インターネットアクセスを制御する), 我々は、より多くの情報をここで見つけました https://qiita.com/takeokams/items/a69034408961b1954c54著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .