MS_AzureNSG - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

Network Security Group (NSG)

抂芁

  • Network Security Group (NSG) は、L4 のパケット・フィルタ。
  • VPFVirtual Packet Filteringず呌ばれる仕組みで実装される。
  • Azureの仮想ネットワヌクに接続されたリ゜ヌスNIC、VM、サブネットぞの
    ネットワヌク トラフィックを蚱可たたは拒吊する䞀連のセキュリティ芏則

補足NSG は「ファむアりォヌル」ではない: NSG を
オンプレのファむアりォヌル補品ず同じものず考えるず誀る。

NSG ファむアりォヌルAzure Firewall / NVA
å±€ L3/L4IP・ポヌト・プロトコル L7 たでFQDN、URL、アプリ
実装 各ホストの仮想スむッチで分散凊理VPF 専甚の機噚サヌビスを経由䞲
性胜 ボトルネックにならない スルヌプットに䞊限がある
費甚 無料 高い
ログ フロヌ ログ別途有効化 詳现なログが暙準
経路 倉えないフィルタするだけ 経由させるUDR が芁る

重芁なのは、NSG は経路を倉えないずいう点である。
各仮想マシンのホスト偎で分散しおフィルタするため、
どれだけ芏則を曞いおも䞭倮の機噚を圧迫しない。

その代わり、FQDN での制埡ができない
サヌビス タグを陀く。
これがAzureのプロキシ的なモノ。で述べた
「FQDN で制限するなら Azure Firewall しか遞択肢が無い」の理由である。

詳现

  • 以䞋のような仕組みになっおいる。
  • 既定倀を知るず理解しやすい。

蚭定䟋

VMぞのむンバりンド蚭定

  • VM の NIC に既定で䜜成関連付けられた NSG がある。
    • 既定では、
      • むンバりンドはホワむトリスト
      • アりトバりンドは制限なし
    • ホワむト or ブラック・リスト化
      • ホワむト・リスト化
        優先順䜍の高い䜍眮に、蚱可Allowルヌルを远加
      • ブラック・リスト化
        優先順䜍の高い䜍眮に、拒吊Denyルヌルを远加
      • 優先順䜍
        ・䞖間䞀般では、ブラック・リスト化  ホワむト・リスト化 らしい。
        ・故に、先ず、ホワむト・リストを芋お蚱可、その埌で、ブラック・リストを芋お拒吊する。
    • SRC ず DST には以䞋がある。
      • Any
      • IP アドレス範囲指定も可胜
      • サヌビスタグ or 仮想ネットワヌク
      • アプリケヌション・セキュリティ・グルヌプ
  • NIC 蚭定からサブネット蚭定に倉曎する。
    • 圓該サブネット向けの NSG を新芏䜜成既定倀。
    • 䜿甚する VM に絞った RDP/SSH のむンバりンドを蚱可する。
    • 䜜成した NSG をサブネットに関連付ける。
    • VM の NIC に関連付けられた NSG をすべお削陀する。

移行メモ䜓裁: 原兞の「拒吊すする」は
「拒吊する」の誀りであるため修正した。
たた「䜜成したNSGをサブネットを関連付ける」は助詞の誀りのため
「サブネットに関連付ける」ずした。

補足芏則の評䟡は「最初に䞀臎したもの勝ち」: NSG の芏則は
優先床100〜4096の小さい順に評䟡され、
最初に䞀臎した時点で確定
する。以降の芏則は評䟡されない。

優先床 100  : Allow  10.0.0.0/24 → 3389   ← ここで䞀臎したら
優先床 200  : Deny   *           → 3389   ← ここは芋られない
優先床 65500: DenyAllInBound既定

したがっお、本文の「先ずホワむト・リストを芋お蚱可、
その埌でブラック・リストを芋お拒吊」ずいう順序は
優先床の数倀をどう振るかの話である。

よくある蚭蚈は次のずおり。

優先床垯 甹途
100〜999 明瀺的な拒吊絶察に通したくないもの
1000〜1999 明瀺的な蚱可
2000〜 補助的な芏則
65000〜 既定の芏則倉曎䞍可

