如何在 Ubuntu 中检查开放端口:必备命令与实用示例

1. 介绍

对于许多使用 Ubuntu 的用户来说,管理端口是维护系统安全和网络性能的关键环节。特别是检查开放端口对于防止在运行服务或处理网络通信时的未授权访问至关重要。此外,端口检查还有助于排查问题并优化网络配置。

本文提供了在 Ubuntu 中检查端口的详细说明,并介绍了基于命令的方法。无论您是 Ubuntu 初学者还是中级用户,这里的信息都将非常有价值。

2. 什么是端口?

端口号就像一个“网关”,在通信过程中允许计算机向特定服务或进程发送数据。网络通信主要使用两种协议:TCP 和 UDP。TCP 是一种面向连接的协议,在通信前建立连接以确保数据可靠性。相对地,UDP 是一种无连接协议,直接发送数据而不建立连接,从而提供更快的传输速度。

TCP 与 UDP 的区别

  • TCP(传输控制协议):一种为可靠通信而设计的协议,确保数据正确到达。它常用于 Web 服务器(HTTP/HTTPS)和 SSH 等服务。
  • UDP(用户数据报协议):与 TCP 不同,它不保证可靠通信,但能够实现低延迟的数据传输。它用于实时服务,如流媒体和 VoIP。

了解端口号在管理网络安全和性能方面起着至关重要的作用。

3. 在 Ubuntu 中检查端口的命令列表

Ubuntu 提供了多条命令用于检查当前打开的端口。以下是一些常用命令。

1. netstat 命令

netstat 是一个强大的命令,可显示网络连接、路由表和接口统计信息。您可以使用以下命令检查监听端口:

sudo netstat -lntu
  • -l:仅显示监听端口
  • -n:以数字形式显示 IP 地址和端口号
  • -t:显示 TCP 端口
  • -u:显示 UDP 端口

2. ss 命令

ss 被广泛用作 netstat 的替代品,能够更高效地显示监听端口。使用以下命令:

ss -lntu

由于能够快速检索网络套接字的详细信息,ss 被认为优于 netstat

3. lsof 命令

lsof 列出已打开文件的进程,也可用于检查哪些进程正在使用网络端口:

sudo lsof -i

4. nmap 命令

nmap 是网络安全领域中广为人知的端口扫描工具,可用于扫描开放端口并识别服务。以下命令会扫描本地主机的所有端口:

sudo nmap -n -PN -sT -sU -p- localhost

4. 打开和关闭端口

通过打开或关闭端口,您可以加强 Ubuntu 系统的安全性。Ubuntu 附带了一个简易防火墙工具 ufw(Uncomplicated Firewall),可轻松管理端口。

使用 ufw 打开端口

例如,要允许端口 80 的 HTTP 流量,可使用以下命令:

sudo ufw allow 80

同样的方式也可以打开 SSH 端口(22):

sudo ufw allow 22

使用 ufw 关闭端口

要关闭已打开的端口,使用以下命令:

sudo ufw delete allow 80

这将移除允许端口 80 的规则。

5. 实用示例:检查特定端口

下面给出一个检查特定端口的实用示例。例如,要验证 SSH 是否在端口 22 上监听,可使用 netstatss 命令如下:

ss -lnt | grep :22

您也可以使用 lsof 进行检查:

sudo lsof -i :22

结果应当确认 SSH 服务正在端口 22 上监听。

6. 常见问题及解决方案

有一些常见问题可能在检查或打开端口时出现。下面列出了典型的问题及其解决方案。

端口未打开

如果端口似乎没有打开,首先确认防火墙设置是否正确。要检查 ufw 的状态,请使用下面的命令:

sudo ufw status

如果防火墙没有阻止该端口,则需要确认相关服务是否正常运行。例如,要验证 SSH 是否正常工作,请使用以下命令:

sudo systemctl status ssh

7. 结论

本文阐述了在 Ubuntu 中检查端口的关键命令和方法。检查端口对于维护网络安全和系统稳定性至关重要。尤其是管理可从外部访问的监听端口,对于降低漏洞风险尤为关键。请按照本文介绍的步骤,正确管理并保护 Ubuntu 系统中的端口。