Azure VM における OS 側での開放ポートと NSG について考える
これは何...?
普段、NSG でネットワーク制御をしているとあまり意識しないかもしれませんが、Windows/Linux ともに OS 側にもファイアウォールを持っており、NSG で許可しているのに到達できないみたいなこともあります。この辺の挙動を Nmap[1] を使って確認します。
Nmap とは
Wikipedia[2]によれば以下らしいです。
nmapはGordon Lyonによって書かれたセキュリティスキャナである。ポートスキャン機能だけでなく、OSやバージョンの検出機能、サービスおよびそのバージョンの検出機能など、多くの機能を兼ね備えている
今回は Ubuntu と Windows Server を立てて、Nmap をインストールしておきます。これはインストール[3]すれば Windows でも利用できます。Ubuntu の場合は sudo apt install nmap
ですぐに入ります。そのうえで各サーバー上で localhost に対して ポートスキャンをかけます。VM イメージは Marketplace の真っ新な状態です。結果は以下になります。
Linux (ubuntu 20.04)
vm-ubuntu:~$ nmap localhost
Starting Nmap 7.80 ( https://nmap.org ) at 2023-11-08 08:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00018s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
既定で 22/tcp が開いていますね。
Windows (Windows Server 2022 Datacenter Azure Edition)
C:\Users\xxxx>nmap localhost
Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-08 08:32 Coordinated Universal Time
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00019s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 997 closed tcp ports (reset)
PORT STATE SERVICE
135/tcp open msrpc
445/tcp open microsoft-ds
3389/tcp open ms-wbt-server
Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds
既定で、135/tcp、445/tcp、3389/tcp、が開放されています。
NSG 越しの通信について
Public IP(Standard SKU) 越しに ポートスキャンをかけるとどう見えるのかを確認してみます。先ほどと同じ Apache をインストールした Ubuntu VM に対して 外部からスキャンしてみます。VM に適用されている NSG には、ポート 80 が開放されている状況です。
PS C:\Users\xxxx> nmap 172.190.xxx.xxx
Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-08 20:12 東京 (標準時)
Nmap scan report for 172.190.xxx.xxx
Host is up (0.18s latency).
Not shown: 999 filtered tcp ports (no-response)
PORT STATE SERVICE
80/tcp open http
80/tcp が開放されていると認識されています。OS 内部では開放されているように見えていた 22/tcp は開放されていません。
NSG を外してみる
Public IP の Standard SKU の場合、明示的に NSG で許可しないと通信ができない仕様[4]となっているため、NSG を外した状態でスキャンしてみます。
PS C:\Users\shizh> nmap 172.190.xxx.xxx
Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-08 20:23 東京 (標準時)
Nmap scan report for 172.190.xxx.xxx
Host is up (0.18s latency).
All 1000 scanned ports on 172.190.xxx.xxx are in ignored states.
Not shown: 1000 filtered tcp ports (no-response)
Nmap done: 1 IP address (1 host up) scanned in 181.94 seconds
no-response
と言われてしまいました。ということで NSG がない場合はスキャンにも引っかからないわけですね。
まとめ
- Azure VM のネットワーク保護には NSG が中止されがちだが、OS 内のファイアウォールも効いている
- ポートスキャンを内部的・外部的にかけてみると一目瞭然
- Basic SKU の場合は NSG がかかっていない場合に OS 内のファイアウォールの設定がそのまま境界となるため注意が必要
Discussion