1. 程式人生 > >Linux中檢查本地系統上的開放埠列表的方法

Linux中檢查本地系統上的開放埠列表的方法

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

你可以使用以下四個命令來完成這個工作。這些命令是非常出名的並被 Linux 管理員廣泛使用。
netstat:netstat (“network statistics”) 是一個顯示網路連線(進和出)相關資訊命令列工具,例如:路由表, 偽裝連線,多點傳送成員和網路埠。
nmap:Nmap (“Network Mapper”) 是一個網路探索與安全審計的開源工具。它旨在快速掃描大型網路。
ss: ss 被用於轉儲套接字統計資訊。它也可以類似 netstat 使用。相比其他工具它可以展示更多的TCP狀態資訊。
lsof

: lsof 是 List Open File 的縮寫. 它用於輸出被某個程序開啟的所有檔案。

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

它可以列出所有的 tcp、udp 連線和所有的 unix 套接字連線。
它用於發現發現網路問題,確定網路連線數量。

netstat -tplugn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      2038/master
tcp        0      0 127.0.0.1:199           0.0.0.0:*               LISTEN      1396/snmpd
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1398/httpd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1388/sshd
tcp6       0      0 :::25                   :::*                    LISTEN      2038/master
tcp6       0      0 :::22                   :::*                    LISTEN      1388/sshd
udp        0      0 0.0.0.0:39136           0.0.0.0:*                           1396/snmpd
udp        0      0 0.0.0.0:56130           0.0.0.0:*                           1396/snmpd
udp        0      0 0.0.0.0:40105           0.0.0.0:*                           1396/snmpd
udp        0      0 0.0.0.0:11584           0.0.0.0:*                           1396/snmpd
udp        0      0 0.0.0.0:30105           0.0.0.0:*                           1396/snmpd
udp        0      0 0.0.0.0:50656           0.0.0.0:*                           1396/snmpd
udp        0      0 0.0.0.0:1632            0.0.0.0:*                           1396/snmpd
udp        0      0 0.0.0.0:28265           0.0.0.0:*                           1396/snmpd
udp        0      0 0.0.0.0:40764           0.0.0.0:*                           1396/snmpd
udp        0      0 10.90.56.21:123         0.0.0.0:*                           895/ntpd
udp        0      0 127.0.0.1:123           0.0.0.0:*                           895/ntpd
udp        0      0 0.0.0.0:123             0.0.0.0:*                           895/ntpd
udp        0      0 0.0.0.0:53390           0.0.0.0:*                           1396/snmpd
udp        0      0 0.0.0.0:161             0.0.0.0:*                           1396/snmpd
udp6       0      0 :::123                  :::*                                895/ntpd
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      224.0.0.1
eth0            1      224.0.0.1
lo              1      ff02::1
lo              1      ff01::1
eth0            1      ff02::1
eth0            1      ff01::1

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

# # netstat -tplugn | grep :22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1388/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      1388/sshd
如何使用 Linux 命令 ss 檢查系統中的開放埠列表?

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

# ss -lntu
Netid  State      Recv-Q Send-Q                     Local Address:Port                                    Peer Address:Port
udp    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 通常用於安全審計,但許多系統和網路管理員發現它對於日常工作也非常有用,例如網路資產清點、管理服務升級計劃以及監控主機或服務正常執行時間。

nmap -sTU -O localhost
Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-20 09:57 CDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00028s latency).
Other addresses for localhost (not scanned): 127.0.0.1
Not shown: 1994 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
199/tcp open  smux
123/udp open  ntp
161/udp open  snmp
Device type: general purpose
Running: Linux 3.X
OS CPE: cpe:/o:linux:linux_kernel:3
OS details: Linux 3.7 - 3.9
Network Distance: 0 hops
OS 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 123
123/udp open  ntp
如何使用 Linux 命令 lsof 檢查系統中的開放埠列表?

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

# lsof -i
COMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
ntpd      895    ntp   16u  IPv4   18481      0t0  UDP *:ntp
ntpd      895    ntp   17u  IPv6   18482      0t0  UDP *:ntp
ntpd      895    ntp   18u  IPv4   18487      0t0  UDP localhost:ntp
ntpd      895    ntp   20u  IPv4   23020      0t0  UDP CentOS7.2daygeek.com:ntp
sshd     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 *:snmp
snmpd    1396   root    7u  IPv4   22729      0t0  UDP *:40105
snmpd    1396   root    8u  IPv4   22730      0t0  UDP *:50656
snmpd    1396   root    9u  IPv4   22731      0t0  UDP *:pammratc
snmpd    1396   root   10u  IPv4   22732      0t0  UDP *:30105
snmpd    1396   root   11u  IPv4   22733      0t0  UDP *:40764
snmpd    1396   root   12u  IPv4   22734      0t0  UDP *:53390
snmpd    1396   root   13u  IPv4   22735      0t0  UDP *:28265
snmpd    1396   root   14u  IPv4   22736      0t0  UDP *:11584
snmpd    1396   root   15u  IPv4   22737      0t0  UDP *:39136
snmpd    1396   root   16u  IPv4   22738      0t0  UDP *:56130
snmpd    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:80
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd    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