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