次の方法で共有


FreeBSD のパケット フィルターを使用してAzure 内にセキュア ファイアウォールを作成する方法

この記事では、一般的な Web サーバー シナリオで、Azure Resource Manager テンプレートを通して FreeBSD の パケット フィルターを使用することで、NAT ファイアウォールをデプロイする方法について説明します。

PF とは何か

PF (パケット フィルター、pf とも表記します) は、BSD ライセンスのステートフルなパケット フィルターであり、ファイアウォール ソフトウェアの中心部です。 PF は急速に進化し、現在は、利用可能なその他のファイアウォールを上回る多様な利点を備えています。 ネットワーク アドレス変換 (NAT) は、最初から PF に含まれており、その後、パケット スケジューラとアクティブ キュー管理が PF に統合され、ALTQ の統合によって PF の構成を通じて構成できるようになっています。 フェールオーバーと冗長性のための pfsync と CARP、セッション認証のための authpf、複雑な FTP プロトコルのファイアウォール処理を容易にするための ftp-proxy などの機能も PF を拡張しています。 要するに、PF は、強力かつ機能豊富なファイアウォールです。

はじめに

Web サーバー用のクラウドにセキュア ファイアウォールを設定することに関心があるのであれば、今すぐ始めましょう。 Azure Resource Manager テンプレートで使用されているスクリプトを適用して、ネットワーク トポロジを設定することもできます。 Azure Resource Manager テンプレートは、PF を使用して NAT/リダイレクトを実行する 1 台の FreeBSD 仮想マシンと、Nginx Web サーバーがインストールされ構成されている 2 台の FreeBSD 仮想マシンをセットアップします。 NAT/リダイレクト仮想マシンは、2 台の Web サーバーのエグレス トラフィックに対する NAT の実行に加え、HTTP 要求をインターセプトして、ラウンド ロビン方式で 2 つの Web サーバーにリダイレクトします。 VNet はプライベートなルーティング不能 IP アドレス空間 10.0.0.2/24 を使用します。テンプレートのパラメーターは変更することができます。 Azure Resource Manager テンプレートは、VNet 全体のルート テーブルを定義することもできます。これは、宛先 IP アドレスに基づいて Azure の既定のルートをオーバーライドするために使用される個別のルートのコレクションです。

NAT インスタンス上のパブリック IP アドレスを示す図。これは、ラウンドロビン方式によって、Nginx Web サーバーをホストする 2 つのバックエンド仮想マシンにリダイレクトされます。

Azure CLI を使用してデプロイする

最新の Azure CLI がインストールされ、az login を使用して Azure アカウントにログインしている必要があります。 az group create を使用して、リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを West US の場所に作成します。

az group create --name myResourceGroup --location westus

次に、az deployment group create を使用して pf-freebsd-setup テンプレートをデプロイします。 azuredeploy.parameters.json を同じパスにダウンロードし、独自のリソース値 (adminPasswordnetworkPrefixdomainNamePrefix など) を定義します。

az deployment group create --resource-group myResourceGroup --name myDeploymentName \
    --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/pf-freebsd-setup/azuredeploy.json \
    --parameters '@azuredeploy.parameters.json' --verbose

約 5 分後に、情報 ("provisioningState": "Succeeded") が表示されます。 これで、フロントエンド VM (NAT) に対して ssh を実行するか、ブラウザーでフロントエンド VM (NAT) のパブリック IP アドレスまたは FQDN を使用して Nginx Web サーバーにアクセスできます。 次の例は、myResourceGroup リソース グループのフロントエンド VM (NAT) に割り当てられている FQDN とパブリック IP アドレスの一覧を示します。

az network public-ip list --resource-group myResourceGroup

次のステップ

Azure 内に独自の NAT を設定することを望んでいますか? 無料だが強力なオープン ソースを使用したいですか? パブリック フォルダーの使用をお勧めします。 pf-freebsd-setup テンプレートを使用することで、一般的な Web サーバー シナリオで FreeBSD の PF を使用してラウンド ロビン方式で負荷分散する NAT ファイアウォールを Azure 内にほんの 5 分で設定できます。

Azure に提供されている FreeBSD の詳細については、「Azure の FreeBSD の概要」を参照してください。

PF の詳細については、FreeBSD ハンドブックまたはPF-ユーザーズ ガイド を参照してください。