在Linux或類Unix系統(tǒng)下如何確定端口是否正在使用?如何驗證 Linux 服務(wù)器上正在偵聽哪些端口?如何使用 CLI 檢查 Linux 操作系統(tǒng)上的端口是否正在使用?
驗證哪些端口正在服務(wù)器網(wǎng)絡(luò)接口上偵聽非常重要。您需要注意開放端口以檢測入侵。除了入侵之外,出于故障排除的目的,可能有必要檢查端口是否已被服務(wù)器上的其他應(yīng)用程序使用。
例如,您可以在同一系統(tǒng)上安裝 Apache 和 Nginx 服務(wù)器。因此有必要知道 Apache 或 Nginx 是否正在使用 TCP 端口#80/443。本快速教程提供了使用 netstat、nmap 和 lsof 命令檢查正在使用的端口并查看正在使用該端口的應(yīng)用程序的步驟。
如何檢查端口是否被使用
查看Linux上的監(jiān)聽端口和應(yīng)用程序:
1.打開終端應(yīng)用程序,即 shell 提示符。
2.在 Linux 上運(yùn)行以下任一命令來查看開放端口:
3.對于最新版本的 Linux,請使用 ss 命令。例如,ss -tulw
讓我們詳細(xì)看看命令及其輸出。
選項#1:lsof 命令
語法為: 示例輸出:
考慮上面輸出的最后一行:
sshd 85379 root 3u IPv4 0xffff80000039e000 0t0 TCP 10.86.128.138:22(監(jiān)聽)
- sshd是應(yīng)用程序的名稱。
- 10.86.128.138是 sshd 應(yīng)用程序綁定到的 IP 地址(監(jiān)聽)
- 22是正在使用的 TCP 端口 (LISTEN)
- 85379是sshd進(jìn)程的進(jìn)程ID
查看 Internet 網(wǎng)絡(luò)服務(wù)列表
/ etc/services是互聯(lián)網(wǎng)服務(wù)的友好文本名稱與其底層分配的端口號和協(xié)議類型之間的文本文件映射。使用cat命令或者more命令/ less命令查看:$less /etc/services
選項#2:netstat 或 ss 命令
您可以使用netstat檢查監(jiān)聽端口和應(yīng)用程序,如下所示。
Linux netstat 語法
運(yùn)行 netstat 命令和grep 命令來過濾掉處于 LISTEN 狀態(tài)的端口: 或過濾掉特定的 TCP 端口,例如 443: 其中 netstat 命令選項為:
- -t :選擇所有TCP端口
- -u :選擇所有UDP端口
- -l :顯示監(jiān)聽服務(wù)器套接字(在列表狀態(tài)下打開TCP和UDP端口)
- -p :顯示套接字的 PID/程序名稱。換句話說,該選項告訴誰打開了 TCP 或 UDP 端口。例如,在我的系統(tǒng)上,Nginx 打開了 TCP 端口 80/443,因此我將 /usr/sbin/nginx 或其 PID。
- -n :不解析名稱(避免 dns 查找,這可以加快繁忙的 Linux/Unix 服務(wù)器上的 netstat 速度)
Linux 上的netstat 命令已棄用一段時間。因此,需要使用ss命令,如下:
其中,ss命令選項如下:
- -t :在 Linux 上僅顯示 TCP 套接字
- -u :在Linux上僅顯示UDP套接字
- -l :顯示監(jiān)聽套接字。例如,SSHD 服務(wù)器打開 TCP 端口 22。
- -p :列出打開套接字的進(jìn)程名稱
- -n :不解析服務(wù)名稱,即不使用 DNS
FreeBSD/macOS (OS X) netstat 語法
語法如下: 您也可以在 macOS 或 FreeBSD 上使用 sockstat 命令來顯示打開的 TCP 或 UDP 端口。例如:我的FreeBSD 服務(wù)器版本13.xx 的輸出:
OpenBSD netstat 語法
選項#3:nmap 命令
語法是:
-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
593瀏覽量
27403 -
PID控制
+關(guān)注
關(guān)注
10文章
460瀏覽量
40100 -
Shell
+關(guān)注
關(guān)注
1文章
365瀏覽量
23379 -
TCP通信
+關(guān)注
關(guān)注
0文章
146瀏覽量
4223
發(fā)布評論請先 登錄
相關(guān)推薦
評論