如何檢查 Linux 中的開放埠列表?

2019-04-17 08:51:00

最近,我們就同一主題寫了兩篇文章。這些文章內容幫助你如何檢查遠端伺服器中給定的埠是否開啟。

如果你想 請點選連結瀏覽。如果你想 請點選連結瀏覽。如果你想 請點選連結瀏覽。

但是本文幫助你檢查本地系統上的開放埠列表。

在 Linux 中很少有用於此目的的實用程式。然而,我提供了四個最重要的 Linux 命令來檢查這一點。

你可以使用以下四個命令來完成這個工作。這些命令是非常出名的並被 Linux 管理員廣泛使用。

  • netstat:netstat (“network statistics”) 是一個顯示網路連線(進和出)相關資訊命令列工具,例如:路由表, 偽裝連線,多點傳送成員和網路埠。
  • nmap:Nmap (“Network Mapper”) 是一個網路探索與安全審計的開源工具。它旨在快速掃描大型網路。
  • ss: ss 被用於轉儲通訊端統計資訊。它也可以類似 netstat 使用。相比其他工具它可以展示更多的TCP狀態資訊。
  • lsof: lsof 是 List Open File 的縮寫. 它用於輸出被某個進程開啟的所有檔案。

如何使用 Linux 命令 netstat 檢查系統中的開放埠列表

netstat 是 Network Statistics 的縮寫,是一個顯示網路連線(進和出)相關資訊命令列工具,例如:路由表、偽裝連線、多播成員和網路埠。

它可以列出所有的 tcp、udp 連線和所有的 unix 通訊端連線。

它用於發現發現網路問題,確定網路連線數量。

# netstat -tplugnActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program nametcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      2038/mastertcp        0      0 127.0.0.1:199           0.0.0.0:*               LISTEN      1396/snmpdtcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1398/httpdtcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1388/sshdtcp6       0      0 :::25                   :::*                    LISTEN      2038/mastertcp6       0      0 :::22                   :::*                    LISTEN      1388/sshdudp        0      0 0.0.0.0:39136           0.0.0.0:*                           1396/snmpdudp        0      0 0.0.0.0:56130           0.0.0.0:*                           1396/snmpdudp        0      0 0.0.0.0:40105           0.0.0.0:*                           1396/snmpdudp        0      0 0.0.0.0:11584           0.0.0.0:*                           1396/snmpdudp        0      0 0.0.0.0:30105           0.0.0.0:*                           1396/snmpdudp        0      0 0.0.0.0:50656           0.0.0.0:*                           1396/snmpdudp        0      0 0.0.0.0:1632            0.0.0.0:*                           1396/snmpdudp        0      0 0.0.0.0:28265           0.0.0.0:*                           1396/snmpdudp        0      0 0.0.0.0:40764           0.0.0.0:*                           1396/snmpdudp        0      0 10.90.56.21:123         0.0.0.0:*                           895/ntpdudp        0      0 127.0.0.1:123           0.0.0.0:*                           895/ntpdudp        0      0 0.0.0.0:123             0.0.0.0:*                           895/ntpdudp        0      0 0.0.0.0:53390           0.0.0.0:*                           1396/snmpdudp        0      0 0.0.0.0:161             0.0.0.0:*                           1396/snmpdudp6       0      0 :::123                  :::*                                895/ntpdIPv6/IPv4 Group MembershipsInterface       RefCnt Group--------------- ------ ---------------------lo              1      224.0.0.1eth0            1      224.0.0.1lo              1      ff02::1lo              1      ff01::1eth0            1      ff02::1eth0            1      ff01::1

你也可以使用下面的命令檢查特定的埠。

# # netstat -tplugn | grep :22tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1388/sshdtcp6       0      0 :::22                   :::*                    LISTEN      1388/sshd

如何使用 Linux 命令 ss 檢查系統中的開放埠列表?

ss 被用於轉儲通訊端統計資訊。它也可以顯示類似 netstat 的資訊。相比其他工具它可以展示更多的 TCP 狀態資訊。

# ss -lntuNetid  State      Recv-Q Send-Q                     Local Address:Port                                    Peer Address:Portudp    UNCONN     0      0                                      *:39136                                              *:*udp    UNCONN     0      0                                      *:56130                                              *:*udp    UNCONN     0      0                                      *:40105                                              *:*udp    UNCONN     0      0                                      *:11584                                              *:*udp    UNCONN     0      0                                      *:30105                                              *:*udp    UNCONN     0      0                                      *:50656                                              *:*udp    UNCONN     0      0                                      *:1632                                               *:*udp    UNCONN     0      0                                      *:28265                                              *:*udp    UNCONN     0      0                                      *:40764                                              *:*udp    UNCONN     0      0                            10.90.56.21:123                                                *:*udp    UNCONN     0      0                              127.0.0.1:123                                                *:*udp    UNCONN     0      0                                      *:123                                                *:*udp    UNCONN     0      0                                      *:53390                                              *:*udp    UNCONN     0      0                                      *:161                                                *:*udp    UNCONN     0      0                                     :::123                                               :::*tcp    LISTEN     0      100                                    *:25                                                 *:*tcp    LISTEN     0      128                            127.0.0.1:199                                                *:*tcp    LISTEN     0      128                                    *:80                                                 *:*tcp    LISTEN     0      128                                    *:22                                                 *:*tcp    LISTEN     0      100                                   :::25                                                :::*tcp    LISTEN     0      128                                   :::22                                                :::*

