一份常用的網路連接埠列表是參考資料,不是定論。它告訴你某個連接埠編號最常被註冊為什麼用途,但無法告訴你實際上哪個應用程式正在某台主機上執行、無法告訴你觀察到的流量是否安全,也無法告訴你防火牆是否應該放行它。把一份精選表格當作一站式答案來看待,會導致在實際工作中傷害最大的那些錯誤:因為某個號碼看起來很熟悉,就為錯誤的服務打開防火牆規則;假設註冊名稱能證明身分;把一份 40 列的列表複製到 runbook 中就當作完整;以及相信單一搜尋結果,卻不檢查權威註冊資料庫。在你查看任何一列之前,就應該開始避免這些錯誤。你要先決定你實際上在問什麼問題,你要記住任何簡短的精選表格本來就不完整,你要規畫一個驗證步驟,使用平台原生工具、服務設定、記錄檔,以及在任何政策變更之前先查 IANA 註冊資料庫。這份列表是翻譯員,不是法官。

how do i avoid mistakes when i use common network ports list
使用常用網路連接埠列表時如何避免錯誤

把連接埠列表當作答案所產生的錯誤

大多數與連接埠列表相關的錯誤都歸納得出幾種模式。以下的分類為它們命名,因為為錯誤命名是避免它的第一步。

  • 把註冊與身分混淆。註冊名稱是 IANA 指派給某個號碼的名稱;它不一定是你伺服器上實際執行的東西。一個不在列表中的連接埠也可能是有效的、已註冊的、私有的、暫時的,或者只是落在精選範圍之外。
  • 把命中與安全混淆。一個開放的連接埠是一個封包目的地,而不是對其背後應用程式的判決。流向某個已註冊號碼的流量可能屬於不同的程式、錯誤設定,或攻擊者重複使用某個已知號碼。
  • 把範圍與涵蓋範圍混淆。一份 40 列的精選表格涵蓋的是常見服務。它並未列舉 49152 到 65535 的動態範圍、廠商慣例,或每一個現代通訊協定延伸(例如 SCTP 或 DCCP)。
  • 把複製貼上與政策混淆。可見列的 Tab 分隔匯出只是用於筆記和工單的參考片段。它不是防火牆允許清單,也不是完整的稽核產出。
  • 把一次性查詢與習慣混淆。這份列表會給你一個可能的服務。用 ss、netstat、lsof、服務設定與註冊資料庫檢查來加以確認,本身就是查詢的一部分,而不是你有空才做的額外工作。

一份精選的 40 連接埠列表實際上涵蓋了什麼

這份常用網路連接埠列表是一張精選的表格,包含 40 個經常會遇到的 TCP 與 UDP 服務連接埠,刻意縮短,讓各列保持易讀。每一列包含一個數值連接埠、所選的 IANA 服務名稱、一個或多個相關的傳輸通訊協定、一段簡短的平實描述,以及供篩選器使用的分類。連接埠以數值排序,在表中唯一。搜尋會比對連接埠編號、服務名稱、描述與分類,所以查詢 443 會回傳 HTTPS,查詢 PostgreSQL 會回傳 5432,查詢 mail 則可能回傳 SMTP、POP3、IMAP、message submission,以及它們的 TLS 變體。

這份表格對自身的樣貌是誠實的。它不會假裝重現整個 IANA 註冊資料庫,也偏好常見的營運用途而非鉅細靡遺的涵蓋範圍。DNS 同時以 TCP 與 UDP 顯示,而 HTTPS 在這份精簡表格中只以 TCP 顯示。這樣的選擇讓列表易於掃讀,但它並不是對每一個現代通訊協定、每一個替代註冊項目,或每一種部署慣例的完整說明。當某個決策需要完整或具時效性的證據時,所連結的 IANA 註冊資料庫是下一步,不是退而求其次的備案。

如何在查詢連接埠時不會得出錯誤結論

