こんにちは。s.nishimuraです。
今回は業務でNetwork Firewallの構築を行いましたので、
構築手順とともに構築時のポイントや注意点をまとめ、本記事にまとめました。
目次
Network Firewallとは何者?
その名の通り、ファイアウォールです。
Oracle Cloud Infrastructure上で提供されるファイアウォール機能です。
以降はNetwork FirewallをNFWと表記します。
NFWはPalo Alto社の脅威エンジンを搭載し、マルウェアやスパイウェアなどを
レイヤー3/4レベルでIPS(脅威防御)/IDS(脅威分析)を行うものです。
NFWの機能紹介および、ユースケースはドキュメントとして公開されています。
詳細な構成例については下記リンクを参照ください。
今回の検証で使ったリソース
NFWを使い通信制御およびIPS/IDSを実現する環境を構築します。
今回の検証で使ったリソースは以下の通りです。
- VCN
- サブネット
- ルート表
- セキュリティ・リスト(NSGでも可)
- インターネット・ゲートウェイ
- NFW
- Computeインスタンス
NFWを構築する場合は外からの通信をNFW専用のサブネットおよびNFWに通してから他のサブネットに流す必要があります。
NFW専用のサブネットおよびNFWの通信制御を実現するための構成図は下記です。
環境構築
VCN作成
まずは構成図のネットワークを作成します。
OCIコンソールのトップ画面にあるメニューより、
ネットワーキング - 仮想クラウド・ネットワークを選択します。
※今回はシンプルな構成となっていますが、ハブアンドスポーク形式で実装する場合はDRGでVCN間を接続したもの作成します。
VCNを以下の通りで作成します。
- 名前:vcn-verification
- コンパートメントに作成:<コンパートメントを指定>
- IPv4 CIDRブロック:10.0.0.0/16
- IPv4 CIDRブロック このVCNでDNSホスト名を使用:有効
設定が完了しましたら、「VCNの作成」ボタンをクリックします。
インターネット・ゲートウェイ作成
作成した仮想クラウド・ネットワークから、インターネット・ゲートウェイを選択します。
【インターネット・ゲートウェイ】
- 名前:igw
- コンパートメントに作成:<コンパートメントを指定>
作成が完了したら、「インターネット・ゲートウェイの作成」ボタンをクリックします。
セキュリティ・リスト作成
作成した仮想クラウド・ネットワークから、セキュリティ・リストを選択します。
以下2つのセキュリティ・リストを作成してください。
【NFWサブネット】
- 名前:sl-subnet-nfw
- コンパートメントに作成:<コンパートメントを指定>
- イングレスのルール許可
- ルール1
- ステートレス:無効
- ソースタイプ:CIDR
- ソースCIDR:0.0.0.0/0
- IPプロトコル:すべてのプロトコル
- ルール1
- エグレスのルール許可
- ルール1
- ステートレス:無効
- 宛先タイプ:CIDR
- 宛先CIDR:0.0.0.0/0
- IPプロトコル:すべてのプロトコル
- ルール1
【Computeサブネット】
- 名前:sl-subnet-compute
- コンパートメントに作成:<コンパートメントを指定>
- イングレスのルール許可
- ルール1
- ステートレス:無効
- ソースタイプ:CIDR
- ソースCIDR:10.0.1.0/24
- IPプロトコル:すべてのプロトコル
- ルール1
- エグレスのルール許可
- ルール1
- ステートレス:無効
- 宛先タイプ:CIDR
- 宛先CIDR:0.0.0.0/0
- IPプロトコル:すべてのプロトコル
- ルール1
作成が完了したら、「セキュリティ・リストの作成」ボタンをクリックします。
ルート表作成
作成した仮想クラウド・ネットワークから、ルート表を選択します。
以下3つのルート表を作成してください。
【インターネット・ゲートウェイ用】
- 名前:rt-igw
- コンパートメントに作成:<コンパートメントを指定>
【NFWサブネット用】
- 名前:rt-subnet-nfw
- コンパートメントに作成:<コンパートメントを指定>
【Computeサブネット用】
- 名前:rt-subnet-compute
- コンパートメントに作成:<コンパートメントを指定>
作成が完了したら、「ルート表の作成」ボタンをクリックします。
サブネット作成
作成した仮想クラウド・ネットワークから、サブネットを選択します。
以下2つのサブネットを作成してください。
【NFWサブネット】
- 名前:subnet-nfw
- コンパートメントに作成:<コンパートメントを指定>
- サブネットタイプ:リージョナル(推奨)
- IPv4 CIDRブロック:10.0.1.0/24
- ルート表:rt-subnet-nfw
- サブネット・アクセス:パブリック・サブネット
- セキュリティ・リスト:sl-subnet-nfw
【Computeサブネット】
- 名前:subnet-compute
- コンパートメントに作成:<コンパートメントを指定>
- サブネットタイプ:リージョナル(推奨)
- IPv4 CIDRブロック:10.0.2.0/24
- ルート表:rt-subnet-compute
- サブネット・アクセス:パブリック・サブネット
- セキュリティ・リスト:sl-subnet-compute
作成が完了したら、「サブネットの作成」ボタンをクリックします。
NFW構築
ここまででNFWを構築するための環境が整いました。
NFWの構築は以下の順序です。
- NFWポリシーの作成
- NFWポリシーに対して、セキュリティ・ルールの作成
- NFWの作成
NFWポリシー作成
NFWは作成時にNFWポリシーをアタッチする必要があります。
なので、これからNFWポリシーを作成します。
OCIコンソールのトップ画面にあるメニューより、
アイデンティティとセキュリティ - ネットワーク・ファイアウォール・ポリシーを選択します。
【NFWポリシー作成】
- 名前:network_firewall_policy_001
- コンパートメントに作成:<コンパートメントを指定>
作成が完了したら、「ネットワーク・ファイアウォール・ポリシーの作成」ボタンをクリックします。
NFWポリシーを作成すると以下の画面が表示されます。
次にセキュリティ・ルールを作成します。
セキュリティ・ルールを作成することで、実際のNFWの動作が決まります。
セキュリティ・ルール作成時にはルール・アクションの指定があります。
ルール・アクションは次の5種類があり、それぞれ機能が異なっています。
ルール・アクション | 説明 |
---|---|
トラフィックの許可 | トラフィックを許可するアクションをとります。指定のIPアドレスやURLからのアクセスを許可するために使用します。 |
トラフィックのドロップ | トラフィックを遮断するアクションをとります。NFW側でパケットをドロップする処理が入り、ブラウザ上では読み込みが続く(応答が返らない)状態となります。 |
トラフィックの拒否 | トラフィックを遮断するアクションをとります。NFW側でパケットを拒否する処理が入り、ブラウザ上ではアクセスが拒否された(応答が返る)状態となります。 |
侵入検知 | Palo Alto Networksの脅威分析エンジンを用いて、脆弱性やマルウェア、スパイウェア等からの攻撃を検知します。検知だけになるため、攻撃を受けたことをログに記録する機能として使います。 |
侵入防止 | 侵入検知とは異なり、同じ脅威分析エンジンを用いて脆弱性やマルウェア、スパイウェア等からの攻撃トラフィックを遮断します。侵入検知と侵入防止はセットで使用するのがベターです。 |
ここで注意して頂きたい点があります。
NFWの特徴である侵入防止が動作するためには、セキュリティ・ルールの1番目に設定する必要があります。
また、侵入検知はセキュリティ・ルールの一番後ろに設定します。
ここで重要になるのは、下記のルール・アクションの動作順序の7番です。
ルール・アクションの動作順序(公式ドキュメント: ファイアウォール・ポリシー・ルールについてより抜粋)
1. ファイアウォールによって、復号化ルールが優先度リストの順序で評価されます。
2. 復号化ルールがパケット情報に一致すると、指定したルール・アクションがファイアウォールによって適用されます。
3. ルール・アクションが適用されると、ファイアウォールではそれ以上の復号化ルールは評価されません。
4. パケット情報が復号化ルールに一致しない場合、ファイアウォールはパケットを復号化しません。
5. ファイアウォールによって、セキュリティ・ルールが優先度リストの順序で評価されます。
6. セキュリティ・ルールがパケット情報に一致すると、指定したルール・アクションがファイアウォールによって適用されます。
7. ルール・アクションが適用されると、ファイアウォールではそれ以上のセキュリティ・ルールは評価されません。
8. パケット情報がセキュリティ・ルールに一致しない場合、ファイアウォールはパケットを削除します。
理由として、トラフィックの許可やドロップ、拒否をセキュリティ・ルールの最初に設定すると、
条件に一致した場合は以降のセキュリティ・ルールを評価しない仕様があります。
つまりNFWにおけるセキュリティ・ルールは、
- 侵入防止で悪意のある通信を遮断する
- 侵入検知で侵入防止が防げなかった通信を記録する
という順序でルールを設計していく必要があります。
また、トラフィックの許可や拒否をセキュリティ・ルールに追加する場合は、
1と2の間に入れてください。
それでは実際に、セキュリティ・ルールを作成します。
【セキュリティ・ルール作成】
- セキュリティ・ルール1
- 名前:security_rule_001
- 一致条件
- ソースアドレス:任意のアドレス
- 宛先アドレス:任意のアドレス
- アプリケーション:任意のアプリケーション
- サービス:任意のサービス
- URL:任意のURL
- ルール・アクション:侵入防止
- ルールの順序:リストの最初のルール
- セキュリティ・ルール2
- 名前:security_rule_002
- 一致条件
- ソースアドレス:任意のアドレス
- 宛先アドレス:任意のアドレス
- アプリケーション:任意のアプリケーション
- サービス:任意のサービス
- URL:任意のURL
- ルール・アクション:侵入検知
- ルールの順序:リストの最後のルール
作成が完了したら、「セキュリティ・ルールの作成」ボタンをクリックします。
セキュリティ・ルールを作成すると以下のようになります。
NFW作成
前項で作成したNFWポリシーをアタッチしたNFWの作成を行います。
OCIコンソールのトップ画面にあるメニューより、
アイデンティティとセキュリティ - ネットワーク・ファイアウォールを選択します。
【NFWの作成】
- 名前:firewall
- コンパートメントに作成:<コンパートメントを指定>
- ネットワーク・ファイアウォール・ポリシー:network_firewall_policy_001
- 強制ポイント
- 仮想クラウド・ネットワーク:vcn-verification
- サブネット:subnet-nfw
- ネットワーク・セキュリティ・グループを使用してトラフィックを制御:無効
- IPアドレスをサブネットからファイアウォールに手動で割り当てます:有効
- ネットワーク・ファイアウォール・サブネットIPv4アドレス:10.0.1.11
※1:
「ネットワーク・セキュリティ・グループを使用してトラフィックを制御」を無効にする理由は、
今回の構築手順ではセキュリティ・リストを使用して、通信許可する制御を行っています。
リソース毎にNSGを使用して通信許可する設計方針の場合は、本設定項目を有効化してください。
※2:
「IPアドレスをサブネットからファイアウォールに手動で割り当てます」を有効にする理由は、
無効にした場合はサブネット内のランダムなIPアドレスが払い出されるため、
IPアドレスを固定することでIPアドレスの管理がしやくなります。
作成が完了したら、「ネットワーク・ファイアウォールの作成」ボタンをクリックします。
デプロイ完了までに約40分ほど要します。
ルート表・ルール作成
先ほど作成したルート表へルール(通信方向の定義)を追加します。
ここでは、前項で設定したNFWのプライベートIPが必要になります。
理由はルート表へNFWのプライベートIPを追加することで、NFWを経由した通信経路が出来上がります。
NFWの通信制御および防御に必要な設定項目です。
OCIコンソールのトップ画面にあるメニューより、
ネットワーキング - 仮想クラウド・ネットワークを選択します。
作成済みの各ルート表に対して、下記ルールを追加してください。
【インターネット・ゲートウェイ用】
- ルート・ルール1
- ターゲット・タイプ:プライベートIP
- サブネットまたはVLANコンパートメント:<コンパートメントを指定>
- 宛先タイプ:CIDRブロック
- 宛先CIDRブロック:10.0.2.0/24
- ターゲット選択:10.0.1.11 <NFWのプライベートIP>
【NFWサブネット用】
- ルート・ルール1
- ターゲット・タイプ:インターネット・ゲートウェイ
- 宛先CIDRブロック:0.0.0.0/0
- ターゲット・インターネット・ゲートウェイ:igw
【Computeサブネット】
- ルート・ルール1
- ターゲット・タイプ:プライベートIP
- サブネットまたはVLANコンパートメント:<コンパートメントを指定>
- 宛先タイプ:CIDRブロック
- 宛先CIDRブロック:0.0.0.0/0
- ターゲット選択:10.0.1.11 <NFWのプライベートIP>
追加が完了したら、「ルート・ルールの追加」ボタンをクリックします。
インターネット・ゲートウェイへルート表の割り当て
作成したルート表をインターネット・ゲートウェイへ割り当てます。
※筆者はインターネット・ゲートウェイへルート表を割り当てを忘れて、
コンピュートに繋がりませんでした。。。
【igwのルート表】
- ルート表:rt-igw
割り当てが完了したら、「別のルート表の関連付け」ボタンをクリックします。
機能確認
それでは実際にコンピュートへ接続してみます。
今回は、Oracle LinuxとWindows Serverのコンピュートを用意しました。
コンピュートの作成方法については割愛させていただきます。
<接続確認:Oracle Linux>
作成したLinuxマシンへSSH接続します。
ここでは、SSH接続が問題なくできるか確認を行います。
【Oracle Linux 9】
- コンピュート名(ホスト名):instance-20250613-1237-linux
- プライベートIPアドレス:10.0.2.11
- パブリックIPアドレス:有効
<NFWのログ>
ログ上にポート22番のアクセスログが表示されると、NFWを経由した通信ができていることがわかります。
<接続確認:Windows Server>
作成したWindows Serverへリモートデスクトップ接続します。
ここでは、リモートデスクトップ接続が問題なくできるか確認を行います。
【Windows Server】
- コンピュート名(ホスト名):instance-20250613-0953-windows
- プライベートIPアドレス:10.0.2.21
- パブリックIPアドレス:有効
<NFWのログ>
ログ上にポート3389番のアクセスログが表示されると、NFWを経由した通信ができていることがわかります。
追加情報
2025年6月24日にNATルール機能がNFWへ追加されました。
NATルール機能が追加されたことで、NFW構築時の注意点は以下となります。
- NFW作成時および、既存のNFWの編集画面に「ファイアウォールでのNAT有効化」ボタンが追加される
- NFWポリシーにNATルールが入った状態で、ポリシーをNFWにアタッチすると自動的にNAT機能が有効になる
- NFWへのNAT有効後は自動的にプライベートIPアドレスがランダムで払い出される
- 自動的に払い出されたプライベートIPアドレス経由で、NFWを介した通信が行われる
詳細につきましては、下記のリリースノートをご確認ください。
【リリースノート】
ファイアウォール・ポリシーでネットワーク・アドレス変換(NAT)ルールが使用可能に
最後に
今回のブログはNFWの構築時に注意すべきポイントを交えつつ、
NFWの環境を使用した環境構築手順を紹介させて頂きました。
NFWを構築するにあたり、鍵となるのはルート表の割当て内容とNFWポリシーの記載順序です。
NFWはIPS/IDSの機能を持ち合わせているため、外部からの攻撃に対して防御を行うために有効です。
そのためIPアドレスやURLに対しての制御がしやすく、通信要件をまとめると外部または社内接続時のファイアウォールとして活用できます。
反面、料金が高い(1日あたり約8000円)なので、導入の際はコストに見合うか検討してください。
私の考えとしては、セキュリティ・リストやNSGには無い通信制御機能がありますので一考の価値があると思いました。
最後まで見て頂き、ありがとうございました。