幫助中心
這里有最新的使用文檔和教程
Debian系統(tǒng)如何查看端口開放狀態(tài)
查看系統(tǒng)端口狀態(tài)
要查看 Debian 系統(tǒng)上端口的開放狀態(tài),可以使用以下命令:
- 使用 netstat 命令:
sudo netstat -tulnp
輸出如下所示:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:2812 0.0.0.0:* LISTEN 369/monit
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 798/sshd
tcp6 0 0 :::80 :::* LISTEN 916/apache2
tcp6 0 0 :::22 :::* LISTEN 798/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 614/dhclient
這將列出所有已開放的端口和它們所在的進(jìn)程。輸出將顯示端口號(hào)、協(xié)議、IP 地址、進(jìn)程 ID 和進(jìn)程名稱等信息。
其中:
- t:表示 TCP 協(xié)議;
- u:表示 UDP 協(xié)議;
- l:表示監(jiān)聽狀態(tài);
- n:表示不解析服務(wù)名稱;
- p:顯示進(jìn)程名/ PID
- 使用 ss 命令:
sudo ss -tulw
輸出如下所示:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 5 127.0.0.1:2812 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
此命令將顯示所有 TCP 和 UDP 端口的詳細(xì)信息,包括端口號(hào)、協(xié)議、狀態(tài)、IP 地址、進(jìn)程 ID 和進(jìn)程名稱等。
其中:
- t:表示 TCP 協(xié)議;
- u:表示 UDP 協(xié)議;
- l:表示監(jiān)聽狀態(tài);
- w:表示要顯示所有套接字(包括正在等待連接的套接字)。
這里提醒大家,這兩個(gè)命令需要有 root 權(quán)限才能運(yùn)行,才能顯示所有進(jìn)程和端口信息。如果您只想查看特定端口的信息,則可以在命令中指定端口號(hào),如下所示:
sudo netstat -tulnp | grep <port_number>
或者:
sudo ss -tulw | grep <port_number>
其中 <port_number> 是您要查看的端口號(hào)。這將只顯示與該端口相關(guān)的信息。
查看開放的防火墻端口
如果您需要查看已經(jīng)開放的防火墻端口,則需要使用防火墻管理工具,例如 iptables??梢允褂靡韵旅顏砹谐鏊蟹阑饓σ?guī)則:
sudo iptables -L
輸出如下所示:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
此命令將列出所有規(guī)則,包括允許和拒絕的規(guī)則。您可以在規(guī)則列表中查找要查看的端口的規(guī)則。如果該端口被允許,則意味著它是開放的;否則,意味著它是關(guān)閉的。
在 Debian 系統(tǒng)上,可以使用以下命令來查看防火墻開放了哪些端口:
sudo iptables -L | grep 'ACCEPT'
此命令將列出所有被允許的規(guī)則,即防火墻已經(jīng)開放的端口。例如:
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
在此示例中,防火墻已經(jīng)開放了 SSH 端口(22)、HTTP 端口(80)和 HTTPS 端口(443)。如果您只想查看特定協(xié)議(例如 TCP 或 UDP)的規(guī)則,則可以在命令中指定協(xié)議類型,例如:
sudo iptables -L -v -n | grep 'tcp spt:80'
此命令將列出所有源端口為 80 的 TCP 流量規(guī)則,包括源地址、目標(biāo)地址、協(xié)議和目標(biāo)端口等信息。
上述這些命令同樣需要使用 root 權(quán)限來運(yùn)行。如果您使用的是防火墻管理工具(例如 ufw),則可以使用類似的命令來列出所有開放的端口。例如,要列出 ufw 已經(jīng)開放的端口,可以運(yùn)行以下命令:
sudo ufw status verbose
此命令將顯示當(dāng)前防火墻規(guī)則及其狀態(tài),包括已開放的端口列表。
安裝 ufw
Debian 默認(rèn)情況下沒有安裝 ufw(Uncomplicated Firewall)。如果您想使用 ufw 來管理防火墻規(guī)則,需要先安裝它。安裝 ufw 命令如下:
sudo apt-get update
sudo apt-get install ufw
安裝完成后,您可以使用以下命令來查看開放的端口狀態(tài):
sudo ufw status verbose
該命令將列出所有防火墻規(guī)則及其狀態(tài)。例如:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp (OpenSSH) ALLOW IN Anywhere
80/tcp (Apache) ALLOW IN Anywhere
443/tcp (Apache Full) ALLOW IN Anywhere
22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
80/tcp (Apache (v6)) ALLOW IN Anywhere (v6)
443/tcp (Apache Full (v6)) ALLOW IN Anywhere (v6)
此輸出顯示了開放的端口和對(duì)應(yīng)的服務(wù)(例如 OpenSSH、Apache 等),以及它們是否允許傳入流量(ALLOW IN)。
如果您想允許或禁止特定的端口,可以使用 ufw 的命令行界面。例如,要允許傳入 HTTP 流量,請(qǐng)使用以下命令:
sudo ufw allow 80/tcp
這將允許傳入 TCP 端口 80 的流量。要禁止特定端口的流量,請(qǐng)使用 deny
選項(xiàng)替換 allow
。在更改防火墻規(guī)則后,您需要使用以下命令來重新加載規(guī)則:
sudo ufw reload
更多關(guān)于 ufw 的詳細(xì)信息,請(qǐng)參閱其官方文檔。