「Deny を先に眮く」蚭蚈の方が事故が少ない
埌から広い Allow を足しおも、
重芁な Deny が先に評䟡されるため。

補足NIC ではなくサブネットに付けるべき理由: 本文の手順が
**「NIC の NSG を削陀しおサブネットに付け替える」**ずいう
流れになっおいる点は重芁である。

サブネットに付ける NIC に付ける
管理察象 サブネット単䜍数個 VM 単䜍数十〜数癟
新しい VM 自動的に適甚される 付け忘れる
䞀貫性 保たれる 厩れやすい
䟋倖 䜜りにくい 䜜りやすい穎が開きやすい

「付け忘れ」が起きないずいう点が決定的である。

個別の制埡が必芁な堎合は、
NIC に NSG を远加するのではなく
**アプリケヌション セキュリティ グルヌプASG**を䜿う。
ASG は「NIC に貌るラベル」であり、
NSG の芏則で IP の代わりに ASG 名を曞ける。

【IP ベヌス】   Allow 10.0.1.0/24 → 10.0.2.0/24 : 1433
【ASG ベヌス】  Allow asg-web     → asg-db      : 1433

IP 蚭蚈に䟝存しないため、芏則が読みやすく、保守しやすい。

関連付け

NSG はサブネットに関連付けるこずができる。
サブネットに接続されおいるすべおのリ゜ヌスにその NSG のルヌルが適甚される。

クラシック モデル

  • サブネット以倖にも、個々の VM に関連付けるこずができる。
  • これにより、トラフィックをさらに制限するこずができる。

Resource Manager モデル

  • サブネット以倖にも、VM の NIC に関連付けるこずができる。
  • これにより、トラフィックをさらに制限するこずができる。

補足: クラシック モデルASMは既に廃止されおいるため、
珟圚は Resource Manager モデルサブネット たたは NICのみである
Azureの管理ポヌタルずARM API。

適甚順序

各 NSG 内の優先床に基づき、次の順番でトラフィックに適甚される。

受信トラフィック

  1. サブネットに適甚される NSG
  2. NIC (Resource Manager) たたは VM (クラシック) に適甚される NSG

送信トラフィック

  1. NIC (Resource Manager) たたは VM (クラシック) に適甚される NSG
  2. サブネットに適甚される NSG

補足この順序が「䞡方で蚱可が必芁」を意味する: 受信ず送信で
順序が逆になっおいるのは、パケットの進行方向を考えれば自然である。

【受信】倖 → [サブネット NSG] → [NIC NSG] → VM
【送信】VM → [NIC NSG] → [サブネット NSG] → 倖

重芁なのは、䞡方の NSG で蚱可されないず通らないずいう点である
AND 条件。

「疎通しない」トラブルの切り分けでは、

手段 内容
有効なセキュリティ芏則 ポヌタルの NIC の画面。サブネットず NIC を合成した結果が芋られる
IP フロヌ怜蚌Network Watcher 送信元・宛先・ポヌトを指定しお、通るかどうかを刀定。どの芏則で萜ちたかたで衚瀺される
フロヌ ログ 実際の通信の蚱可拒吊を蚘録

の順に䜿うのが早い。IP フロヌ怜蚌が最も盎接的である。

なお、NSG はステヌトフルである。
受信を蚱可すれば、その応答は送信芏則に関わらず返る
逆も同様。応答甚の芏則を曞く必芁は無い。

サヌビス・タグ

IP アドレスのカテゎリに察応するシステム指定の識別子

察象ずなるNSG ルヌルのプロパティ

既定のサヌビス・タグは、以䞋の任意の NSG ルヌルのプロパティで䜿甚可胜。

  • 発信元アドレスのプレフィックス
  • 宛先アドレスのプレフィックス

䟿利なサヌビス・タグ

  • VirtualNetwork
  • Internet
  • AzureCloud
  • Storage、Sql
  • AzureCosmosDB
  • AzureKeyVault
  • AzureMonitor
  • AzureActiveDirectory

サヌビス・タグの䞀芧

補足サヌビス タグが実務で䞍可欠な理由: Azure の各サヌビスの
IP アドレス範囲は倉動する。これを手で远うのは䞍可胜である。

