PR
スポンサーリンク

[Nutanix]Isolate policyの検証をVPCで行ってみた

スポンサーリンク
Nutanix
Nutanix logo
記事内に広告が含まれています。
スポンサーリンク
スポンサーリンク

はじめに

Flow Network Security(FNS)の機能であるIsolate Policyを検証してみました。

環境

  • 外部NATサブネットを用いたVPCを構築
  • その中でVMを6台稼働(rocky linux 8)
  • 2台ずつカテゴリを付与
  • 使用するカテゴリは、Environment:Dev、Environment:Testing、Environment:Productionとします

Define Policy

  • ここでは適当なポリシー名を付けて、Isolate environments(Isolation Policy)のラジオボタンを有効化します
  • Scope of Secured EntitiesではVLAN SubnetsもしくはSubnets inside a VPCを選択可能です
  • VPCのタブから作成した場合は図の様に自動的にSubnets inside a VPCが選択されて修正できません

  • Policy Hit Logsは文字通り、ポリシーに該当した場合にログに出力する機能となりますが、このポリシーをVMに適用した場合には機能しないため無効化しておきます

Secure Application

カテゴリを用いて通信させたくないVMグループを定義します。

今回は
・DevとProductionのカテゴリを付与したVMは疎通不可
・TestingとProductionのカテゴリを付与したVMは疎通不可
とします。

Review

  • ポリシーのモードを選択します。実際にVMに適用する場合はApply(Enforce)を選択します。

  • 適用後、Listからポリシーの一覧を確認することが可能です。

検証

今回は次のような条件で検証しました。

linux-vm-1…カテゴリ:Emvironment:Dev、VPCのIP:172.16.200.51、Floating IP:192.168.3.71
linux-vm-2…カテゴリ:Emvironment:Dev、VPCのIP:172.16.200.58、Floating IP:192.168.3.72
linux-vm-3…カテゴリ:Emvironment:Testing、VPCのIP:172.16.200.67、Floating IP:192.168.3.73
linux-vm-4…カテゴリ:Emvironment:Testing、VPCのIP:172.16.200.64、Floating IP:192.168.3.74
linux-vm-5…カテゴリ:Emvironment:Production、VPCのIP:172.16.200.55、Floating IP:192.168.3.75
linux-vm-6…カテゴリ:Emvironment:Production、VPCのIP:172.16.200.54、Floating IP:192.168.3.76

結果(VPC)

[例]1-2:linux-vm-1からlinux-vm-2へpingを実施したことを示す。

Emvironment:Devからの通信
1-2:
[root@appliance ~]# ping 172.16.200.58
PING 172.16.200.58 (172.16.200.58) 56(84) bytes of data.
64 bytes from 172.16.200.58: icmp_seq=1 ttl=64 time=2.86 ms
64 bytes from 172.16.200.58: icmp_seq=2 ttl=64 time=1.19 ms
1-3:
[root@appliance ~]# ping 172.16.200.67
PING 172.16.200.67 (172.16.200.67) 56(84) bytes of data.
64 bytes from 172.16.200.67: icmp_seq=1 ttl=64 time=3.35 ms
64 bytes from 172.16.200.67: icmp_seq=2 ttl=64 time=1.11 ms
1-4
[root@appliance ~]# ping 172.16.200.64
PING 172.16.200.64 (172.16.200.64) 56(84) bytes of data.
64 bytes from 172.16.200.64: icmp_seq=1 ttl=64 time=4.43 ms
64 bytes from 172.16.200.64: icmp_seq=2 ttl=64 time=0.998 ms
1-5
[root@appliance ~]# ping 172.16.200.55
PING 172.16.200.55 (172.16.200.55) 56(84) bytes of data.
From 172.16.200.51 icmp_seq=1 Destination Host Unreachable
From 172.16.200.51 icmp_seq=2 Destination Host Unreachable
1-6
[root@appliance ~]# ping 172.16.200.54
PING 172.16.200.54 (172.16.200.54) 56(84) bytes of data.
From 172.16.200.51 icmp_seq=1 Destination Host Unreachable
From 172.16.200.51 icmp_seq=2 Destination Host Unreachable

本番環境へは開発環境のVMから通信できないことが確認できました。

