NSXの分散ファイアウォールで FQDNフィルタリングを使用する

NSX Advanced Firewallの機能のひとつであるFQDNフィルタリングをVMware Cloud on AWSの環境で試してみました。
2024.04.30

大家好,AWS事業本部の西野です。

本稿ではVMware Cloud on AWSの環境においてFQDNフィルタリングを使用するまでの手順を解説いたします。

FQDNフィルタリングとは

FQDNフィルタリングとは、事前に定義したFQDNにもとづきファイアウォールのルールを設定するための仕組みです。VMware Cloud on AWSにおいては現在のところ分散ファイアウォールでの利用のみサポートされています1

FQDNフィルタリングはアドオンであるNSX Advanced Firewallによって提供される機能であり、2024年2月以降は追加費用無しで(つまりVMware Cloud on AWSの利用費に含まれる形式で)利用できるようになりました。

Now get advanced security features included out of the box in VMware Cloud on AWS! - VMware Cloud Blog

やりたいこと

FQDNフィルタリングを利用して*.broadcom.com 宛ての通信のみをブロックしてみます。

設定手順

NSX Advanced Firewallの有効化

インベントリ -> 統合サービスからNSX Advanced Firewallの「有効化」をクリックします。

もう一度「有効化」をクリックします。

NSX Advanced Firewallの下部にアクティブと表示されていればOKです。

FQDNおよびコンテキストプロファイルの追加

NSXコンソール -> インベントリ -> プロファイル -> 属性タイプ -> FQDN -> FQDNの追加をクリックします。

FQDNフィルタリングに用いたいドメイン(今回は*.broadcom.com)を入力し、保存をクリックします。

続けて、NSXコンソール -> インベントリ -> プロファイル -> プロファイル -> コンテキストプロファイルの追加をクリックします。
コンテキストプロファイルの名称として任意の文字列(broadcomとしておきます)を入力した後に「設定」をクリックします。

「属性の名前/値」欄に先の手順で作成したFQDN(*.broadcom.com)を設定し、追加 -> 適用をクリックします。

「保存」をクリックすればコンテキストプロファイルの作成が完了します。

セグメントプロファイルの修正

FQDNフィルタリングを利用したいセグメントにおいてはVMware Cloud on AWSによって事前定義されているFQDNfiltering-spoofguard-profileを有効にする必要があります。

NSXコンソール -> ネットワーク -> セグメント -> NSX -> 対象セグメントの「編集」画面にてSpoofGuardのプロファイルをFQDNfiltering-spoofguard-profileに変更し、保存をクリックします。
今回はVMware Cloud on AWSでSDDCをデプロイした際にデフォルトで作成される sddc-cgw-network-1 にこの修正を加えました。

分散ファイアウォールルールの作成

これまでの手順が済んだらいよいよ分散ファイアウォールのルールを設定していきます。
分散ファイアウォールの設定方法について本稿では細かく解説しないので、必要に応じて下記のブログなどを参照してください。

NSXの分散ファイアウォールでインターネット向けの通信を制御する | DevelopersIO

最終的に作成したのは以下のポリシーです。

最初のルールとしてDNS用のルールを設定し、その次にFQDNフィルタリングによる許可 / 拒否ルールを設定する必要があります。

サービスとしてHTTPおよびHTTPSを選択し、コンテキストプロファイルとして先の手順で設定した broadcom を設定し、アクションとして却下を選択します。
DNSルールの詳細については以下のドキュメントをご参照ください。

特定のドメインのフィルタリング (FQDN/URL)

動作確認

curlコマンドによる対象ドメインへのアクセスにより分散ファイアウォールの動作を確認します。

ルール有効化前

# *.broadcom.com にアクセス
$ URL=https://jp.broadcom.com
$ curl -s "${URL}" | grep -oP '(?<=<title>).*(?=</title>)'
Broadcom Inc.

# *.broadcom.com 以外にアクセス
$ URL=https://www.finalfantasyxiv.com
$ curl -s "${URL}" | grep -oP '(?<=<title>).*(?=</title>)'
FINAL FANTASY XIV

ルール有効化前はいずれにもアクセス可能です。

ルール有効化後

# *.broadcom.com にアクセス
$ URL=https://jp.broadcom.com
$ curl -s "${URL}" | grep -oP '(?<=<title>).*(?=</title>)'
$ curl https://jp.broadcom.com
curl: (7) Failed to connect to jp.broadcom.com port 443 after 45 ms: Connection refused

# *.broadcom.com 以外にアクセス
$ URL=https://www.finalfantasyxiv.com
$ curl -s "${URL}" | grep -oP '(?<=<title>).*(?=</title>)'
FINAL FANTASY XIV

ルール有効化後は Connection refused となり、FQDNフィルタリングによる拒否ルールが機能していることを確認できました。

参考情報

Now get advanced security features included out of the box in VMware Cloud on AWS! - VMware Cloud Blog
NSX Advanced Firewall 機能について
NSXの分散ファイアウォールでインターネット向けの通信を制御する | DevelopersIO
特定のドメインのフィルタリング (FQDN/URL)

終わりに

このブログがほんの少しでも世界を良くできれば嬉しいです。
AWS事業本部の西野 (@xiyegen) がお送りしました。


  1. つまり、管理ゲートウェイやコンピューティングゲートウェイでは利用できません。