連接埠掃描器

約二十個常用連接埠,每個只做一次 TCP 連線,探測從 sysosx 的伺服器發出——給出三種誠實的答案,而不是兩種。一個連接埠可以是開放的(有東西在回應)、關閉的(主機主動拒絕),或是被過濾的(沉默——通常是防火牆在丟棄封包,並不證明後面什麼都沒有)。預設目標是 scanme.nmap.org,這是 nmap 專案專門營運、供人們學習掃描的公開主機;對於其他任何主機,請只掃描你自己的伺服器或你有權測試的伺服器。

想持續監控這個嗎?用 myeventwatch 免費監控——到期和停機提醒,無需綁卡。

掃描測量的是什麼

連接埠掃描常被描述為「檢查哪些門是開著的」,這個比喻準確得足夠有用——但要修正一點。一扇門可以是開著的、鎖著的,或者乾脆無人回應:敲門後聽不到任何聲音,和發現門鎖著不是一回事,只報告開放和關閉的掃描器把第三種情況藏了起來。因此,本掃描器把開放、關閉和被過濾報告為三種不同的狀態。開放意味著連線成功,所以有服務在監聽並接受連線。關閉意味著主機發回了重置——它活著,而且那個連接埠上什麼都沒有。被過濾意味著整整一秒的等待在沉默中過去,這正是防火牆丟棄封包時從外面看起來的樣子;那個連接埠在防火牆後面可能有服務,掃描無法斷言並非如此。把被過濾單獨列出,正是「結果可用」和「結果悄悄誤導你」之間的區別。

這次掃描刻意保持狹窄。它用固定的約二十個連接埠列表——Web(80、8080、8443、443)、郵件(25、110、143、993、995)、DNS(53)、遠端存取(22、23、3389、5900)、檔案共享(445)、資料庫(3306、5432、27017)以及其他幾個——只做普通的 TCP 連線,不做別的。不讀取橫幅,所以掃描永遠不會得知(或洩露)服務版本;不用 UDP,因為它的「被過濾」答案雜訊大得多;也無法提供你自己的連接埠,因為任意連接埠輸入會把一個初步查看工具變成通用映射服務。目標本身只解析一次,每次連線都去往那一個固定的地址,因此掃描中途更改的名稱無法把探測重新導向到別處。在底層,本頁呼叫 sysosx 伺服器上的 GET /api/check/port-scan,它並行執行這二十次連線,並把結果快取十分鐘。

如何閱讀結果

先看開放連接埠——它們是真實的攻擊面,是網際網路能觸及的服務。開放的 22 或 3389 意味著遠端存取可以從任何地方到達,這可能是有意的(一台你管理的伺服器),也可能是首先要限制到你自己地址的東西。一個面向網際網路開放的資料庫連接埠(3306、5432、27017)幾乎從來不是有意的,值得立即關注:資料庫應該由應用程式存取,而不是由整個網際網路存取。開放的 80 和 443 對 Web 伺服器來說是正常的;開放的郵件連接埠對郵件伺服器來說是正常的;其他任何開放的連接埠都應該能解釋自己。關閉的連接埠什麼都不用做:主機活著並且在拒絕,這正是大多數伺服器上這份列表中大多數連接埠的預期狀態。被過濾的連接埠只在你預期那裡有東西時才值得再看一眼——一個你執行、但掃描看不見的服務,通常是防火牆規則在履行職責,或者服務綁定到了錯誤的介面,單憑掃描無法區分這兩種情況。完全沒有開放連接埠的結果是正常結果,不是錯誤:它意味著從這台伺服器的有利位置看,二十個常用服務沒有一個可達,這正是一台加固主機該有的樣子。

相關工具:當你知道 443 已開放後,用SSL 評級器檢查它的 TLS 設定;想把可達性和記錄一起看,用網站健康檢查;當問題是一個名字指向哪裡、而不是它上面有什麼在回應時,用DNS 傳播檢查器。

延伸閱讀:開放連接埠說明了伺服器的什麼——如何像維運人員一樣閱讀一次掃描,哪些開放連接埠是正常的,哪些是凌晨三點等著發生的呼叫。

常見問題

這和執行 nmap 有什麼不同?

Nmap 以各種方式掃描一切:完整的連接埠範圍、UDP、版本偵測、作業系統指紋識別。這個工具只從 sysosx 的伺服器做一件狹窄的事——對一份固定的約二十個常用連接埠列表做 TCP 連線,別無其他。不讀取橫幅、不做版本偵測、不用 UDP、不支援自訂連接埠。這種狹窄正是它的意義所在:它回答「常用連接埠上在監聽什麼?」,而不變成一個任何人都能對準任何目標的通用掃描器。

開放、關閉和被過濾到底是什麼意思?

開放意味著一次 TCP 連線成功了——有東西在監聽並在那個連接埠上接受連線。關閉意味著主機主動拒絕了連線(一個重置封包),這是活著的主機在那個連接埠上什麼都沒有時的回答方式。被過濾意味著那個連接埠在一秒內完全沒有給出任何答案——通常是防火牆在悄悄丟棄封包。被過濾不等於關閉:被過濾的連接埠在防火牆後面可能有服務,唯一誠實的說法是「沒有答案」。結果表把這三種狀態全部分開保存,正是出於這個原因。

為什麼只有二十個連接埠,為什麼我不能添加自己的?

因為帶有任意連接埠輸入的連接埠掃描器是一個用來映射網際網路上任何主機的工具,而這個站點不會成為那樣的工具。這份列表涵蓋了初步查看時重要的連接埠——Web、郵件、DNS、資料庫、遠端存取、檔案共享——伺服器會拒絕列表之外的所有連接埠。如果你需要對你擁有的主機做完整掃描,請從你自己的機器上執行 nmap,在那裡你控制範圍和後果。

為什麼預設是 scanme.nmap.org?

因為它正是為這個目的而存在的:nmap 專案把它作為任何人都可以掃描的公開目標來執行,讓人們學習掃描是如何運作的。它是網際網路上唯一一個掃描它不需要討論許可的主機。對於其他任何主機,規則很簡單:掃描你自己的伺服器、你有權測試的伺服器,或公開測試目標——永遠不要掃描陌生人的基礎設施。

為什麼結果要快取十分鐘,為什麼每小時只有五次新掃描?

一次掃描是二十次並行的 TCP 連線,不是一次握手,所以它比其他檢查成本更高,也更容易被濫用來做批量探測。十分鐘的快取意味著對同一台主機的重複檢查不花任何成本,而更嚴格的新掃描限制(每位訪客每小時五次,最多每分鐘兩次)讓這個工具對檢查自己伺服器的人保持可用,又不會變成一個探測服務。快取的結果會如此標註;一台主機的開放連接埠很少會一分鐘一變。