Emvironment:Testingからの通信
3-1:
[root@appliance ~]# ping 172.16.200.51
PING 172.16.200.51 (172.16.200.51) 56(84) bytes of data.
64 bytes from 172.16.200.51: icmp_seq=1 ttl=64 time=9.83 ms
64 bytes from 172.16.200.51: icmp_seq=2 ttl=64 time=6.68 ms
3-2:
[root@appliance ~]# ping 172.16.200.58
PING 172.16.200.58 (172.16.200.58) 56(84) bytes of data.
64 bytes from 172.16.200.58: icmp_seq=1 ttl=64 time=4.10 ms
64 bytes from 172.16.200.58: icmp_seq=2 ttl=64 time=2.71 ms
3-4:
[root@appliance ~]# ping 172.16.200.64
PING 172.16.200.64 (172.16.200.64) 56(84) bytes of data.
64 bytes from 172.16.200.64: icmp_seq=1 ttl=64 time=6.47 ms
64 bytes from 172.16.200.64: icmp_seq=2 ttl=64 time=1.15 ms
3-5:
[root@appliance ~]# ping 172.16.200.55
PING 172.16.200.55 (172.16.200.55) 56(84) bytes of data.
From 172.16.200.67 icmp_seq=1 Destination Host Unreachable
From 172.16.200.67 icmp_seq=2 Destination Host Unreachable
3-6:
[root@appliance ~]# ping 172.16.200.54
PING 172.16.200.54 (172.16.200.54) 56(84) bytes of data.
From 172.16.200.67 icmp_seq=1 Destination Host Unreachable
From 172.16.200.67 icmp_seq=2 Destination Host Unreachable

Test環境のVMからは本番環境のVMへ通信できないことが確認できました。

Emvironment:Productionからの通信
6-1:
[root@appliance ~]# ping 172.16.200.51
PING 172.16.200.51 (172.16.200.51) 56(84) bytes of data.
From 172.16.200.54 icmp_seq=1 Destination Host Unreachable
From 172.16.200.54 icmp_seq=2 Destination Host Unreachable
6-2:
[root@appliance ~]# ping 172.16.200.58
PING 172.16.200.58 (172.16.200.58) 56(84) bytes of data.
From 172.16.200.54 icmp_seq=1 Destination Host Unreachable
From 172.16.200.54 icmp_seq=2 Destination Host Unreachable
6-3:
[root@appliance ~]# ping 172.16.200.67
PING 172.16.200.67 (172.16.200.67) 56(84) bytes of data.
From 172.16.200.54 icmp_seq=1 Destination Host Unreachable
From 172.16.200.54 icmp_seq=2 Destination Host Unreachable
6-4:
[root@appliance ~]# ping 172.16.200.64
PING 172.16.200.64 (172.16.200.64) 56(84) bytes of data.
From 172.16.200.54 icmp_seq=1 Destination Host Unreachable
From 172.16.200.54 icmp_seq=2 Destination Host Unreachable
6-5:
[root@appliance ~]# ping 172.16.200.55
PING 172.16.200.55 (172.16.200.55) 56(84) bytes of data.
64 bytes from 172.16.200.55: icmp_seq=1 ttl=64 time=3.55 ms
64 bytes from 172.16.200.55: icmp_seq=2 ttl=64 time=1.22 ms

開発環境とTest環境のVMへは本番環境のVMから通信できないことが確認できました。

結果(Floating IPs)

今回、NAT外部サブネットを使用してVPCを作成しているため、Floating IPs(外部NAT変換のための仕組みで、VMに外部サブネットのIP Poolから1対1でIPアドレスをVPC内のVMに割り当てることで、VPC外部からの接続を可能にする)を使用できます。このIPアドレス同士で通信させた場合にどうなるのか検証してみます。

6-1:
[root@appliance ~]# ping 192.168.3.71
PING 192.168.3.71 (192.168.3.71) 56(84) bytes of data.
64 bytes from 192.168.3.71: icmp_seq=1 ttl=62 time=3.64 ms
64 bytes from 192.168.3.71: icmp_seq=2 ttl=62 time=1.44 ms
^C
--- 192.168.3.71 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 1.444/2.541/3.638/1.097 ms

6-3:
[root@appliance ~]# ping 192.168.3.73
PING 192.168.3.73 (192.168.3.73) 56(84) bytes of data.
64 bytes from 192.168.3.73: icmp_seq=1 ttl=62 time=3.52 ms
64 bytes from 192.168.3.73: icmp_seq=2 ttl=62 time=1.28 ms
^C
--- 192.168.3.73 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.282/2.401/3.520/1.119 ms
[root@appliance ~]#

このように、Floating IPs同士の通信は可能となります。これを防ぐにはVLAN Subnet側でも同様にIsolate Policyを設定すればよいと思われますが、実際に検証したところ通信できます。

VPCのRulesで通信させたくないVMのFloating IPs同士をDenyするルールを作成するしかないと思われます(未検証)。ステートレスなので行きと戻りの両方で定義してください。

コメント

タイトルとURLをコピーしました