終極指南:如何檢查Linux系統(tǒng)的開放端口,保障網(wǎng)絡(luò)安全
概述
開放的網(wǎng)絡(luò)端口是網(wǎng)絡(luò)最簡單的入口點。有時,可能會在從 Internet 外部可見的端口上運行不需要的服務(wù)。如果這些服務(wù)容易受到攻擊,您的網(wǎng)絡(luò)將持續(xù)受到攻擊的威脅,因為每天都會對整個互聯(lián)網(wǎng)進行大規(guī)模掃描,以查找開放端口上的易受攻擊的服務(wù)。
了解如何掃描和查看 Linux 系統(tǒng)上的開放端口,以便保護您的網(wǎng)絡(luò)免受威脅。
什么是網(wǎng)絡(luò)端口?
網(wǎng)絡(luò)端口是系統(tǒng)的邏輯訪問點,可用作托管多個服務(wù)的通道。端口由 16 位整數(shù)表示,因此最大端口號為 65535。
您可以將端口想象為房屋的門窗,基本上是房屋或計算機的所有不同入口點。端口分為三種類型:系統(tǒng)端口 (1-1023)、注冊端口 (1024-49151) 和臨時或動態(tài)端口 (49152-65535)。
當您啟動需要連接到互聯(lián)網(wǎng)的應(yīng)用程序時,它會使用動態(tài)端口通過網(wǎng)絡(luò)傳輸和接收數(shù)據(jù)。但是,當您啟動 Web 服務(wù)器或 SSH 服務(wù)器時,它通常會綁定到系統(tǒng)端口或注冊端口。
對于 HTTP 服務(wù) Web 服務(wù)器,默認系統(tǒng)端口是 80,對于 SSH,默認系統(tǒng)端口是 22。端口范圍等這些規(guī)定是由互聯(lián)網(wǎng)號碼分配機構(gòu) (IANA) 制定的。您可以瀏覽有關(guān)端口的 RFC,以獲得所有端口及其功能的完整列表。
了解最常見的易受攻擊的端口非常重要,這樣您就可以確保它們被關(guān)閉或受到保護。
1、使用netstat檢查開放端口
netstat 是一個流行的實用程序,您可以使用它來查看 Linux 系統(tǒng)的網(wǎng)絡(luò)統(tǒng)計信息。它是 net-tools 包的一部分。
由于開發(fā)人員缺乏適當?shù)木S護,net-tools 軟件包現(xiàn)已貶值。這也是為什么在 Linux 上運行流行的 ifconfig 命令時可能會遇到“ifconfig:找不到命令”錯誤的原因。
因此,在現(xiàn)代系統(tǒng)上,您可能必須首先安裝 net-tools 軟件包,然后才能運行 netstat 命令。以下是使用 netstat 檢查開放端口的方法:
netstat -tuln
命令解釋:
- -t顯示 TCP 端口。
- -u顯示 UDP 端口。
- -l顯示監(jiān)聽端口。如果您想查看所有端口(無論其狀態(tài)如何),請將其替換為a 。
- -n顯示端口的數(shù)值,而不是解析為服務(wù)名稱。例如,顯示端口22而不是SSH,即該端口上運行的服務(wù)。
2、使用 ss 檢查開放端口
ss 是 netstat 工具的現(xiàn)代版本。您會發(fā)現(xiàn)它已預(yù)安裝在所有現(xiàn)代 Linux 發(fā)行版中。使用 ss 檢查開放端口的語法與 netstat 相同。
以下是使用 ss 檢查開放端口的方法:
ss -tuln
命令解釋:
- -t顯示 TCP 端口。
- -u顯示 UDP 端口。
- -l顯示監(jiān)聽端口。如果您想查看所有端口(無論其狀態(tài)如何),請將其替換為a 。
- -n顯示端口的數(shù)值,而不是解析為服務(wù)名稱。例如,顯示端口21而不是FTP,即該端口上運行的服務(wù)。
3、使用 Nmap 檢查開放端口
Nmap 是網(wǎng)絡(luò)安全和網(wǎng)絡(luò)領(lǐng)域最流行的工具之一。當涉及到網(wǎng)絡(luò)安全滲透測試時,它是一個主要名稱。它的主要用例是端口掃描,因此您不僅可以獲得有關(guān)系統(tǒng)中打開的端口的信息,還可以獲得它們是否易受攻擊和可利用的信息。
此外,如果您希望檢查已設(shè)置 IDS/IPS 和防火墻的遠程系統(tǒng)中的開放端口,請不要擔(dān)心,因為 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將掃描類型設(shè)置為 TCP 連接和 UDP 掃描。
- -T 5將計時模板設(shè)置為激進,以實現(xiàn)極快的掃描(不建議在未受保護的系統(tǒng)上使用,因為這可能會導(dǎo)致 DoS 攻擊)。
- -sV打開服務(wù)掃描。
- --min-rate 9000告訴 Nmap 每秒發(fā)送 9000 個數(shù)據(jù)包。
- --initial-rtt-timeout 50ms告訴 Nmap 首先等待 50ms 以等待對其發(fā)送的每個 SYN 數(shù)據(jù)包的響應(yīng)。
- --max-rtt-timeout 3000ms告訴 Nmap 等待響應(yīng)最多 3000ms。
- --min-parallelism 9000將同時運行腳本的最小數(shù)量設(shè)置為 9000。
- --max-retries 50告訴 Nmap 重試 50 次以連接到端口。
- -Pn禁用 ping 探測。
- --disable-arp-ping禁用 ARP 探測。
- -n禁用 DNS 解析。
- --script vuln,exploit,auth運行三個腳本來測試已發(fā)現(xiàn)端口中不同類型的漏洞。
- -v返回詳細輸出。
- -oX將結(jié)果保存到 XML 文件。
- -6用于掃描 IPv6 地址的可選參數(shù)。
4、使用 lsof 檢查開放端口
Linux 中的 lsof 命令用于列出打開的文件。但是,如果您向其中添加一些交換機,您將能夠看到本地計算機上開放的互聯(lián)網(wǎng)連接和端口。以下是使用 lsof 檢查開放端口的方法:
lsof -i -n
命令解釋:
- -i列出所有網(wǎng)絡(luò)和 Internet 文件。
- -n不解析主機名。
5、使用 netcat 檢查開放端口
netcat 是一個命令行實用程序,可讓您從 TCP/UDP 連接讀取和寫入。請注意,這只是 netcat 的一項功能。您可以使用man netcat命令查看其手冊頁,以探索其所有功能以及如何使用它們。
以下是使用 netcat 掃描開放端口的方法:
nc -zv <ip-address> <start_port-end_port> | grep -v "refused"
命令解釋:
- -z將 netcat 設(shè)置為掃描儀模式。
- -v返回詳細輸出。
- grep -v "refused"返回不帶單詞“refused”的輸出行。這是為了防止當 netcat 沒有從端口接收到輸出時,終端被“連接被拒絕”消息堵塞。
- 2>&1:這是一個可選開關(guān),在詳細模式下運行 netcat 時,您可能需要打開該開關(guān)才能使 grep 工作。netcat 將輸出返回到 stderr(用 2 表示)。因此,要 grep 輸出,您必須將 stderr 重定向到 stdout(用 1 表示),然后將其通過管道傳輸?shù)?grep 中。
小結(jié)
了解哪些端口是開放的以及系統(tǒng)上正在運行哪些服務(wù)是防御潛在外部攻擊的重要一步。這使您可以搜索并關(guān)閉不必要的服務(wù),查找過時的服務(wù),還可以檢測系統(tǒng)上是否運行任何惡意文件。
如果您認真對待網(wǎng)絡(luò)安全,則應(yīng)考慮安裝和設(shè)置 IDS 解決方案來監(jiān)視網(wǎng)絡(luò)上的所有活動并實施規(guī)則集以防止未經(jīng)請求的連接。