ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
pfSenseファイアウォールを使用したドメイン・ネーム・システム・アーキテクチャへのセキュリティの追加
イントロダクション
OraStageは、再生可能エネルギー・ソリューションと革新的な電力技術を専門とするエネルギー部門のリーディング・カンパニーであり、パフォーマンス、スケーラビリティ、セキュリティを強化するためにワークロードをOracle Cloud Infrastructure(OCI)に移行するという戦略的な決定を発表しました。
OraStageが概説した特定のニーズと条件を考慮すると、同社はクラウドでハイブリッド・ドメイン・ネーム・システム(DNS)ソリューションを必要とし、ハイブリッドでは、OCI DNSサービスに加えて、独自のBerkeley Internet Name Domainバージョン9 (BIND9) DNSシステムを使用します。ここでは、構築しようとしている最終的なアーキテクチャを次のイメージに示します。
OraStage DNSの要件:
-
会社には複数の内部ドメインおよびサブドメインがあり、それらのすべてをOCIのBIND9 DNSによって解決する必要があります。OraStageは、関連するすべてのゾーンおよびレコードを管理します。これらのドメインの1つは、このチュートリアルで使用する
orastage.com
です。そのため、orastage.com
への問合せは、BIND9に転送する必要があります。 -
場合によっては、OCIネイティブ・ドメイン(
oraclevcn.com
、oraclecloud.com
など)を解決する必要があり、これはOCIプライベートDNSコンポーネント(プライベート・ビュー、エンドポイントとルールの転送、リスニング・エンドポイント)を使用して行われます。 -
すべての問合せは、pfSenseファイアウォール・インスタンスによって検査される必要があります。
-
単一障害点を回避するために、OraStageは別のDNSサーバーを使用し、OCIロード・バランサを利用してプライマリDNSとセカンダリDNS間で問合せを分散することを計画しています。
このチュートリアルシリーズは、上記の概説された要件を達成するためにステップバイステップをガイドし、最初からソリューション全体を構築します。次のリストから各チュートリアルに簡単にナビゲートできます。
-
チュートリアル1: OCIでBIND9 DNSを構成します。コンピュート・インスタンスにBIND9をインストールおよび構成し、それをOCIの2つのテスト環境用のローカルDNSサーバーとする方法について学習します。これらの環境は、それぞれ別のスポーク・ネットワークでホストされる「フロントエンド」および「バックエンド」サーバーで構成されます。BIND9サーバーは、
orastage.com
に送信されたすべてのDNS問合せを処理します。 -
チュートリアル2: OCIのBIND9 DNSシナリオで高可用性を実装します。このチュートリアルでは、セカンダリBIND9サーバーの追加と、両方のサーバー間でDNSトラフィックを分散するためのネットワーク・ロード・バランサ(NLB)の構成に重点を置きます。
orastage.com
へのDNS問合せはNLB IPに送信され、プライマリとセカンダリBIND9サーバー間の負荷が分散されます。1つのサーバーが使用できなくなった場合、DNSの解決はサービスの中断なしで続行されます。 -
チュートリアル3: OCI DNSを使用したネイティブ・ドメインの解決。
oraclevcn.com
やoraclecloud.com
などのネイティブ・ドメインを解決する必要がある場合に備えて、OCIでネイティブDNSコンポーネントを使用する特定のユース・ケースにのみ焦点を当てます。BIND9 DNSはこのチュートリアルでは使用されません。 -
チュートリアル4: pfSenseファイアウォールを使用したDNSアーキテクチャへのセキュリティの追加。OCIのハブVCNにpfSenseファイアウォールをインストールすることに焦点を当て、検査対象のファイアウォールを介して(過去のチュートリアルで実行された)DNS問合せを含むすべての東西トラフィックをルーティングするために必要なネットワーク構成を実行します。
概要
このチュートリアルでは、オープンソースのファイアウォールおよびルーター・プラットフォームであるpfSenseを活用して、DNSアーキテクチャのセキュリティを強化する方法を説明します。
DNSは、ネットワーク・インフラストラクチャの重要なコンポーネントですが、DNSスプーフィング、キャッシュ中毒、分散型サービス拒否(DDoS)などの攻撃に対して脆弱であることがよくあります。pfSenseをDNSセキュリティ対策と統合することで、堅牢な保護レイヤーを追加して、ネットワークのDNSトラフィックがセキュアで自己回復性を確保できます。そのため、DNS問合せのフィルタ、悪意のあるドメインのブロック、およびDNS全体の整合性の強化を行う方法でファイアウォールを構成することをお薦めします。
DNSサーバーの前にpfSenseファイアウォールを配置すると、どのようなメリットが得られますか。
-
トラフィックのフィルタリングとアクセス制御
-
ファイアウォールは、DNSサーバーへのアクセスを制限し、認可されたIPアドレスまたは特定のネットワークのみがDNS問合せを送信できるようにします。これにより、権限のないユーザーまたはシステムがサーバーのクエリーや悪用を防止できます。
-
アクセス制御ポリシーを適用して、正当なDNSトラフィックのみがサーバーに到達し、有害または望ましくない可能性のあるトラフィックがブロックされるようにできます。
-
-
DNSベースの攻撃からの保護
-
DNS増幅/反射攻撃の防止:ファイアウォールで、DNS増幅攻撃を検出および軽減できます。これにより、攻撃者はスプーフィングされたリクエストを送信してサーバーを圧倒します。DNS問合せトラフィックを制限またはレート制限することで、ファイアウォールはそのような攻撃の影響を最小限に抑えます。
-
DNSスプーフィング防止:ファイアウォールは、不正または悪意のあるDNSレスポンスをブロックできます。これは、DNSスプーフィングまたは中毒攻撃で使用され、ユーザーを不正なWebサイトに誤って誘導します。
-
DDoS軽減:ファイアウォールは、異常なDNSトラフィック量を監視および抑制し、攻撃者がDNSインフラストラクチャを圧倒することを防ぐことで、分散型サービス拒否(DDoS)攻撃に対する防御メカニズムを提供します。
-
-
DNS問合せの検査およびロギング
- ファイアウォールは、DNS問合せで、既知の悪意のあるドメインの問合せなど、疑わしいパターンがないか検査できます。DNSサーバーに到達する前にこれらのクエリーをブロックできるため、危険なサイトへのアクセスを防ぐことができます。
- DNS問合せログは監査目的で記録できるため、異常な動作を検出したり、潜在的なセキュリティ・インシデントをより効果的に調査したりできます。
-
DNSトンネリングの防止
- DNSトンネルは、攻撃者が DNSクエリーを介してデータを漏洩したり、漏洩したシステムと通信したりするために使用する手法です。ファイアウォールは、DNSトンネリング・アクティビティを検出およびブロックし、重要なデータ漏洩ベクトルを閉じることができます。
-
レート制限とリソース保護
- ファイアウォールは、単一ソースからのDNSリクエストの数を制限し(レート制限)、DNSサーバーの過負荷を防止できます。これにより、サーバーのパフォーマンスや可用性を低下させる可能性のある総当たり戦力や過度のDNS問合せ攻撃から保護できます。
-
ネットワーク・セグメンテーション
- DNSサーバーをファイアウォールの背後に配置することで、保護されたネットワーク・セグメント(DMZなど)内で隔離できます。これにより、DNSサーバーが危険にさらされた場合でも、残りのネットワークへの攻撃者のアクセスが制限されます。
-
セキュアなDNSプロトコルのサポート
- ファイアウォールでは、DNS over HTTPS (DoH)やDNS over TLS (DoT)などのセキュアなDNSプロトコルを適用できるため、DNSトラフィックが暗号化されます。これにより、DNS問合せおよびレスポンスによる盗聴や改ざんを防止し、中間者攻撃からユーザーを保護できます。
-
攻撃面の削減
- DNSサーバーの実際のIPアドレスをファイアウォールの背後に隠すことで、潜在的な攻撃者への暴露を減らすことができます。ファイアウォールは仲介役として機能し、パブリック・インターネットとDNSインフラストラクチャ間の防御レイヤーを示します。
全体的に、ファイアウォールをDNSサーバーの前に配置すると、不正アクセスの防止、悪意のあるトラフィックの検出、および幅広いDNS関連の脅威に対する堅牢な保護を提供することで、サーバーのセキュリティ、パフォーマンスおよび自己回復性が向上します。
目的
-
このチュートリアルの主な目的は、検査対象のpfSenseファイアウォールを介して、DNS問合せを含むすべての東西トラフィックをルーティングすることです。また、ファイアウォールのパケット取得機能を使用して、いくつかのリクエストを監視します。
-
また、パブリックWindowsジャンプ・サーバーもデプロイします。このサーバーは、OCI VCNs内の他のプライベート・インスタンス(特にpfSenseファイアウォール)を管理するためのアクセス・ポイントとして機能します。
-
このチュートリアルの終わりまでに、私たちの目標は、ハブ&スポークネットワークアーキテクチャモデルを確立することです。この設定により、ハブを介したネットワーク間のルーティング制御を一元化することで、セキュリティが強化され、OraStageのネットワーク管理が合理化され、スケーラビリティが向上するため、企業はいつでも新しいネットワークを既存のハブに追加できます。
ノート:
このチュートリアルでは、DNS固有の攻撃に対する保護機能はカバーしていません。かわりに、pfSenseファイアウォールをデプロイし、それを既存の環境に統合して、すべてのトラフィック(FE-VMからBE-VM、FE-VMからDNS-NLBなど)をルーティングすることに重点を置いています。また、ファイアウォールで基本的なアクセス制御ルールを構成する方法についても説明します。
OCIネットワーク・ファイアウォールやPalo AltoやFortiGateなどのマーケットプレイス・ネットワーク・ファイアウォールなど、別のタイプのファイアウォール・ソリューションがすでにある場合でも、このチュートリアルに従うことができます。
最終的なアーキテクチャ
前提条件
-
OCIテナンシへのアクセスと、必要なネットワーク、コンピュートおよびオブジェクト・ストレージ・サービスを管理する権限。
-
OCIネットワークのルーティングとセキュリティとその機能(Virtual Cloud Network (VCN)、ルート表、Dynamic Routing Gateway (DRG)、セキュリティ・リスト、要塞およびOCIネットワーク・ロード・バランサ)の基本的な理解。
-
DNSの基本的な理解
-
次のチュートリアルを必ず実行してください:
-
1つのVCNが必要です。VCN内の必要なデフォルト・コンポーネントをすべて取得し、それをDRGにアタッチできるように、ウィザードで作成してください。詳細は、タスク1.3: VCNsのDRGへのアタッチを参照してください。
- ハブ-VCN:パブリック・サブネットはジャンプ・サーバーをホストし、プライベート・サブネットはpfSenseファイアウォールをホストします。
-
前述の前提条件に基づいて、次のアーキテクチャをすでに構築している必要があります。
タスク1: ルーティングおよびセキュリティ・ネットワーク・コンポーネントの設定
タスク1.1: Virtual Cloud Network (Hub-VCN)の作成
ハブ-VCN (10.4.0.0/16
)がすでに作成されており、ハブ- プライベート- サブネット(10.4.0.0/24
)およびハブ- パブリック- サブネット(10.4.1.0/24
)が含まれていることを確認します。
-
左上隅のハンバーガー・メニュー(≡)をクリックします。
- 「ネットワーキング」をクリックします。
- 「仮想クラウド・ネットワーク」をクリックします。
-
前述のとおり、VCNはウィザードを使用して作成されていることを確認できるため、デフォルトで次のコンポーネントを取得できます: 3つのゲートウェイ、1つのパブリック・サブネットと1つのルート表と1つのセキュリティ・リストがアタッチされ、1つのプライベート・サブネットと1つのルート表と1つのセキュリティ・リストがアタッチされています。
ノート:
これからは、ルート表およびセキュリティ・リスト構成の一部の部分で、すべてのネットワーク(DNS-VCN (
10.0.0.0/16
)、フロントエンドVCN (10.1.0.0/16
)、バックエンドVCN(10.2.0.0/16
)、LSN-VCN (10.3.0.0/16
)、ハブVCN (10.4.0.0/16
))を1つのアドレス・ブロック(10.0.0.0/8
)に集約します。これにより、ルールの数が削減されるため、管理が容易になります。一部のシナリオでは、ハブ・トポロジおよびスポーク・トポロジ内で、トラフィックがファイアウォールを通過してセキュリティを向上させるために、スポーク・ネットワークがハブ・ネットワークからインターネット・アクセスを取得する必要がある場合があります。そのため、スポーク・サブネット・レベルでは、すべてのトラフィックをDRGにルーティングします。ただし、このチュートリアルでは、インターネット・アクセス・シナリオをデモンストレーションしていません。
タスク1.2: Hub-VCNのルーティングおよびセキュリティの構成
-
これは、2つのサブネットのそれぞれで実行する必要があります。「VCNs」ページに移動し、「Hub-VCN」をクリックします。
-
最初にパブリック・サブネットをクリックしてクリックします。
-
割り当てられたルート表である「ルート表」をクリックします。
-
次のルールを追加します。
0.0.0.0/0
- インターネット・ゲートウェイ:インターネットへの双方向アクセスを許可します。パブリックIPアドレスを使用してジャンプ・サーバーにアクセスする必要があります。
-
パブリック・サブネットのセキュリティを実行します。「サブネットの詳細」ページに移動し、割り当てられたセキュリティ・リストをクリックします。
-
イングレス・トラフィックの許可: 任意の場所からのRDPトラフィック(TCP/port 3389)。
-
すべてのエグレス・トラフィックを許可します。
-
「VCN」ページに戻り、プライベート・サブネットをクリックします。
-
割り当てられたルート表である「ルート表」をクリックします。
-
次のルールを追加します。
-
0.0.0.0/0
- NAT Gateway:必要に応じてパッケージまたはパッチをインストールするために、インターネットに一方向にアクセスできるようにします。このチュートリアルでは重要なコンポーネントではありませんが、pfSenseでインターネット・アクセスが必要な場合は、このコンポーネントを使用することをお薦めします。 -
10.0.0.0/8
- DRG: フロントエンドVCN、バックエンドVCN、DNS-VCNまたはLSN-VCNを宛先とするトラフィックをDRGにルーティングします。これは、ファイアウォールのトラフィックの検査が完了したときのように、許可されたトラフィックが転送され、このルート表を使用してDRGに送信されます。
-
-
プライベート・サブネットのセキュリティを実行します。「サブネットの詳細」ページに移動し、割り当てられたセキュリティ・リストをクリックします。
-
イングレス・トラフィックの許可: フロントエンド-VCN、バックエンド-VCN、DNS-VCNおよびLSN-VCNからのすべてのタイプのトラフィック。
-
すべてのエグレス・トラフィックを許可します。
タスク1.3: LSN-VCNのルーティングおよびセキュリティの構成
-
これは、サブネット・レベルで実行する必要があります。「VCNs」ページに移動し、「LSN-VCN」をクリックします。
-
プライベート・サブネットをクリックします。
-
割り当てられたルート表である「ルート表」をクリックします。
-
すべてのルールを削除します。
-
次のすべてのルールを1つのルールのみに置き換えます。
0.0.0.0/0
- DRG:すべてのトラフィックをDRGにルーティングします。これには、他のVCNsに送信されるトラフィック、およびインターネットに送信されるトラフィックが含まれます。
-
今はセキュリティをしよう。「サブネットの詳細」ページに移動し、割り当てられたセキュリティ・リストをクリックします。
-
DNSトラフィックを許可するすべてのイングレス・ルールを削除します。
-
次のルールをこの2つのルールのみに置き換えます。
ノート:エグレス・ルールでは何も変更しないでください。
タスク1.4: DNS-VCNのルーティングおよびセキュリティの構成
-
これは、サブネット・レベルで実行する必要があります。「VCNs」ページに移動し、「DNS-VCN」をクリックします。
-
プライベート・サブネットをクリックします。
-
割り当てられたルート表である「ルート表」をクリックします。
-
次のルールをすべて削除します。
-
次のルールを1つのルールのみに置き換えます。
0.0.0.0/0
- DRG:すべてのトラフィックをDRGにルーティングします。これには、他のVCNsに送信されるトラフィック、およびインターネットに送信されるトラフィックが含まれます。
-
今はセキュリティをしよう。「サブネットの詳細」ページに移動し、割り当てられたセキュリティ・リストをクリックします。
-
DNSトラフィックを許可するすべてのイングレス・ルールを削除します。
-
次のルールをこの2つのルールのみに置き換えます。
ノート:エグレス・ルールでは何も変更しないでください。
タスク1.5: フロントエンドVCNのルーティングおよびセキュリティの構成
-
これは、サブネット・レベルで実行する必要があります。「VCNs」ページに移動し、「フロントエンド-VCN」をクリックします。
-
プライベート・サブネットをクリックします。
-
割り当てられたルート表である「ルート表」をクリックします。
-
次のルールをすべて削除します。
-
次のルールをこの2つのルールに置き換えます。
-
0.0.0.0/0
- DRG:すべてのトラフィックをDRGにルーティングします。これには、他のVCNsに送信されるトラフィック、およびインターネットに送信されるトラフィックが含まれます。 -
Oracle Services NetworkのすべてのLINサービス- サービス・ゲートウェイ:ミラノ・リージョンのOracleサービスへのアクセスを提供するには、OCI Bastionサービスとの接続を維持するために必要です(そうでない場合)。インターネットまたはOracleサービスにアクセスするためのルールがここにあると、要塞を使用してFE-VMにアクセスできない要塞プラグインでエラーが発生します。
ノート:イングレスおよびエグレス・ルールでは何も変更しないでください。
-
タスク1.6: バックエンドVCNのルーティングおよびセキュリティの構成
-
これは、サブネット・レベルで実行する必要があります。「VCNs」ページに移動し、「バックエンドVCN」をクリックします。
-
プライベート・サブネットをクリックします。
-
割り当てられたルート表である「ルート表」をクリックします。
-
次のルールをすべて削除します。
-
次のルールをこの2つのルールに置き換えます。
-
0.0.0.0/0
- DRG:すべてのトラフィックをDRGにルーティングします。これには、他のVCNsに送信されるトラフィック、およびインターネットに送信されるトラフィックが含まれます。 -
Oracle Services NetworkのすべてのLINサービス- サービス・ゲートウェイ:ミラノ・リージョンのOracleサービスへのアクセスを提供するには、OCI Bastionサービスとの接続を維持するために必要です(そうでない場合)。インターネットまたはOracleサービスにアクセスするためのルールがここにある場合、要塞を使用してBE-VMにアクセスできない要塞プラグインでエラーが発生します。
-
ノート:イングレスおよびエグレス・ルールでは何も変更しないでください。
タスク1.7: DRGでのスポークVCNsルーティングの構成
このタスクの目的は、ネットワーク(DNS/LSN/フロントエンド/バックエンド)から送信され、DRGで受信されたすべてのトラフィックがハブに向かってルーティングされ、そこでファイアウォールによって検査されるようにすることです。
-
左上隅のハンバーガー・メニュー(≡)をクリックします。
- 「ネットワーキング」をクリックします。
- 「Dynamic Routing Gateway」をクリックします。
-
「DRG」をクリックします。
- 「VCNアタッチメント」をクリックします。A VCN attachment represents a link that connects the VCN to the DRG to enable network traffic between the VCN and external networks or other VCNs.
- すべてのVCNsがアタッチされていることがわかります。
- 「DRGルート表」をクリックします。
- 「DRGルート表の作成」をクリックします。
- ルート表の名前を入力します。
- ルート・ルールの追加:ハブ・アタッチメントにすべてをルーティングする
0.0.0.0/0
および「ハブVCNアタッチメント」を選択します。 - 「DRGルート表の作成」をクリックします。
- ルート表が正常に作成されました。
-
バックエンドVCNアタッチメントから開始して、すべてのスポークVCNアタッチメントにルート表を割り当て、クリックします。
- 「編集」をクリックします。
- 「拡張オプションの表示」をクリックします。
- 「DRGルート表」をクリックします。
- 「Spoke-DRG-RT」を選択します。
- 「変更の保存」をクリックします。
- DRGルート表がバックエンドVCNアタッチメントに正常に割り当てられました。これで、バックエンド-VCNからDRGに送信されるすべてのトラフィックがハブ-VCNにルーティングされます。
-
残りの添付について、ステップ1から6を繰り返します。
タスク2: Windowsジャンプ・サーバーのプロビジョニング
-
このタスクでは、新しいWindowsコンピュート・インスタンスをプロビジョニングし、それを利用して他のプライベート・リソースに接続します。この用途には、次のものがあります。
-
(必須)ブラウザ(HTTP/S)を介してpfSenseファイアウォールにアクセスして管理します。
-
(オプション) FE-VMインスタンスにアクセスし、テストを実行します。OCI Bastionサービスを使用するか、このサーバーを新しいジャンプ・ボックスとして使用できます。
-
-
左上隅のハンバーガー・メニュー(≡)をクリックします。
- 「計算」をクリックします。
- 「インスタンス」をクリックします。
-
「インスタンスの作成」をクリックします。
-
インスタンスの名前を入力します。
- 「イメージの変更」をクリックします。
- 「Windows」を選択します。
- Windows Server 2016 Standardイメージを選択します。
- 使用条件に同意する場合に選択します。
- 「イメージの選択」をクリックします。
- インスタンスのオペレーティング・システム(OS)がWindows Server 2016 Standardに正常に変更されました。
-
「プライマリVNIC情報」セクションで、次の情報を入力します。
- 「Hub-VCN」を選択します。
- インスタンスにパブリックIPアドレスが割り当てられるように、パブリック・サブネットを選択します。
- インスタンスにプライベートIPアドレス
10.4.1.5
を割り当てます。
- Windowsマシンの作成時に、インスタンスの作成後に初期パスワードが生成されるというノートを確認します。違いは、Linux OSではSSH鍵が認証に使用されます。
- 「作成」をクリックします。
-
ジャンプ・サーバー・コンピュート・インスタンスが正常に作成されます。次の詳細をノートにとり、インスタンスにアクセスするときに使用します。
- Public IP address.
- ユーザー名
- Initial password.
-
Windowsパーソナル・コンピュータからジャンプ・サーバーにアクセスするには、「リモート・デスクトップ接続」を開き、インスタンスのパブリックIPを入力して「接続」をクリックします。
-
「はい」をクリックします。
-
インスタンス・ページで指定した初期パスワードを入力し、「次へ」をクリックします。
-
ログインして「OK」をクリックする前に、パスワードを変更する必要があります。
-
新規パスワードを2回入力します。
-
パスワードが正常に変更されました。「OK」をクリックして続行します。
-
新しいパスワードを入力し、「Next」をクリックします。
-
ジャンプ・サーバーに正常に接続しました。
-
アーキテクチャは、次の図のようになります。
タスク3: pfSenseファイアウォールのインストールおよび構成
ノート:すでに別のタイプのファイアウォール・ソリューションがある場合は、タスク3.1から3.7をスキップして、3.8から続行できます。
タスク3.1: pfSenseイメージのダウンロード
-
Netgate WebサイトからpfSenseイメージをダウンロードします。必ず
memstick-serial
バージョンをダウンロードしてください。使用しているイメージのファイル名はpfSense-CE-memstick-serial-2.7.2-RELEASE-amd64.img.gz
です。詳細は、Netgateを参照してください。 -
インストールされるファイルは、
.gz
形式になります。抽出すると、イメージ・ファイル名がpfSense-CE-memstick-serial-2.7.2-RELEASE-amd64.img
であることがわかります。
タスク3.2: OCIオブジェクト・ストレージ・バケットの作成
このタスクでは、pfSenseイメージのアップロードに使用されるOCIオブジェクト・ストレージ・バケットを作成し、このオブジェクト・イメージを使用してOCIにカスタム・イメージを作成します。
-
左上隅のハンバーガー・メニュー(≡)をクリックします。
- 「ストレージ」をクリックします。
- 「バケット」をクリックします。
- 「バケットの作成」をクリックします。
- 「バケット名」を入力します。
- 「標準」ストレージ層を「デフォルト・ストレージ層」として選択します。
- 「作成」をクリックします。
-
ストレージ・バケットが作成されていることを確認します。
タスク3.3: pfSenseイメージのストレージ・バケットへのアップロード
-
「バケットの詳細」ページに移動します。
- バケット・ページで、下にスクロールします。
- 「アップロード」をクリックします。
-
「オブジェクトのアップロード」ページで、次の情報を入力します。
- 「ファイルの選択」をクリックし、pfSenseイメージを選択します。
- 「アップロード」をクリックします。
-
pfSenseイメージがストレージ・バケットにアップロードされている間、進行状況をモニターできます。
- pfSenseイメージが完全にアップロードされると、進捗ステータスは「終了」になります。
- 「閉じる」をクリックします。
タスク3.4: カスタム・イメージの作成
pfSenseイメージをアップロードしました。ここでは、そこからOCIカスタム・イメージを作成する必要があります。このカスタム・イメージは、pfSenseファイアウォール・インスタンスの作成に使用されます。
-
左上隅のハンバーガー・メニュー(≡)をクリックします。
- 「計算」をクリックします。
- 「カスタム・イメージ」をクリックします。
-
「イメージのインポート」をクリックします。
-
「イメージのインポート」ページで、次の情報を入力します。
- 「名前」を入力します。
- 「オペレーティング・システム」として「汎用Linux」を選択します。
- 「オブジェクト・ストレージ・バケットからインポート」を選択します。
- イメージをアップロードしたストレージ・バケットを選択します。
- 「オブジェクト名」で、バケットにアップロードしたオブジェクト(pfSenseイメージ)を選択します。
- 「イメージ・タイプ」として「VMDK」を選択します。
- 「準仮想化モード」を選択します。
- 「イメージのインポート」をクリックします。
-
カスタム・イメージはIMPORTINGです。
-
数分後、ステータスは使用可能です
タスク3.5: カスタムpfSenseイメージを使用したインスタンスの作成
-
左上隅のハンバーガー・メニュー(≡)をクリックします。
- 「計算」をクリックします。
- 「インスタンス」をクリックします。
-
「インスタンスの作成」をクリックします。
-
ファイアウォール・インスタンスの「名前」を入力します。
- 「イメージの変更」をクリックします。
- 「マイ・イメージ」を選択します。
- 「カスタム・イメージ」をクリックします。
- タスク3.4で作成したカスタム・イメージを選択します。
- 「イメージの選択」をクリックします。
- pfSenseイメージが選択されていることを確認します。
-
「プライマリVNIC情報」セクションで、次の情報を入力します。
- 「Hub-VCN」を選択します。
- プライベート・サブネットを選択します。
- インスタンスにプライベートIPアドレス
10.4.0.5
を割り当てます。
- 「SSHキーなし」を選択します。
- 「作成」をクリックします。
-
pfSenseファイアウォール・コンピュート・インスタンスが正常に作成されました。
タスク3.6: インスタンスへのpfSenseのインストール
pfSenseファイアウォールの初期インストールおよび設定を行う必要があります。実行中のインスタンスはすでに存在します。
-
pfSenseファイアウォール・ソフトウェアをインストールするには、コンソール接続を作成する必要があります。ファイアウォール・インスタンス・ページで、下にスクロールします。
- 「コンソール接続」をクリックします。
- 「Cloud Shell接続の起動」をクリックします。
-
いくつかの起動メッセージが表示されます。[ENTER]を押します。
-
著作権に関するメッセージを読み、「Accept」を選択して「ENTER」を押します。
- 「pfSenseのインストール」を選択します。
- 「OK」を選択し、「ENTER」を押します。
- 「手動ディスク設定(エキスパート)」を選択します。
- 「OK」を選択し、「ENTER」を押します。
- da0 - 47 GB MBRを選択します。
- 「Create」を選択して、「ENTER」を押します。
- 「タイプ」に、freebsdと入力します。
- 「サイズ」に、46 GBと入力します。
- 「Mountpoint」と入力します。
- 「OK」を選択し、「ENTER」を押します。
- da0s4で、46 GB BSDを選択します。
- 「Create」を選択して、「ENTER」を押します。
- 「タイプ」に、freebsd-ufsと入力します。
- 「サイズ」に、40 GBと入力します。
- 「マウントポイント」に、/と入力します。
- 「OK」を選択し、「ENTER」を押します。
/
のマウント・ポイントが作成されていることを確認します。- da0s4に、46 GB BSDと入力します。
- 「Create」を選択して、「ENTER」を押します。
- 「タイプ」に、freebsd-swapと入力します。
- 「サイズ」に、5670 MBと入力します。
- 「Mountpoint」と入力します。
- 「OK」を選択し、「ENTER」を押します。
- マウントポイントがスワップ用に作成されていることを確認します。
- 「Finish」を選択し、「ENTER」を押します。
-
「Commit」を選択して、「ENTER」を押します。
-
「Reboot」を選択して「ENTER」を押します。
-
最初のリブート後に、WANインタフェースを構成するためのいくつかの構成オプションが表示されます。「Should VLANS be set up」に、「n」と入力して「ENTER」を押します。
-
「WANインタフェース名を入力するか、自動検出(vtnet0またはa)の場合は'a'を入力します」に、
vtnet0
と入力します。 -
この設定では、インタフェースが1つしかないファイアウォールを作成しているため、LANインタフェースは構成しません。したがって、ENTER the LAN interface name or 'a' for auto-detectionの場合は、ENTERを押してこのインタフェースの設定をスキップします。
- WANインタフェース名を確認します。
- 「Do you want to continue」にyと入力し、[ENTER]を押します。
-
いくつかのメッセージがあり、構成が完了します。pfSense OSはフル・ブートを実行します。
- IPアドレスがDHCPを使用して構成されることがわかります。
- pfSenseメニューを使用して、追加の基本構成を実行します。
-
アーキテクチャは、次の図のようになります。
タスク3.7: pfSense Webグラフィック・ユーザー・インタフェース(GUI)に接続し、初期設定を完了する
インストールが完了し、pfSenseファイアウォールのWeb GUIに接続する必要があります。ただし、この前に、Hub-Public-SubnetからのHTTP/HTTPSトラフィックを許可してください。そこに配置されたジャンプ・サーバーからファイアウォールGUIに接続するためです。すべてのVCNs (10.0.0.0/8
)からのすべてのトラフィックがタスク1.2でファイアウォールを通過することをすでに許可しています。
-
pfSenseファイアウォールIPアドレスを入力します。
- Windowsインスタンスでブラウザを開き、HTTPSを使用してpfSenseファイアウォールIPに移動します。
- 「詳細」をクリックします。
-
「続行」をクリックします。
- デフォルト・ユーザー名として
admin
を入力します。 - デフォルト・パスワードとして
pfsense
を入力します。 - 「サイン・イン」をクリックします。
- デフォルト・ユーザー名として
-
「次へ」をクリックしてください。
-
「次へ」をクリックしてください。
- 「ホスト名」を入力します。
- ドメイン名を入力するか、ドメイン名をデフォルトのままにします。
- 下へスクロールし、「次へ」をクリックします。
-
「次へ」をクリックしてください。
ノート:この特定のケースでの動作は、Oracleが静的IPをDHCPサーバーに予約し、このアドレスをpfSenseファイアウォールに割り当てることです。そのため、pfSenseファイアウォールは常に同じIPアドレスを取得しますが、OCIの観点からは静的IPとなり、pfSenseの観点からはDHCPアドレスになります。
- 「WANインタフェースの構成」セクションで、「DHCP」を選択します。
- 下にスクロールし、その他のすべてをデフォルトのままにして、「次へ」をクリックします。
- 新規「管理パスワード」を入力します。
- 「Admin Password AGAIN」と入力します。
- 「次へ」をクリックしてください。
-
「リロード」をクリックします。
-
pfSenseファイアウォール構成がリロードされていることを確認します。
-
下へスクロールし、「終了」をクリックします。
-
「承諾」をクリックします。
-
「閉じる」をクリックします。
pfSenseファイアウォールがインターネットにアクセスできない場合、ダッシュボード・ページのロードに少し時間がかかります。ただし、これは、タスク1.2ですでに実行したOCI NATゲートウェイを使用して、pfSenseがインターネットにアクセスできるようにすることで修正できます。このイメージでは、pfSenseがインストールされ、ダッシュボードが表示されていることを確認します。
タスク3.8: pfSenseファイアウォールへのトラフィックのルーティング
タスク1では、VCNsおよびDRGで、スポークから送信されるすべてのトラフィックを強制的にハブ・ネットワークに入れるようにルーティングを構成しました(緑色の矢印)。このタスクでは、このすべてのトラフィックをpfSenseファイアウォール(赤色の矢印)にルーティングする方法について説明します。
これを行うには、イングレス・ルート表(転送ルート表)を作成します。これは基本的にVCNレベルで作成するルート表ですが、ハブに入るトラフィックが選択した特定の宛先(シナリオではpfSenseファイアウォール)にルーティングされるように、DRGで割り当てます。
-
pfSenseファイアウォール・インスタンスに移動します。
- 「計算」をクリックします。
- 「インスタンス」をクリックします。
-
「ファイアウォール」をクリックします。
-
下へスクロール
- 「アタッチされたVNIC」をクリックします。
- 3つのドットをクリックします。
- 「VNICの編集」をクリックします。
- 「ソース/宛先チェックのスキップ」を選択します。このステップを省略すると、ルート・ルールの作成時に問題が発生します。
- 「変更の保存」をクリックします。
-
「VCNs」ページに移動し、Hub-VCNと入力します。
-
下へスクロール
- 「ルート表」をクリックします。
- 「ルート表の作成」をクリックします。
- ルート表の「名前」を入力します。
- 「別のルート・ルール」をクリックします。
- 「ターゲット・タイプ」として「プライベートIP」を選択します。
- 「宛先CIDRブロック」に
0.0.0.0/0
と入力します。 - pfSenseのプライベートIPを入力します。
- 「作成」をクリックします。
- ルート表が正常に作成されたため、割り当てる必要があります。
-
DRGページに移動し、「ハブVCNアタッチメント」をクリックします。
-
「編集」をクリックします。
-
「拡張オプションの表示」をクリックします。
- 「VCNルート表」をクリックします。
- 「ルート表の関連付け」で、「既存の選択」を選択します。
- 作成したルート表を選択します。
- 「変更の保存」をクリックします。
-
VCNルート表が正常に割り当てられました。
ノート: DRGアタッチメントでは、2つのタイプのルート表を割り当てることができます:
- DRGルート表:タスク1.7でスポーク・アタッチメント用に作成した表。この表は、トラフィックがVCNアタッチメントのアウトされるたびにチェックされます。
- VCNルート表:このタスク3.8で作成した表。この表は、トラフィックの受信時にチェックされ、VCNアタッチメントに挿入されます。
-
この段階では、すべてのOCI関連の構成を完了し、このアーキテクチャの2つのリソース間のトラフィックが最初に検査のためにpfSenseを介してルーティングされるようにしています。ここで、FE-VMからBE-VMにpingを実行してクイック・テストを実行した場合、それは機能しますか。
確認したように、pfSenseは、明示的に許可するまで、通過するすべてのトラフィックをブロックします。これは、次のタスクで実行します。
タスク3.9: トラフィックがpfSenseを通過することを許可する
このチュートリアルでは、pfSenseの2つの機能を利用します。
-
アクセス・ルール:プロトコル、ポート番号、ソース・アドレスおよび宛先アドレスに基づいてトラフィックを許可または拒否します。
-
パケット取得: IPアドレス、パケット・タイプ、ポート番号などに基づいてフィルタを適用して、ファイアウォールが検査するパケット・レベルで受信トラフィックおよび送信トラフィックを分析します。
pfSenseではさらに多くのことを行うことができますが、ここでは、OCIにpfSenseをインストールし、OCIに適切なルーティングとセキュリティを実装して既存のネットワーク・アーキテクチャに統合することに重点を置いています。
-
このタスクでは、いくつかのシナリオで必要になるトラフィックを許可します。このチュートリアル・シリーズの集中はDNSにあるため、追加するルールはDNSトラフィック(ネイティブ・ベースとBIND9・ベースの両方)に特に関連します。次に、pfSense Web管理インタフェースに移動します。
- 「ファイアウォール」をクリックします。
- 「ルール」をクリックします。
-
pfSenseファイアウォールのデフォルト・ルールに注意してください。
最初のルール(オプション):
-
接続の詳細
- ソース:ジャンプ・サーバー(
10.4.1.5
)。 - 宛先: FE-VM (
10.1.0.5
)。 - プロトコル: SSH。
- ポート番号:
22
- 処置: 「合格」。
- 理由: ジャンプ・サーバーからFE-VMにアクセスします。要塞を使用して接続できるため、これはオプションのルールです。
- ソース:ジャンプ・サーバー(
-
「追加」をクリックします。
- 「アクション」を選択して「合格」を選択します。
- 「プロトコル」を選択して「TCP」を選択します。
- 「ソース・アドレス」に
10.4.1.5
と入力します。 - 「宛先アドレス」に
10.1.0.5
と入力します。 - 「宛先ポート」に
22
と入力します。 - 「保存」をクリックします。
- 「変更の適用」をクリックします。
- 変更が正常に適用されたことを示すメッセージが表示されます。
- ルールが追加されました。
第2ルール:
-
接続の詳細
- ソース: FE-VM (
10.1.0.5
)。 - 宛先: BE-VM (
10.2.0.5
)。 - プロトコル: ICMP。
- 処置: 「合格」。
- 理由:テストの目的で、FE-VMがBE-VMにpingされるようにする必要があります。
- ソース: FE-VM (
-
「追加」をクリックします。
- 「アクション」を選択して「合格」を選択します。
- 「プロトコル」を「ICMP」に、「サブタイプ」を「任意」に選択します。
- 「ソース・アドレス」に
10.1.0.5
と入力します。 - 「宛先アドレス」に
10.2.0.5
と入力します。 - 「保存」をクリックします。
- 「変更の適用」をクリックします。
- 変更が正常に適用されたことを示すメッセージが表示されます。
- ルールが追加されました。
第3ルール:
-
接続の詳細
- ソース: フロントエンドVCN (
10.1.0.6
)の前方。 - 宛先: LSN (
10.3.0.6
)。 - プロトコル: TCPおよびUDP。
- ポート番号:
53
- 処置: 「合格」。
- 理由: FE-VMでBE-VM (
be-vm.beprivatesubnet.backendvcn.oraclevcn.com
)を解決できるようにする必要があります。そのためには、フロントエンドVCNの前方でリスナーを問い合せることができるようにする必要があります。そのため、DNSトラフィックを許可する必要があります。
- ソース: フロントエンドVCN (
-
「追加」をクリックします。
- 「アクション」を選択して「合格」を選択します。
- 「プロトコル」を選択して「TCP/UDP」を選択します。
- 「ソース・アドレス」に
10.1.0.6
と入力します。 - 「宛先アドレス」に
10.3.0.6
と入力します。 - 「宛先ポート」に
53
と入力します。 - 「保存」をクリックします。
- 「変更の適用」をクリックします。
- 変更が正常に適用されたことを示すメッセージが表示されます。
- ルールが追加されました。
第4ルール:
-
接続の詳細
- ソース: フロントエンドVCN (
10.1.0.6
)の前方。 - 宛先: DNS-NLB (
10.0.0.110
)。 - プロトコル: TCPおよびUDP。
- ポート番号:
53
- 処置: 「合格」。
- 理由: FE-VMでBE-VM (
be.orastage.com
)を解決できるようにする必要があります。そのためには、フロントエンドVCNの前方で、バックエンドのBIND9 DNSサーバーのいずれかにトラフィックを送信するDNS-NLBを問い合せることができるようにする必要があります。そのため、DNSトラフィックを許可する必要があります。
- ソース: フロントエンドVCN (
-
「追加」をクリックします。
- 「アクション」を選択して「合格」を選択します。
- 「プロトコル」を選択して「TCP/UDP」を選択します。
- 「ソース・アドレス」に
10.1.0.6
と入力します。 - 「宛先アドレス」に
10.0.0.110
と入力します。 - 「宛先ポート」に
53
と入力します。 - 「保存」をクリックします。
- 「変更の適用」をクリックします。
- 変更が正常に適用されたことを示すメッセージが表示されます。
- ルールが追加されました。
第5ルール:
-
接続の詳細
- ソース: バックエンドVCN (
10.2.0.6
)の前方。 - 宛先: LSN (
10.3.0.6
)。 - プロトコル: TCPおよびUDP。
- ポート番号:
53
- 処置: 「合格」。
- 理由: BE-VMでFE-VM (
fe-vm.feprivatesubnet.frontendvcn.oraclevcn.com
)を解決できるようにする必要があります。そのためには、バックエンドVCNの前方でリスナーを問い合せることができるようにする必要があります。そのため、DNSトラフィックを許可する必要があります。
ノート: 第3ルールで実行したステップを繰り返しますが、今回は、バックエンドVCN (
10.2.0.6
)の前方にあるソースが異なります。 - ソース: バックエンドVCN (
第6ルール:
-
接続の詳細
- ソース: バックエンドVCN (
10.2.0.6
)の前方。 - 宛先: DNS-NLB (
10.0.0.110
)。 - プロトコル: TCPおよびUDP。
- ポート番号:
53
- 処置: 「合格」。
- 理由: BE-VMでFE-VM (
fe.orastage.com
)を解決できるようにする必要があります。そのためには、バックエンドVCNの前方で、バックエンドのBIND9 DNSサーバーのいずれかにトラフィックを送信するDNS-NLBを問い合せることができる必要があります。そのため、DNSトラフィックを許可する必要があります。
ノート: 第4ルールで実行したステップを繰り返しますが、今回は、バックエンドVCN (
10.2.0.6
)の前方にあるソースが異なります。 - ソース: バックエンドVCN (
タスク4: テストと検証
-
FE-VMインスタンスからのみテストします。
ノート: (オプション) FE-VMに接続するためにWindowsのジャンプ・サーバーを使用しますが、必要に応じて要塞を介して接続できます。
- OCI Cloud Shellで使用した秘密キーを過去のチュートリアルからWindowsインスタンスにコピーします。
- サーバーにOpenSSHをインストールします。詳細は、「技術: Windows Server 2016へのOpenSSH SFTPのインストール」を参照してください。
- SSHコマンドを実行します。
- FE-VMインスタンスに正常にログインしました。
テスト・シナリオ1
-
ネイティブ・ドメイン
*.oraclevcn.com
をテストします。FE-VMクライアント・マシンは、be-vm.beprivatesubnet.backendvcn.oraclevcn.com
を解決できる必要があります。このトラフィックはすでにpfSenseで許可されています。このテストでは、pfSenseのパケット・キャプチャ機能を使用して、トラフィックが通過していることを確認します。 -
転送トラフィック:
-
レスポンス・トラフィック:
-
WindowsマシンからpfSenseにアクセスします。
- 「診断」をクリックします。
- 「パケット取得」をクリックします。
- 「ソースIP」(順番- 10.1.0.6)および「宛先IP」(LSN - 10.3.0.6)を入力します。
53
をポート番号として入力します。- 「スタート」をクリックします
- FWDから LSNまでの DNSトラフィックをモニターできます。
-
FE-VMから、BE-VMネイティブ・ドメイン
be-vm.beprivatesubnet.backendvcn.oraclevcn.com
にpingを送信します。 -
パケット・キャプチャでは、pingを実行するたびに問合せが行われます。
-
フィルタを変更してpingトラフィックを監視します。
-
転送トラフィック:
-
レスポンス・トラフィック:
- 「ソースIP」(FE-VM - 10.1.0.5)および「宛先IP」(BE-VM - 10.2.0.5)を入力します。
- 「プロトコル」にICMPv4と入力します。
- 「スタート」をクリックします
- FE-VMからBE-VMへのpingトラフィックをモニターできます。
-
FE-VMから、BE-VM
be-vm.beprivatesubnet.backendvcn.oraclevcn.com
への別のpingを実行します。 -
「パケット・キャプチャ」で、pingトラフィックを確認します。
-
上にスクロールして「停止」をクリックし、テスト終了時にパケット取得を停止します。
-
「取得のクリア」をクリックして、別の取得を開始します。
ノート:テストでも、BE-VMからFE-VM
fe-vm.feprivatesubnet.frontendvcn.oraclevcn.com
まで、反対方向に同じステップを実行できます。このシナリオではトラフィックがすでに許可されているためです。
テスト・シナリオ2
-
会社のBIND9管理対象ドメイン
*.orastage.com
をテストします。FE-VMクライアント・マシンは、be.orastage.com
を解決できる必要があります。このトラフィックはすでにpfSenseで許可されています。このテストでは、pfSenseのパケット・キャプチャ機能を使用して、トラフィックが通過していることを確認します。 -
転送トラフィック:
-
レスポンス・トラフィック:
-
ジャンプ・サーバーからpfSenseにアクセスします。
- 「診断」をクリックします。
- 「パケット取得」をクリックします。
- 「ソースIP」(順番- 10.1.0.6)および「宛先IP」(DNS-NLB - 10.0.0.110)を入力します。
53
をポート番号として入力します。- 「スタート」をクリックします
- FWDから DNS-NLBまでの DNSトラフィックをモニターできます。
-
FE-VMから、BE-VMドメイン
be.orastage.com
にpingを実行します。 -
パケット・キャプチャでは、pingを実行するたびに問合せが行われます。
-
フィルタを変更してpingトラフィックを監視します。
-
転送トラフィック:
-
レスポンス・トラフィック:
- 「ソースIP」(FE-VM - 10.1.0.5)および「宛先IP」(BE-VM - 10.2.0.5)を入力します。
- 「プロトコル」にICMPv4と入力します。
- 「スタート」をクリックします
- FE-VMからBE-VMへのpingトラフィックをモニターできます。
-
FE-VMから、BE-VM
be.orastage.com
への別のpingを実行します。 -
「パケット・キャプチャ」で、pingトラフィックを確認します。
-
上にスクロールして「停止」をクリックし、テスト終了時にパケット取得を停止します。
-
テストが完了したら、「取得のクリア」をクリックします。
ノート:テストでも、BE-VMからFE-VM
fe.orastage.com
まで、反対方向に同じステップを実行できます。このシナリオではトラフィックがすでに許可されているためです。
まとめ
完了しました。DNSジャーニーの終わりに到達しました。
このチュートリアルでは、OraStageのDNSアーキテクチャをpfSenseで強化することに重点を置いており、様々なDNSベースの攻撃と脆弱性に対する防御の重要なレイヤーを提供します。OraStageは、トラフィックをフィルタリングし、セキュアなDNSプロトコルを適用し、悪意のあるドメインをブロックすることで、DNSサーバーが安全かつ効率的に動作することを保証します。
このシリーズでは、OCIで重要なスキルを習得しています。各チュートリアルは最後に構築されており、プログレッシブな学習アプローチに依存しながら、OCIの強固な基盤を提供します。これらのスキルは、クラウド・インフラストラクチャを効果的に管理および最適化するのに役立ちます。
- Virtual Cloud Network (VCN)のルーティングとセキュリティを設定します。
- Dynamic Routing Gateway (DRG)を設定します。
- OCI Bastionを設定して使用し、プライベート・インスタンスにアクセスします。
- Windowsジャンプ・サーバーを設定して使用し、プライベート・インスタンスにアクセスします。
- OCIでBIND9 DNSソリューションをインストールおよび構成します。
- 高可用性を実現するためにOCIネットワーク・ロード・バランサを構成および使用します。
- OCIプライベートDNSコンポーネントを構成して使用し、ネイティブ・ドメインを解決します。
- OCIにpfSenseファイアウォールをインストールおよび構成し、ハブとスポーク・アーキテクチャに統合します。
承認
- 作成者 - Anas abdallah (クラウド・ネットワーキング・スペシャリスト)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Adding Security to the Domain Name System Architecture using pfSense Firewall
G19399-02
Copyright ©2025, Oracle and/or its affiliates.