查詢本身有三個步驟。依序執行,能讓結果與這份列表實際能表達的內容相稱。

  1. 在搜尋欄位中輸入連接埠編號、服務名稱、產品詞彙或描述。搜尋不區分大小寫,並會比對連接埠編號、所選的 IANA 服務名稱、描述與分類,所以同一個欄位可以同時處理 443、HTTPS、PostgreSQL 與 mail。
  2. 可以選擇性地使用 TCP 或 UDP 通訊協定篩選器以及服務分類篩選器來縮窄可見列。當傳輸層的差異會影響你的思考模型時,通訊協定篩選器可以加以區分;分類篩選器則能在不更動底層資料的情況下,單獨挑出資料庫、網路服務、網路基礎架構、遠端存取或其他支援的群組。
  3. 檢視相符的註冊提示,然後在需要為工單、筆記、runbook 或研習活動準備參考片段時,只將可見的列以 Tab 分隔文字複製。複製動作會匯出螢幕上所顯示的內容,因此經過篩選的檢視會維持為經過篩選的匯出。

完成這三個步驟後,這份列表已經告訴你某個號碼最常代表的意義。它並未告訴你在你真正關心的那台主機上執行的究竟是什麼。

為什麼「開放」不等於「這個應用程式」

使用連接埠列表時最昂貴的錯誤,是把表格讀成身分的證明。IANA 明確警告,指派並不背書某個應用程式,也不證明觀察到的流量是好的。一台伺服器可能監聽在一個不尋常的連接埠上,一個號碼上可能存在多個註冊名稱,而一個使用已註冊號碼的封包可能完全屬於另一個程式。關於開放連接埠與執行中應用程式的文章詳細說明同樣的警示;簡短版本是:連接埠編號是一個提示,絕不是識別依據,也絕不是安全標章。確認實際的處理程序、實際的設定、實際的流量,以及實際的端點,應該與查詢屬於同一個工作流程,而不是在查詢之後才做。

IANA 的連接埠範圍,以及為什麼「缺席」不是證明

RFC 6335 與 IANA 註冊資料庫將 16 位元的連接埠空間劃分為三個範圍。了解它們,能避免把「缺少的」一列誤讀為「被封鎖」或「不安全」的判決。

範圍編號常見用途
系統連接埠0 到 1023指派的服務,在大多數作業系統上通常需要特殊權限才能綁定
使用者連接埠1024 到 49151可供一般使用者程序使用的已註冊服務
動態或私有連接埠49152 到 65535暫時性的來源連接埠,以及私有或未指派的用途

一份 40 列的精選表格涵蓋了常見的系統與使用者連接埠。它並未列舉動態範圍,而一個不在表格中的連接埠仍然有可能是有效的、已註冊的、私有的、暫時性的,或依廠商慣例而廣泛使用的。從表格中缺席,僅代表該號碼落在精選範圍之外,絕不代表該號碼不可用、危險,或是註冊資料庫未收錄。

在命中變成政策之前先加以驗證

在故障排除方面,這份列表把一個號碼轉譯為一個可能的服務。確認實際的端點是下一步。使用平台原生工具(例如 ss、netstat 或 lsof)查看是哪個處理程序正在綁定,然後閱讀服務設定與最近的記錄檔來確認綁定情形。常用的連接埠參考是起始假設,不是結論。

在防火牆工作方面,這份列表離最終決策更遠。一項政策需要經過驗證的業務目的、方向(傳入或傳出)、來源、目的、通訊協定、驗證、加密、業務負責人,以及最低權限範圍。常用連接埠列表能否作為防火牆允許清單這篇文章詳細說明了為什麼一份 40 列的參考資料不是規則集;相同的邏輯也適用於拒絕清單、分段政策,以及安全例外工單。官方的IANA Service Name and Transport Protocol Port Number Registry是指派的權威來源,而RFC 6335定義了號碼空間如何劃分與指派。當某一列攸關重要時,請循線追溯回這兩個來源之一,再撰寫規則。

建立保持誠實的 Runbook 習慣

最後一個值得點名的錯誤,是把連接埠列表當作繞過註冊資料庫的捷徑來使用。應把這份列表視為常見案例的快速本機查詢工具,附帶明確的限制、穩定的篩選器,以及當決策需要完整或具時效性的證據時,能直接通往權威註冊資料庫的路徑。參考列已與 IANA 註冊資料庫核對過,但描述為了便於掃讀而加以縮短,並未凌駕註冊資料庫的措辭。當缺少某一列時,請循著這個缺席追溯到註冊資料庫,而不是把這份表格當作封閉的世界。這份列表告訴你某個連接埠最常被稱為什麼。註冊資料庫、主機與政策,才是告訴你事實真相的依據。