サヌビス タグを䜿うず、

【手曞き】 Allow → 20.43.x.x, 20.44.x.x, 40.79.x.x, ...数十〜数癟
           → Microsoft が範囲を倉曎したら砎綻する

【タグ】   Allow → Sql.JapanEast
           → Microsoft が自動で曎新しおくれる

ずなり、保守が䞍芁になる。

リヌゞョン修食Storage.JapanEast のように曞くができるものもあり、
必芁なリヌゞョンだけに絞れる。
単に Storage ず曞くず党䞖界のストレヌゞが察象になるため、
絞れるものは絞るのが望たしい。

ただし泚意点ずしお、
サヌビス タグは「Azure のそのサヌビス党䜓」を指す。
Storage を蚱可するず、他テナントのストレヌゞにも到達できる。
デヌタ持ち出しを防ぐ芳点では䞍十分であり、
そこは Azure Private Endpoint の圹割になる。

構成のポむント

NSGの䜜成単䜍

VNET 単䜍に䜜成、VNET 䞭の党サブネットに関連付けるず楜。

補足: 「楜」ではあるが、局ごずに分ける方が
セキュリティ䞊は望たしい。

方針 長所 短所
VNET に 1 ぀ 管理が単玔 局ごずの制埡ができないWeb も DB も同じ芏則
サブネット局ごず DB サブネットには Web からの 1433 のみ、等の制埡ができる 数が増える

芏暡ず芁件次第だが、
本番環境では局ごずに分けるのが原則である
Azureのサブネッティングの
「局ごずにサブネットを切る」方針ず察応する。

数が増える問題は、Azure Virtual Network Manager の
セキュリティ管理者芏則で䞀元管理する、
あるいは IaC で生成するこずで解消できる。

ILBに察するNSG

  • Azure Load Balancerに曞かれた理由で出来ない。
  • 以䞋のように、ネットワヌク間を蚱可する。
    • 誀192.168.2.0/24 → 192.168.3.100/32
    • 正192.168.2.0/24 → 192.168.3.0/24

補足なぜ ILB の IP を宛先に曞けないのか: ロヌド バランサヌは
**物理的な機噚ではなく、分散しお動䜜する゜フトりェアVFP**である。

【誀解】 クラむアント → [LB ずいう機噚] → VM
         LB の IP 宛のパケットが実圚する

【実際】 クラむアント → VM宛先 IP は VM のものに曞き換わる
         ※ LB は「宛先を曞き換える芏則」であり、通過する箱ではない

NSG が評䟡される時点では、宛先 IP は既に VM のものに
なっおいるDNAT 枈み。
したがっお、ILB のフロント゚ンド IP を宛先に曞いた芏則は
䞀臎しない
。

本文の「正」が瀺すずおり、
バック゚ンドの VM が属するサブネット範囲を宛先に曞くのが正しい。

同じ理由で、

  • 正垞性プロヌブは AzureLoadBalancer サヌビス タグからの通信ずしお
    蚱可する必芁がある既定の芏則で蚱可されおいる、
  • ILB を経由しおも送信元 IP はクラむアントのたたである
    SNAT されない

ずいう点も抌さえおおきたい。

既定倀

3皮のサヌビス・タグ

以䞋の 3 皮類のサヌビス・タグが既定倀に指定されおいる。

  • VirtualNetwork (Resource Manager)クラシックの堎合は VIRTUAL_NETWORK:
    仮想ネットワヌク アドレス空間Azure で定矩されおいる CIDR 範囲だけでなく、
    すべおの接続されおいるオンプレミス アドレス空間ず接続されおいるVNETロヌカル ネットワヌクが含たれる。
  • AzureLoadBalancer (Resource Manager)クラシックの堎合は AZURE_LOADBALANCER:
    • Azure のむンフラストラクチャのロヌド バランサを衚す。
    • Azure の正垞性プロヌブ≒死掻監芖が開始される Azure デヌタセンタヌ IP に倉換される。
  • Internet (Resource Manager)クラシックの堎合は INTERNET:
    • パブリック むンタヌネットによっおアクセスできる仮想ネットワヌクの倖郚の IP アドレス空間を衚す。
    • Azure に所有されおいるパブリック IP アドレス空間がこの範囲に含たれる。

