Skip to content

2026-08-18

/ 11 分鐘閱讀

/ Full Stack Fundamentals

什麼是連接埠(Port):常見服務對應的埠號,用 nmap 掃描伺服器找出不該開放的 3000 埠 ​

上一篇談過伺服器被入侵後的風險,以及 SSH 金鑰、防火牆、隨時更新軟體這三道基本防線。這一節在正式設定防火牆之前,先補上一個必要的先備知識:什麼是連接埠(port),以及怎麼用 nmap 找出伺服器上實際開放了哪些埠。

補充:兩步驟驗證與 VPN ​

在進入連接埠之前,先簡單補充兩個跟安全性有關、但還沒展開的概念。兩步驟驗證(two-factor authentication)在伺服器端比較少直接派上用場。

VPN(虛擬私人網路,virtual private network)則是另一種防護思維:先明確定義一組「受信任」的裝置清單,在這組受信任的網路範圍之外築起重重防護,讓外部裝置幾乎不可能輕易闖入。這種做法的好處是能省去許多逐一判斷「這個連線該不該被允許」的麻煩,安全性與存取便利性之間,終究是一場持續進行中的權衡:安全性總是傾向把一切都鎖死,而工程師往往需要保有一定程度的存取彈性,兩者必須不斷取得平衡。

什麼是連接埠 ​

在談防火牆之前,得先搞懂連接埠(port)是什麼:連接埠是一個通訊端點,對應到特定的處理程序或網路服務。前面談過 IP 位址的數量其實是有限的,而連接埠的存在,正是讓這個有限的資源不至於這麼快就被耗盡:因為有了連接埠,同一個 IP 位址底下就能同時承載多個、甚至上千個不同的服務,而不需要每個服務都各自佔用一個獨立的 IP 位址。

系統裡有一批「知名連接埠」(well-known ports),是業界長期以來約定俗成、固定對應特定服務的埠號,可以在系統裡查看這份清單:

bash
less /etc/services

其中一些比較常見的埠號包括:

  • 22:SSH
  • 21:FTP
  • 23:Telnet(比較舊的協定,如今已經很少使用,但技術上仍然存在)
  • 80:HTTP,是全世界使用率最高的連接埠,瀏覽器背後真正在跑的正是這個埠
  • 443:HTTPS,同樣是網際網路上最常用的埠之一

這些知名連接埠原則上任何人都可以拿來使用,但這麼做容易碰到埠號衝突(port collision):如果某個埠已經被其他服務佔用,就沒辦法再用同一個埠開另一個服務。這也是為什麼開發時經常選用像 3000、8000、8080 這類沒有被特別保留、比較不容易衝突的埠號;連接埠的數量其實有成千上萬個,只要選一個夠冷門的號碼,通常都能避開衝突。

連接埠本質上是電腦對外開放的一個入口:光是知道一個 IP 位址並不夠,還必須指定要連到哪一個連接埠,才能真正建立起連線。也正因為每一個開放的連接埠都是一個潛在的入口,掌握伺服器上到底開放了哪些連接埠,是資安上不能忽視的一環。

用 nmap 掃描伺服器,找出實際開放的埠 ​

要實際查看伺服器目前開放了哪些連接埠,可以用 nmap 這個工具,不論是安裝在本機還是伺服器上都可以:

bash
sudo apt install nmap
nmap <伺服器IP>

掃描結果會列出目前對外開放的連接埠清單。以這門課目前設定好的伺服器來看,掃描結果通常會顯示:

  • 22 埠:對應 SSH,理當保持開放
  • 80 埠:對應 HTTP,同樣理當保持開放
  • 3000 埠:這是一個不該開放的連接埠

3000 埠之所以意外處於開放狀態,是因為前面寫的 Node.js 伺服器預設就監聽在這個埠上。但實際上並不需要讓 3000 埠對外開放:所有外部請求理應統一先進到 Nginx(透過 80 埠),再由 Nginx 用 proxy_pass 轉送到本機的 Node.js 應用程式,3000 埠只需要在伺服器內部被 Nginx 存取即可,完全沒有必要暴露給外部世界。換句話說,目前這台伺服器只應該對外開放 22 埠(SSH)與 80 埠(HTTP),3000 埠這個因為啟動 Node 伺服器而預設打開的破口,接下來就要想辦法把它關起來。

複習 ​

網路中的連接埠(port)是什麼? ​

連接埠是一個通訊端點,對應到特定的處理程序或網路服務。有了連接埠,同一個 IP 位址底下就能同時承載多個、甚至上千個服務,這也是為什麼能讓有限的 IP 位址資源被更有效地運用。

有哪些常見的知名連接埠與對應服務? ​

22 埠對應 SSH、21 埠對應 FTP、80 埠對應 HTTP、443 埠對應 HTTPS。

怎麼查看伺服器上開放了哪些連接埠? ​

使用 nmap 工具,指令類似 nmap <伺服器IP>,會列出目標系統目前所有開放的連接埠。

為什麼連接埠在網路通訊中如此重要? ​

連接埠讓多個服務可以共用同一個 IP 位址,並為不同的網路服務提供各自獨立的通訊端點。

選擇連接埠時可能遇到什麼問題? ​

埠號衝突:當多個服務嘗試使用同一個連接埠號碼時就會發生。為了避開這個問題,通常建議選用較高、比較不常見的連接埠號碼,例如 3000、8000 或 8080。

小測驗 ​

連接埠在網路通訊中為什麼重要? 它們讓多個服務可以共用同一個 IP 位址
HTTP 流量通常對應哪個連接埠? 80 埠
用什麼工具可以遠端掃描並找出另一台伺服器 IP 上開放的連接埠? nmap

此文章是 FrontendMasters 上的 Full Stack Fundamentals, v3 課程筆記

最後更新時間:

Buy Me A Coffee

系列章節 第 27 篇 / 共 47 篇

0 %
MIT Licensed | Copyright © 2025-present Wen-Hsiu's Blog
Photo by Federica Galli on Unsplash