帮助中心

这里有最新的使用文档和教程

< 返回

Debian系统如何查看端口开放状态

2023-04-19 10:11 作者:31IDC 阅读量:3939 所属分类:Linux系统

Debian系统如何查看端口开放状态

 

查看系统端口状态

要查看 Debian 系统上端口的开放状态,可以使用以下命令:

  1. 使用 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

这将列出所有已开放的端口和它们所在的进程。输出将显示端口号、协议、IP 地址、进程 ID 和进程名称等信息。

其中:

  • t:表示 TCP 协议;
  • u:表示 UDP 协议;
  • l:表示监听状态;
  • n:表示不解析服务名称;
  • p:显示进程名/ PID
  1. 使用 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 端口的详细信息,包括端口号、协议、状态、IP 地址、进程 ID 和进程名称等。

其中:

  • t:表示 TCP 协议;
  • u:表示 UDP 协议;
  • l:表示监听状态;
  • w:表示要显示所有套接字(包括正在等待连接的套接字)。

这里提醒大家,这两个命令需要有 root 权限才能运行,才能显示所有进程和端口信息。如果您只想查看特定端口的信息,则可以在命令中指定端口号,如下所示:

sudo netstat -tulnp | grep <port_number>

或者:

sudo ss -tulw | grep <port_number>

其中 <port_number> 是您要查看的端口号。这将只显示与该端口相关的信息。

查看开放的防火墙端口

如果您需要查看已经开放的防火墙端口,则需要使用防火墙管理工具,例如 iptables。可以使用以下命令来列出所有防火墙规则:

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         

此命令将列出所有规则,包括允许和拒绝的规则。您可以在规则列表中查找要查看的端口的规则。如果该端口被允许,则意味着它是开放的;否则,意味着它是关闭的。

在 Debian 系统上,可以使用以下命令来查看防火墙开放了哪些端口:

sudo iptables -L | grep 'ACCEPT'

此命令将列出所有被允许的规则,即防火墙已经开放的端口。例如:

ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https

在此示例中,防火墙已经开放了 SSH 端口(22)、HTTP 端口(80)和 HTTPS 端口(443)。如果您只想查看特定协议(例如 TCP 或 UDP)的规则,则可以在命令中指定协议类型,例如:

sudo iptables -L -v -n | grep 'tcp spt:80'

此命令将列出所有源端口为 80 的 TCP 流量规则,包括源地址、目标地址、协议和目标端口等信息。

上述这些命令同样需要使用 root 权限来运行。如果您使用的是防火墙管理工具(例如 ufw),则可以使用类似的命令来列出所有开放的端口。例如,要列出 ufw 已经开放的端口,可以运行以下命令:

sudo ufw status verbose

此命令将显示当前防火墙规则及其状态,包括已开放的端口列表。

安装 ufw

Debian 默认情况下没有安装 ufw(Uncomplicated Firewall)。如果您想使用 ufw 来管理防火墙规则,需要先安装它。安装 ufw 命令如下:

sudo apt-get update
sudo apt-get install ufw

安装完成后,您可以使用以下命令来查看开放的端口状态:

sudo ufw status verbose

该命令将列出所有防火墙规则及其状态。例如:

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) 

此输出显示了开放的端口和对应的服务(例如 OpenSSH、Apache 等),以及它们是否允许传入流量(ALLOW IN)。

如果您想允许或禁止特定的端口,可以使用 ufw 的命令行界面。例如,要允许传入 HTTP 流量,请使用以下命令:

sudo ufw allow 80/tcp

这将允许传入 TCP 端口 80 的流量。要禁止特定端口的流量,请使用 deny 选项替换 allow。在更改防火墙规则后,您需要使用以下命令来重新加载规则:

sudo ufw reload

更多关于 ufw 的详细信息,请参阅其官方文档。

31IDC - 12 年深耕海外 IDC 高端资源