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。