5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI Network FirewallとLoad Balancerの組み合わせ②

Last updated at Posted at 2025-10-10

今回は、Network FirewallをLoad Balancerの後ろで構成する方式を考えてみます。まずは、こちらのスライドをご覧ください。
image.png
Network Firewallをプライベート・サブネットに配置し、Load BalancerがプライベートIPでバックエンドのVMにアクセスする途中でNetwork Firewallがトラフィックを検査します。パブリックからのアクセスはLoad Balancerで変換されたPrivateIPだけが対象になりますが、DRG経由でのFastConnectやVPNなどのPrivateIPアクセスなど、Network Firewallを中心とした幅広いトラフィック監視としての応用も可能です。

では実際の設定方法について紹介します。

VCNの作成

VCNウィザードを使用して下記アドレスのVCNを作成する

VCN名 CIDR パブリック・サブネット プライベート・サブネット
任意 172.16.0.0/21 172.16.0.0/24 172.16.1.0/24

下記のように、Load BalancerとNetwork Firewall用のプライベート・サブネットをそれぞれ追加で作成する
image.png

Network Firewallの作成

今回は、Network FirewallをIPSとしての動作テストを行うので、通信をブロックさせるポリシーを作成する
まず最初にNetwork Firewallのポリシーをひとつ作成。作成後、ポリシーの詳細設定画面からセキュリティルールの作成をクリックし、すべてデフォルトのままで、最後のアクションだけを侵入防止を指定する
image.png

Network FirewallをNFW用のプライベート・サブネットに作成する。ポリシーは上記で作成したものを指定し、NATは有効化せずに作成。作成が完了したらNFWに割り当てられるプライベートIPアドレスを控えておく
image.png

ルート・ルールの設定

まず、新規でルート・ルールの作成と機能のルールの編集を行う

Load Balancerのサブネット用にルート・ルールを作成。デフォルトのプライベート・サブネットへのアクセスはNetwork Firewallを経由させる
image.png

Network Firewallのサブネット用にルート・ルールを作成。ルールは何も追加しない
image.png

デフォルトのプライベート・サブネットのルート・ルールを編集。ロードバランサーのパブリック・サブネットへのアクセスは、Network Firewallを経由させる
image.png

次に作成したルートルールを適用する

Load Balancerのサブネットの編集から、作成したルート表に変更する
image.png

Network Firewallのサブネットの編集から、作成したルート表に変更する
image.png

デフォルトのパブリックとプライベートのセキュリティリストのイングレス・ルールを下記のように変更する
image.png

WEBサーバーの設定

下記の2つのVMを指定のサブネットに作成する

VM名 サブネット 用途
PublicVM Load Balancerのパブリック・サブネット 通信確認用&踏み台
PrivateVM デフォルトのプライベート・サブネット LBのバックエンド・サーバ

PublicVMからPrivateVMにログインして、以下のWEBサーバ関連の設定を実行

$ sudo systemctl stop firewalld
$ sudo yum install httpd
$ sudo systemctl start httpd

テスト用のhtmlを作成して配置

$ sudo vi /var/www/html/test.html

<!doctype html>
<html>
<head><meta charset="utf-8"><title>XSS Demo</title></head>
<body>
<h1>XSS Demo</h1>
<form><input name="name"><button>送信</button></form>
<div><script>let p=new URLSearchParams(location.search).get('name'); if(p)document.write(p);</script></div>
</body>
</html>

PublicVMからURLアクセスできるか確認しておく。このアクセスはNetwork Firewallを経由しているので、接続できない場合はルート・ルールの設定が間違っている

$ curl http://PrivateVM IP/test.html
<!doctype html>
<html>
<head><meta charset="utf-8"><title>XSS Demo</title></head>
<body>
<h1>XSS Demo</h1>
<form><input name="name"><button>送信</button></form>
<div><script>let p=new URLSearchParams(location.search).get('name'); if(p)document.write(p);</script></div>
</body>

Load Balancerの作成

名前は、任意。サブネットは、LBのパブリック・サブネットを指定
image.png

バックエンド・サーバーは、PrivateVMを指定。ヘルスチェックポリシーは、プロトコルをHTTPに変更し、URLパスをHTMLのある/test.htmlにする
image.png

リスナーのトラフィック・タイプはHTTPに変更。以降は、ログ・グループなどの指定なので、お好みで指定してLBを作成する
image.png

バックエンド・セットのヘルスがOKになっていれば、OK
image.png

http://Load BalancerのPublic IP/test.htmlでアクセスできれば準備完了

image.png

以下のJava Scriptを入力して送信し、接続ができなければNetwork FirewallがXSSとして認識してブロックしていることになる

<script>alert("It's XSS ")</script>

image.png

Network FirewallのThereat Logを有効化しておけば、ログの詳細を確認できる。ログについて詳しくは、こちらのチュートリアルを参考に
image.png

また、プライベート・サブネットからのIntrenetへのアウトバンド・アクセスは、下記スライドのようにNetwork Firewallを経由させて制御させることが可能です。
image.png
必要な設定としては、以下3つ

  • プライベート・サブネットのルート・ルールで、0.0.0.0/0はNetwork Firewallに飛ばす
  • Network Firewallサブネットのルート・ルールで、0.0.0.0/0はNAT Gatewayに飛ばす
  • NAT Gatewayのルート表を新規作成し、プライベート・サブネットのアドレス(172.16.1.0/24)はNetwork Firewallに飛ばす

設定は以上です。今回はひとつのVCN内での制御でしたが、Load Balancerのバックエンドセットは異なるVCNを指定することもできるので、その場合でもNetwork FirewallのHub&Spokeという構成で組み入れることも可能です。
応用的な使い方ですが、こちらの資料で紹介していますのでご参考にして下さい。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?