概述
開放的網絡端口是網絡最簡單的入口點。有時,可能會在從 Inte.NET 外部可見的端口上運行不需要的服務。如果這些服務容易受到攻擊,您的網絡將持續受到攻擊的威脅,因為每天都會對整個互聯網進行大規模掃描,以查找開放端口上的易受攻擊的服務。
了解如何掃描和查看 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
命令解釋:
- -t顯示 TCP 端口。
- -u顯示 UDP 端口。
- -l顯示監聽端口。如果您想查看所有端口(無論其狀態如何),請將其替換為a 。
- -n顯示端口的數值,而不是解析為服務名稱。例如,顯示端口22而不是SSH,即該端口上運行的服務。
2、使用 ss 檢查開放端口
ss 是 netstat 工具的現代版本。您會發現它已預安裝在所有現代 Linux 發行版中。使用 ss 檢查開放端口的語法與 netstat 相同。
以下是使用 ss 檢查開放端口的方法:
ss -tuln
命令解釋:
- -t顯示 TCP 端口。
- -u顯示 UDP 端口。
- -l顯示監聽端口。如果您想查看所有端口(無論其狀態如何),請將其替換為a 。
- -n顯示端口的數值,而不是解析為服務名稱。例如,顯示端口21而不是FTP,即該端口上運行的服務。
3、使用 Nmap 檢查開放端口
Nmap 是網絡安全和網絡領域最流行的工具之一。當涉及到網絡安全滲透測試時,它是一個主要名稱。它的主要用例是端口掃描,因此您不僅可以獲得有關系統中打開的端口的信息,還可以獲得它們是否易受攻擊和可利用的信息。
此外,如果您希望檢查已設置 IDS/IPS 和防火墻的遠程系統中的開放端口,請不要擔心,因為 Nmap 還可以使用正確的交換機繞過防火墻和 IDS/IPS。
以下是使用 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>
命令解釋:
- -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
命令解釋:
- -i列出所有網絡和 Internet 文件。
- -n不解析主機名。
5、使用 netcat 檢查開放端口
netcat 是一個命令行實用程序,可讓您從 TCP/UDP 連接讀取和寫入。請注意,這只是 netcat 的一項功能。您可以使用man netcat命令查看其手冊頁,以探索其所有功能以及如何使用它們。
以下是使用 netcat 掃描開放端口的方法:
nc -zv <ip-address> <start_port-end_port> | grep -v "refused"
命令解釋:
- -z將 netcat 設置為掃描儀模式。
- -v返回詳細輸出。
- grep -v "refused"返回不帶單詞“refused”的輸出行。這是為了防止當 netcat 沒有從端口接收到輸出時,終端被“連接被拒絕”消息堵塞。
- 2>&1:這是一個可選開關,在詳細模式下運行 netcat 時,您可能需要打開該開關才能使 grep 工作。netcat 將輸出返回到 stderr(用 2 表示)。因此,要 grep 輸出,您必須將 stderr 重定向到 stdout(用 1 表示),然后將其通過管道傳輸到 grep 中。
小結
了解哪些端口是開放的以及系統上正在運行哪些服務是防御潛在外部攻擊的重要一步。這使您可以搜索并關閉不必要的服務,查找過時的服務,還可以檢測系統上是否運行任何惡意文件。
如果您認真對待網絡安全,則應考慮安裝和設置 IDS 解決方案來監視網絡上的所有活動并實施規則集以防止未經請求的連接。