nmap — 網路掃描與安全稽核工具

掃描網路主機的開放 port 與服務,是網路管理與安全稽核的標準工具。

語法

nmap [掃描類型] [選項] 目標

常用選項

選項 說明 範例
-p port 範圍 指定要掃描的 port(-p 80,443 或 -p 1-1024 或 -p-) nmap -p 80,443 host
-sV 偵測服務版本 nmap -sV host
-O 偵測作業系統(需 root) sudo nmap -O host
-A 積極掃描(OS 偵測、版本偵測、腳本掃描) sudo nmap -A host
-T N 掃描速度(0=最慢,5=最快,4=推薦) nmap -T4 host
-sP / -sn 只做 ping 掃描(不掃 port,只偵測主機是否在線) nmap -sn 192.168.1.0/24
-sS SYN 掃描(半開放,需 root,較不易被偵測) sudo nmap -sS host
--open 只顯示開放的 port nmap --open -p- host
-iL 檔案 從檔案讀取目標主機清單 nmap -iL targets.txt
-oN 檔案 輸出正常格式到檔案 nmap -oN result.txt host
-v 詳細輸出(可重複 -vv) nmap -v host

使用範例

範例 1:掃描本機開放的 port

掃描 localhost 最常用的 1000 個 port。

$ nmap localhost
Starting Nmap 7.93
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00019s latency).
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
3306/tcp open  mysql
範例 2:掃描區域網路主機(ping 掃描)

找出區域網路中所有在線的主機(不掃 port,速度快)。

$ sudo nmap -sn 192.168.1.0/24
Nmap scan report for 192.168.1.1  (router)
Host is up (0.003s latency).
Nmap scan report for 192.168.1.100
Host is up (0.001s latency).
範例 3:偵測服務版本

不只掃描開放 port,還偵測每個服務的版本資訊。

$ nmap -sV -p 22,80,443 target-server
PORT    STATE SERVICE VERSION
22/tcp  open  ssh     OpenSSH 8.9p1 Ubuntu
80/tcp  open  http    nginx 1.18.0
範例 4:掃描所有 port(65535 個)

使用 -p- 掃描所有 port,找出非標準 port 上的服務(較慢)。

$ nmap -p- -T4 --open 192.168.1.100
PORT      STATE SERVICE
22/tcp    open  ssh
8080/tcp  open  http-proxy
54321/tcp open  unknown

常見錯誤與排錯

You requested a scan type which requires root privileges.
原因
部分掃描類型(如 SYN 掃描、OS 偵測)需要 root 權限。
解法
使用 sudo nmap。

延伸閱讀