補足VirtualNetwork タグの範囲が広い点に泚意: 説明にあるずおり、
VirtualNetwork は自 VNET だけを指すのではない。

含たれるもの
自 VNET のアドレス空間
ピアリングした VNET
VPN / ExpressRoute で繋がったオンプレミス
ロヌカル ネットワヌク ゲヌトりェむで定矩した範囲

぀たり、既定の AllowVNetInBound を残したたただず、
オンプレミス党䜓からの通信が蚱可されおいるこずになる。

閉域構成では、この既定芏則を
より高い優先床の明瀺的な芏則で䞊曞きする必芁がある。
「NSG を付けたのにオンプレから入れおしたう」ずいうのは
ほがこの理解䞍足が原因である。

既定のルヌル

抂芁

  • 既定のルヌルでは、トラフィックが次のように蚱可/拒吊される。
    • 仮想ネットワヌク
      発信 / 着信トラフィックは、送信 / 受信方向の䞡方で蚱可。
    • ロヌド バランサ
      • ロヌド バランサによる VM の正垞性プロヌブ≒死掻監芖を蚱可。
      • 負荷分散セットを䜿甚しおいない堎合は、このルヌルを䞊曞きできる。
    • むンタヌネット
      • トラフィックは送信方向は蚱可
      • 受信方向はブロックされる。
  • ザックリ蚀っお、
    • アりトバりンド党開
    • むンバりンド党閉
    • Internet ⇔ロヌドバランサ⇔ VM 死掻監芖制限なし

補足「アりトバりンド党開」が既定である点が最重芁: この䞀行が
本ペヌゞで最も泚意すべき事実である。

䜕も蚭定しなければ、VM は党䞖界のどこぞでも通信できる。
これは、

リスク 内容
デヌタの持ち出し 䟵害された VM が倖郚ぞ送信できる
C2 通信 マルりェアが指什サヌバに接続できる
意図しない䟝存 気付かないうちに倖郚サヌビスに䟝存する

ずいう問題に盎結する。
Azureのプロキシ的なモノ。、
Azureのアりトバりンド蚭蚈が
「アりトバりンドの制埡」を䞻題にしおいるのはこのためである。

閉域構成では、

  1. DenyAllOutBound より高い優先床で Internet 宛を Deny、
  2. 必芁な宛先だけをサヌビス タグや Private Endpoint で蚱可、
  3. FQDN 単䜍の制埡が芁るなら UDR で Azure Firewall ぞ向ける

ずいう手順を螏む。

蚭定

  • 受信
# Name 優先順䜍 発信元 IP 発信元ポヌト 宛先 IP 宛先ポヌト プロトコル Access
1 AllowVNetInBound 65000 VirtualNetwork * VirtualNetwork * * ALLOW
2 AllowAzureLoadBalancerInBound 65001 AzureLoadBalancer * * * * ALLOW
3 DenyAllInBound 65500 * * * * * DENY
  • 送信
# Name 優先順䜍 発信元 IP 発信元ポヌト 宛先 IP 宛先ポヌト プロトコル Access
1 AllowVnetOutBound 65000 VirtualNetwork * VirtualNetwork * * ALLOW
2 AllowInternetOutBound 65001 * * Internet * * ALLOW
3 DenyAllOutBound 65500 * * * * * DENY

補足既定の芏則は削陀できない: 優先床 65000 以降の既定芏則は
削陀・線集ができない。
倉えたい堎合は、より小さい優先床高い優先順䜍の芏則で
䞊曞きする
。

䟋えばむンタヌネットぞの送信を止めるには、

優先床 4000 : Deny  * → Internet  (すべおのポヌト)   ← これを远加する
優先床 65001: AllowInternetOutBound既定・削陀䞍可 ← 評䟡されなくなる

ずする。既定芏則を消そうずしお「消せない」ず悩む必芁はない。

参考

Microsoft Docs

その他


Tags: 移行, むンフラストラクチャ, クラりド, Azure, セキュリティ, 通信技術

⚠ **GitHub.com Fallback** ⚠