前提
NSG(ネットワークセキュリティグループ)のソースタイプとしてCIDRのほかにNSGを選択できるということを知った。
https://docs.oracle.com/ja-jp/iaas/Content/Network/Concepts/securityrules.htm#sec_rules_parts
ソース・タイプ:CIDR, NSG★, サービス
NSGのセキュリティルールを記載する際、ソースタイプをNSGにして実際に通信できることと、そのほかの場所からは通信できないことを検証する
構成図&方針
・FLB用、VM用のNSGを作成
・FLBはパブリックサブネット、VMはプライベートサブネットに配置
・NSG_FLBをFLBにアタッチ、VM_NSGをVMのVNICにアタッチ
・FLBのバックエンドと通信するIPアドレスは変わることがある(公式ドキュメント)がNSGをFLBにアタッチしているので変わっても大丈夫
・NSG_FLB ルール(FLBにアタッチ)
| 方向 | ソース | 宛先 | プロトコル | ポート | ステートフル | 用途 |
|---|---|---|---|---|---|---|
| イングレス | 0.0.0.0/0 | NSG_FLB | TCP | 80 | 有効 | インターネットからのイングレス通信許可 |
| エグレス | NSG_FLB | NSG_VM | TCP | 80 | 有効 | FLB → VM へのアウトバウンド通信許可 |
・NSG_VM ルール(インスタンスのVNICにアタッチ)
| 方向 | ソース | 宛先 | プロトコル | ポート | ステートフル | 用途 |
|---|---|---|---|---|---|---|
| イングレス | NSG_FLB | NSG_VM | TCP | 80 | 有効 | FLB → VM へのイングレス通信許可 |
環境作成
・VCNウィザードで作成
・インスタンス配置
・FLBの設定は80番ポートでhttp
・FLB用NSG作成

後で、Webサーバ側へのNSGへのアウトバウンドを追記予定
・Webサーバ側NSG作成

WEBサーバ側のNSG、イングレスでソースをFLB_NSGを指定する。ステートフルなのでイングレスのみ。
■FLBの作成する際にNSG_FLBをアタッチ

・NSGだけで設定したいので、自動でセキュリティリストが更新されないようにチェックを入れる

接続テスト
■個人PC→インターネット→FLB→WEBサーバ:接続OK
# WEBサーバ側パケットキャプチャ
06:25:42.765666 IP 10.0.0.2.33886 > 10.0.1.5.80: Flags [S], seq 4251316030, win 62720, options [mss 8960,sackOK,TS val 2896762623 ecr 0,nop,wscale 10], length 0
06:25:42.767189 IP 10.0.0.2.33886 > 10.0.1.5.80: Flags [P.], seq 4251316031:4251316811, ack 62196125, win 62, options [nop,nop,TS val 2896762625 ecr 1022225860], length 780: HTTP: GET / HTTP/1.1
06:25:42.767798 IP 10.0.0.2.33886 > 10.0.1.5.80: Flags [.], ack 1, win 62, options [nop,nop,TS val 2896762625 ecr 1022225860], length 0
06:25:42.768478 IP 10.0.0.2.33886 > 10.0.1.5.80: Flags [.], ack 138, win 62, options [nop,nop,TS val 2896762626 ecr 1022225862], length 0
06:25:47.774586 IP 10.0.0.2.33886 > 10.0.1.5.80: Flags [F.], seq 780, ack 139, win 62, options [nop,nop,TS val 2896767632 ecr 1022230866], length 0
10.0.0.2:FLBのバックエンドサーバと通信する際のIPアドレス
10.0.1.5:インスタンスのIPアドレス
■同じパブリックサブネットの一時インスタンス→WEBサーバ:接続NG
#VM2→FLBへ通信
[opc@bastion-vm2 ~]$ curl 10.0.1.5
^C
#セキュリティグループで許可されていないのでSYNパケットが破棄されている状態
・実際にREJECTされていることがログで確認

10.0.0.16:パブリックサブネットに置いたクライアントインスタンスのIPアドレス
10.0.1.5:WEBサーバインスタンスのIPアドレス
以上、NSGのセキュリティルールのソース宛先にNSGが指定できることを確認しました。








