檢查Linux 上開放端口的5 種簡單方法

2023.07.13

檢查Linux 上開放端口的5 種簡單方法

開放的網絡端口是網絡最簡單的接入點。很多時候,我們需要在從Internet 外部可見的端口上運行不需要的服務。

開放的網絡端口是網絡最簡單的接入點。很多時候,我們需要在從Internet 外部可見的端口上運行不需要的服務。由於每天都會對整個互聯網進行大規模掃描,以查找開放端口上的易受攻擊的服務,因此如果這些服務容易受到攻擊,我們的網絡將持續受到攻擊的威脅。

了解如何掃描和查看Linux 系統上的開放端口,以便保護網絡免受威脅。

什麼是網絡端口?

網絡端口是系統的邏輯訪問點,可用作託管多個服務的通道。端口由16 位整數表示,因此最大端口號為65535。

我們可以將端口想像為房屋的門窗,所有門窗都是計算機的所有不同入口點。端口分為三種類型:系統端口(1-1023)、註冊端口(1024-49151) 和臨時或動態端口(49152-65535)。

當您啟動需要連接到互聯網的應用程序時,它會使用動態端口通過網絡傳輸和接收數據。但是,當您啟動Web 服務器或SSH 服務器時,它通常會綁定到系統端口或註冊端口。

對於HTTP 服務Web 服務器,默認系統端口是80,對於SSH,默認系統端口是22。端口範圍等這些規定是由互聯網號碼分配機構(IANA) 制定的。我們可以瀏覽有關端口的RFC,以獲得所有端口及其功能的完整列表。

了解最常見的易受攻擊的端口非常重要,這樣您就可以確保它們被關閉或受到保護。

1. 使用netstat檢查開放端口

netstat 是一個流行的實用程序,我們可以使用它來查看Linux 系統的網絡統計信息。它是net-tools 包的一部分。

由於開發人員缺乏適當的維護,net-tools 軟件包現已貶值。這也是為什麼在Linux 上運行流行的ifconfig 命令時可能會遇到“ifconfig:找不到命令”錯誤的原因。

因此,在現代系統上,必須首先安裝net-tools 軟件包,然後才能運行netstat 命令。以下是使用netstat 檢查開放端口的方法:

netstat -tuln
  • 1.

命令解釋:

  • -t顯示TCP 端口。
  • -u顯示UDP 端口。
  • -l顯示監聽端口。如果您想查看所有端口(無論其狀態如何),請將其替換為a 。
  • -n顯示端口的數值,而不是解析為服務名稱。例如,顯示端口22而不是SSH,即該端口上運行的服務。

2. 使用ss 檢查開放端口

ss 是netstat 工具的現代版本。我們會發現它已預安裝在所有現代Linux 發行版中。使用ss 檢查開放端口的語法與netstat 相同。

以下是使用ss 檢查開放端口的方法:

ss -tuln
  • 1.

命令解釋:

  • -t顯示TCP 端口。
  • -u顯示UDP 端口。
  • -l顯示監聽端口。如果您想查看所有端口(無論其狀態如何),請將其替換為a 。
  • -n顯示端口的數值,而不是解析為服務名稱。例如,顯示端口21而不是FTP,即該端口上運行的服務。

3. 使用Nmap 檢查開放端口

Nmap 是網絡安全和網絡領域最流行的工具之一。當涉及到網絡安全滲透測試時,它是一個主要名稱。它的主要用例是端口掃描,因此您不僅可以獲得有關係統中打開的端口的信息,還可以獲得它們是否易受攻擊和可利用的信息。

此外,如果您希望檢查已設置IDS/IPS 和防火牆的遠程系統中的開放端口,請不要擔心,因為Nmap 還可以使用正確的交換機繞過防火牆和IDS/IPS。

查看這份針對初學者的Nmap 綜合指南,探索Nmap 的各種功能以及如何使用它們。儘管可以,但不建議嘗試繞過防火牆,因為它並不完全可靠,因此最好通過SSH 連接到遠程服務器,然後在本地運行Nmap。

以下是使用Nmap 檢查開放端口的命令:

nmap -sTU -sV <ip-address> -T 5 --min-rate 9000 --min-parallelism 9000 --initial-rtt-timeout 50ms --max-rtt-timeout 3000ms --max-retries 50 -Pn --disable-arp-ping -n --script vuln,exploit,auth -v -oX <filename>
  • 1.

命令解釋:

  • -sTU將掃描類型設置為TCP 連接和UDP 掃描。
  • -T 5將計時模板設置為激進,以實現極快的掃描(不建議在未受保護的系統上使用,因為這可能會導致DoS 攻擊)。
  • -sV打開服務掃描。
  • --min-rate 9000告訴Nmap 每秒發送9000 個數據包。
  • --initial-rtt-timeout 50ms告訴Nmap 首先等待50ms 以等待對其發送的每個SYN 數據包的響應。
  • --max-rtt-timeout 3000ms告訴Nmap 等待響應最多3000ms。
  • --min-parallelism 9000將同時運行腳本的最小數量設置為9000。
  • --max-retries 50告訴Nmap 重試50 次以連接到端口。
  • -Pn禁用ping 探測。
  • --disable-arp-ping禁用ARP 探測。
  • -n禁用DNS 解析。
  • --script vuln,exploit,auth運行三個腳本來測試已發現端口中不同類型的漏洞。
  • -v返回詳細輸出。
  • -oX將結果保存到XML 文件。
  • -6用於掃描IPv6 地址的可選參數。

4. 使用lsof 檢查開放端口

Linux 中的lsof 命令用於列出打開的文件。但是,如果我們向其中添加一些交換機,將能夠看到本地計算機上開放的互聯網連接和端口。以下是使用lsof 檢查開放端口的方法:

lsof -i -n
  • 1.

命令解釋:

  • -i列出所有網絡和Internet 文件。
  • -n不解析主機名。

5. 使用netcat 檢查開放端口

netcat 是一個命令行實用程序,可讓您從TCP/UDP 連接讀取和寫入。請注意,這只是netcat 的一項功能。您可以使用man netcat命令查看其手冊頁,以探索其所有功能以及如何使用它們。

以下是使用netcat 掃描開放端口的方法:

nc -zv <ip-address> <start_port-end_port> | grep -v "refused"
  • 1.

命令解釋:

  • -z將netcat 設置為掃描儀模式。
  • -v返回詳細輸出。
  • grep -v "refused"返回不帶單詞“refused”的輸出行。這是為了防止當netcat 沒有從端口接收到輸出時,終端被“連接被拒絕”消息堵塞。
  • 2>&1:這是一個可選開關,在詳細模式下運行netcat 時,您可能需要打開該開關才能使grep 工作。netcat 將輸出返回到stderr(用2 表示)。因此,要grep 輸出,您必須將stderr 重定向到stdout(用1 表示),然後將其通過管道傳輸到grep 中。

您對網絡了解越深,就越能更好地保護它

了解哪些端口是開放的以及系統上正在運行哪些服務是防禦潛在外部攻擊的重要一步。這使我們可以搜索並關閉不必要的服務,查找過時的服務,還可以檢測系統上是否運行任何惡意文件,例如bind或reverse shell後門。

原文標題:5 Easy Ways to Check for Open Ports on Linux

原文作者:DEBARSHI DAS