天天看點

Linux檢視端口詳情lsof指令

例如,如果您正在運作基于 Apache 或 Ngnix 的 Web 伺服器,則使用的端口應該是 80 或 443。檢查端口将确認這一點。同樣,您可以檢查 SMTP 或 SSH 或其他一些服務正在使用哪個端口。在将端口配置設定給新服務時,了解哪些端口正在使用是很有必要的。

您還可以檢查是否有端口被用于安全入侵。在 Linux 中有多種檢查端口的方法。我将在本文中分享我最喜歡的兩種方法。

1、lsof指令

如果您直接或通過 SSH 登入到系統,則可以使用lsof 指令檢查其端口,通過 lsof 指令可以檢視目前登入的 Linux 系統中打開的端口。

sudo lsof -i -P -n

lsof 指令用于查找使用者使用的檔案和程序。這裡用到的選項是:

i:如果沒有指定IP位址,這個選項選擇列出所有網絡檔案

P:禁止将端口号轉換為端口名稱, 如 3306 轉為 MySQL

n:禁止IP轉換為hostname,預設是不加上-n參數

Linux檢視端口詳情lsof指令

然而,上面指令也向我們展示了許多計算機實際上并未監聽的額外端口。

您可以将此指令的輸出通過管道傳輸到 grep 指令并比對模式“LISTEN”,如下所示:

sudo lsof -i -P -n | grep LISTEN

這樣隻會顯示我們的計算機正在監聽的端口以及哪個服務正在使用所述開放端口。

2、netcat指令

nc (Netcat) 是一個指令行實用程式,它使用 TCP 和 UDP 協定通過網絡在計算機之間讀取和寫入資料。使用 netcat 指令可以檢查任何伺服器上的端口。

下面給出了 nc 指令的文法:

nc [options] host port

這個實用程式有一個 -z 标志。使用時,它将使 nc 掃描偵聽守護程式而不實際向端口發送任何資料。

将此與 -v 标志結合使用,啟用詳細模式,您可以獲得詳細的輸出。

以下是使用 nc 指令掃描系統開放端口的指令:

nc -z -v 1-65535 2>&1 | grep -v ‘Connection refused’

将 IP-ADDRESS 替換為您正在檢查端口的 Linux 系統的 IP 位址。可以是本機ip 127.0.0.1,也可以是遠端機器的ip位址。

至于我為什麼選擇值 1 到 65535,那是因為端口範圍從 1 開始,到 65535 結束。

最後,将輸出通過管道傳遞給 grep 指令。使用 -v 選項,它會排除任何傳回包括 “Connection refused” 的行。

這将顯示計算機上打開的所有端口,這些端口可由網絡上的另一台計算機通路(在防火牆允許的情況下)。

3、結論

繼續閱讀