Linux檢視埠詳情

大雄45發表於2023-01-09
導讀 無論您是使用   作為伺服器還是桌面環境,瞭解開放的埠或正在使用的埠在各種情況下都會有所幫助。哪個埠被哪個服務佔用?有多少個開放埠?本文介紹如何掃描 Linux 系統或任何遠端系統上開放的埠。

例如,如果您正在執行基於 Apache 或 Ngnix 的 Web 伺服器,則使用的埠應該是 80 或 443。檢查埠將確認這一點。同樣,您可以檢查 SMTP 或 SSH 或其他一些服務正在使用哪個埠。在將埠分配給新服務時,瞭解哪些埠正在使用是很有必要的。

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

1、lsof

如果您直接或透過 SSH 登入到系統,則可以使用lsof  檢查其埠,透過 lsof 命令可以檢視當前登入的 Linux 系統中開啟的埠。

sudo lsof -i -P -n

lsof 命令用於查詢使用者使用的檔案和程式。這裡用到的選項是:

  1. i:如果沒有指定IP地址,這個選項選擇列出所有網路檔案
  1. P:禁止將埠號轉換為埠名稱, 如 3306 轉為 MySQL
  1. n:禁止IP轉換為hostname,預設是不加上-n引數

Linux檢視埠詳情Linux檢視埠詳情

然而,上面命令也向我們展示了許多計算機實際上並未監聽的額外埠。

您可以將此命令的輸出透過管道傳輸到 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、結論

在這兩種方法中,我更喜歡 lsof 命令。它比 nc 命令更快。但是,您需要登入系統並擁有 sudo 訪問許可權。換句話說,如果您正在管理系統,則 lsof 是更合適的選擇。

nc 命令具有無需登入即可掃描埠的靈活性,但當掃描遠端主機時因為需要網路互動會很慢, 特別是面臨超時請求時,可使用 -q secs 引數設定超時時間。

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2888016/,如需轉載,請註明出處,否則將追究法律責任。

相關文章