埠與服務查詢

雙向檢索埠登錄檔:輸入 443 這樣的埠號,或 postgresql 這樣的服務名,表格就會列出所有匹配的分配記錄、它使用的傳輸協議、所屬範圍以及這個埠的用途。資料是本頁內建的一份公開登錄檔副本,因此完全沒有網路連線也能查詢,您輸入的內容也不會離開瀏覽器。本頁不會掃描埠,它無法告訴您某臺機器上哪些埠是開放的 —— 它說明的是某個數字代表什麼意思。
離線參考資料已載入。沒有任何內容被髮送出去。
輸入埠號或服務名,或選擇上方的一個示例。
公認端口,0 到 1023。 這些端口逐個分配給特定的協議,也是唯一一類在任何地方含義都相同的端口:22 是 SSH,80 是明文 HTTP,443 是基於 TLS 的 HTTP。在服務器上它們通常只有具備管理員權限的進程才能佔用,正因如此,一個本不該在那裡監聽的守護進程才值得多看一眼。

註冊端口,1024 到 49151。 它們同樣經過登記,但任何進程都可以使用,所以這裡的數字告訴您的是它的登記用途,而不一定是您眼前看到的用途:8080 與 8443 登記為備用端口,但實際常常被用於完全不同的東西,開發用的服務器也可能出現在這個範圍內的任意數字上。

動態或私有端口,49152 到 65535。 這些端口有意保持未分配:操作系統會為連接的外出端臨時挑一個,它本身沒有穩定的含義。這個範圍內的數字只能在某一次會話的上下文裡去理解,所以離線參考數據對它說不出任何有用的東西。

怎麼讀這張表。 註冊表把端口同時分配給協議和傳輸方式,同一個數字上可能掛著幾個互不相干的服務:514 在 TCP 上是遠程 shell,在 UDP 上是 syslog;465 既承載一種較舊的郵件提交服務,也是一種 IGMP 變體。當某一行列出多個服務名時,請先看清每個名字後面方括號裡的傳輸方式,再判斷您的流量屬於哪一個。查不到某個數字並不是錯誤:註冊表只是沒有為它分配記錄,而頁面依然會告訴您它落在哪個範圍內。
如何使用這份清單。這裡說的並不是某個埠處於開放狀態 —— 只是說:如果它背後的服務對任何能連到這臺機器的人都有響應,那麼風險比這項服務本身的資歷所暗示的要高。請在您自己擁有的機器上、從內部、使用系統自帶的工具來檢查這些專案:

設計上就是明文傳輸。 23 telnet 21 ftp 389 ldap 161 snmp — 無論密碼還是團體名(community string),線上路上都是明文傳輸的。
檔案共享與遠端控制。 445 139 137 3389 5900 — 它們面向的是區域網,絕不應該能從網際網路訪問到,正因如此它們才成了掃描時最常發現的入口點。
資料庫與快取。 3306 1433 5432 6379 27017 11211 — 其中大多數原本設計為位於應用之後,而且有幾種在預設配置下根本沒有身份驗證。
控制介面。 2375 — 一個可以在宿主機上啟動容器的 API,它登記的傳輸方式是明文,就排在一個加密的同類埠旁邊。能訪問到它就等於能在機器上執行命令。
被流行軟體借用的埠號。 9200 — 登錄檔把它的記錄寫成一種移動 Web 服務埠,而同一個數字又被一款並未收錄進登錄檔的搜尋引擎產品廣泛使用。正因有這樣的行,表格顯示的才是登記的用途,而不是一份軟體清單。

別再靠猜了,應該這樣做。在您掌控的機器上,讓作業系統告訴您是哪個程序佔用了某個埠(ss -lntup用於 Linux,netstat -abno用於 Windows),再根據這個答案做判斷。埠能不能被訪問到是一個配置問題,正確的處置順序是:停掉該服務、把它繫結到迴環地址,或者把它置於防火牆之後。