你也可以使用下面的命令檢查特定的埠。

# # ss -lntu | grep ':25'tcp    LISTEN     0      100       *:25                    *:*tcp    LISTEN     0      100      :::25                   :::*

如何使用 Linux 命令 nmap 檢查系統中的開放埠列表?

Nmap (“Network Mapper”) 是一個網路探索與安全審計的開源工具。它旨在快速掃描大型網路,當然它也可以工作在獨立主機上。

Nmap 使用裸 IP 封包以一種新穎的方式來確定網路上有哪些主機可用,這些主機提供什麼服務(應用程式名稱和版本),它們執行什麼作業系統(版本),使用什麼型別的封包過濾器/防火牆,以及許多其他特徵。

雖然 Nmap 通常用於安全審計,但許多系統和網路管理員發現它對於日常工作也非常有用,例如網路資產清點、管理服務升級計劃以及監控主機或服務正常執行時間。

# nmap -sTU -O localhostStarting Nmap 6.40 ( http://nmap.org ) at 2019-03-20 09:57 CDTNmap scan report for localhost (127.0.0.1)Host is up (0.00028s latency).Other addresses for localhost (not scanned): 127.0.0.1Not shown: 1994 closed portsPORT    STATE SERVICE22/tcp  open  ssh25/tcp  open  smtp80/tcp  open  http199/tcp open  smux123/udp open  ntp161/udp open  snmpDevice type: general purposeRunning: Linux 3.XOS CPE: cpe:/o:linux:linux_kernel:3OS details: Linux 3.7 - 3.9Network Distance: 0 hopsOS detection performed. Please report any incorrect results at http://nmap.org/submit/ .Nmap done: 1 IP address (1 host up) scanned in 1.93 seconds

你也可以使用下面的命令檢查特定的埠。

# nmap -sTU -O localhost | grep 123123/udp open  ntp

如何使用 Linux 命令 lsof 檢查系統中的開放埠列表?

它向你顯示系統上開啟的檔案列表以及開啟它們的進程。還會向你顯示與檔案相關的其他資訊。

# lsof -iCOMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAMEntpd      895    ntp   16u  IPv4   18481      0t0  UDP *:ntpntpd      895    ntp   17u  IPv6   18482      0t0  UDP *:ntpntpd      895    ntp   18u  IPv4   18487      0t0  UDP localhost:ntpntpd      895    ntp   20u  IPv4   23020      0t0  UDP CentOS7.2daygeek.com:ntpsshd     1388   root    3u  IPv4   20065      0t0  TCP *:ssh (LISTEN)sshd     1388   root    4u  IPv6   20067      0t0  TCP *:ssh (LISTEN)snmpd    1396   root    6u  IPv4   22739      0t0  UDP *:snmpsnmpd    1396   root    7u  IPv4   22729      0t0  UDP *:40105snmpd    1396   root    8u  IPv4   22730      0t0  UDP *:50656snmpd    1396   root    9u  IPv4   22731      0t0  UDP *:pammratcsnmpd    1396   root   10u  IPv4   22732      0t0  UDP *:30105snmpd    1396   root   11u  IPv4   22733      0t0  UDP *:40764snmpd    1396   root   12u  IPv4   22734      0t0  UDP *:53390snmpd    1396   root   13u  IPv4   22735      0t0  UDP *:28265snmpd    1396   root   14u  IPv4   22736      0t0  UDP *:11584snmpd    1396   root   15u  IPv4   22737      0t0  UDP *:39136snmpd    1396   root   16u  IPv4   22738      0t0  UDP *:56130snmpd    1396   root   17u  IPv4   22740      0t0  TCP localhost:smux (LISTEN)httpd    1398   root    3u  IPv4   20337      0t0  TCP *:http (LISTEN)master   2038   root   13u  IPv4   21638      0t0  TCP *:smtp (LISTEN)master   2038   root   14u  IPv6   21639      0t0  TCP *:smtp (LISTEN)sshd     9052   root    3u  IPv4 1419955      0t0  TCP CentOS7.2daygeek.com:ssh->Ubuntu18-04.2daygeek.com:11408 (ESTABLISHED)httpd   13371 apache    3u  IPv4   20337      0t0  TCP *:http (LISTEN)httpd   13372 apache    3u  IPv4   20337      0t0  TCP *:http (LISTEN)httpd   13373 apache    3u  IPv4   20337      0t0  TCP *:http (LISTEN)httpd   13374 apache    3u  IPv4   20337      0t0  TCP *:http (LISTEN)httpd   13375 apache    3u  IPv4   20337      0t0  TCP *:http (LISTEN)

你也可以使用下面的命令檢查特定的埠。

# lsof -i:80COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAMEhttpd    1398   root    3u  IPv4  20337      0t0  TCP *:http (LISTEN)httpd   13371 apache    3u  IPv4  20337      0t0  TCP *:http (LISTEN)httpd   13372 apache    3u  IPv4  20337      0t0  TCP *:http (LISTEN)httpd   13373 apache    3u  IPv4  20337      0t0  TCP *:http (LISTEN)httpd   13374 apache    3u  IPv4  20337      0t0  TCP *:http (LISTEN)httpd   13375 apache    3u  IPv4  20337      0t0  TCP *:http (LISTEN)