大多数人认为检查开放端口只是安全专家的任务,直到他们的服务器因他们甚至不知道正在侦听的暴露端口而受到损害。您可以使用 netstat、ss、lsof、nmap 和 netcat 等内置命令检查 Linux 中的开放端口,或者使用 Windows 系统中的 PowerShell 远程扫描端口。每种方法提供不同级别的详细信息并需要不同的权限。
港口管理比以往任何时候都更加重要。自动侦察活动不断增加,攻击者不断探测易受攻击的入口点。无论您是要保护生产服务器还是测试本地服务,掌握端口安全都是维护安全且功能正常的系统的基础。
TL;DR:快速概述
- 使用 ss 或 netstat 快速检查监听端口,无需安装额外工具
- 当您需要全面的端口扫描和详细的服务检测时部署 nmap
- 使用 lsof 确定哪个特定进程正在使用特定端口
- 在 Windows 中使用 PowerShell 的 Test-NetConnection 检查远程 Linux 服务器上的端口
简单来说什么是端口?

将端口视为服务器上编号的门口。每个端口都充当网络流量进入或退出系统的通信端点。端口号范围从0到65535,分为三类:知名端口(0-1023)、注册端口(1024-49151)和动态端口(49152-65535)。
简而言之,当您浏览网站时,您的浏览器会敲击 HTTP 端口 80 或 HTTPS 端口 443。电子邮件服务器在端口 25 上应答 SMTP,而 SSH 远程访问在端口 22 上运行。这些侦听端口充当合法流量的网关,但如果不加保护,它们也可能成为攻击者的入口点。
端口与两种主要传输协议结合使用:用于可靠、面向连接的通信的 TCP 和用于更快、无连接数据传输的 UDP。了解端口的功能可以帮助您做出明智的决定,决定哪些端口保持打开,哪些端口关闭,以提高安全性。
如何检查 Linux 中打开的端口

Linux 提供了多种强大的端口分析工具,每种工具都有独特的优点。有些是预先安装的,而另一些则需要安装。选择正确的工具取决于您的权限级别、所需的详细信息和特定的用例。
使用netstat命令
几十年来,netstat 命令一直是网络分析的可靠工具。要检查开放端口,请使用 netstat-tuln 其中每个标志都有特定的用途:-t 显示 TCP 连接,-u 显示 UDP 连接,-l 仅过滤侦听端口,-n 以数字格式显示结果,而不是解析主机名。
运行此命令时,您将看到显示协议、带有端口号的本地地址、外部地址和连接状态的输出。例如, 0.0.0.0:22 表示 SSH 正在侦听端口 22 上的所有网络接口。每个条目都提供对活动服务及其网络状态的即时可见性。
这 Linux netstat命令 提供额外的标志以进行更详细的分析。添加 -p 显示哪个进程拥有每个连接,但这需要 root 权限。例如, 须藤 netstat -tulnp 显示端口和使用它的进程 ID。
使用 ss 命令
ss 命令是 netstat 的现代替代品,提供卓越的性能和更详细的套接字统计信息。使用 SS-图恩 具有与 netstat 相同的标志以获得可比较的输出。然而,ss 处理信息的速度更快,尤其是在具有大量连接的系统上。
为了使用高级过滤检查开放端口,ss 提供了强大的语法选项。跑步 ss-tulnp|正则表达式:22 仅显示与 SSH 相关的连接。命令 SS-TN国家成立 显示所有已建立的 TCP 连接,帮助您监控活动会话。
ss 的优点之一是它能够按特定标准进行过滤。例如, ss -t ‘( dport = :80 或 sport = :80 )’ 仅显示与端口 80 上的 Web 流量相关的连接。这种精度使得 ss 对于排除特定服务问题非常有价值。
使用 lsof 命令
lsof 命令擅长识别哪个进程正在使用特定端口。跑步 须藤lsof -i -P -n 显示所有网络连接以及进程详细信息。 -i 标志过滤互联网连接,-P 防止端口号转换为服务名称,-n 跳过 DNS 解析以获得更快的结果。
当您需要查找正在使用特定端口的内容时,lsof 可以提供答案。例如, 须藤 lsof -i :3306 显示 MySQL 是否正在运行以及哪个进程 ID 拥有它。在解决端口冲突或识别未经授权的服务时,这一点变得至关重要。
您还可以按特定应用程序过滤结果。如果您怀疑某个特定程序正在侦听意外端口, sudo lsof -i -a -p [PID] 显示该特定进程 ID 的所有网络连接。
使用Nmap进行端口扫描

Nmap 是最全面的端口扫描工具之一。首先,安装它 须藤安装nmap 在 Ubuntu 或 Debian 系统上。对于本地端口检查,请使用 nmap 本地主机 or nmap 127.0.0.1 进行基本扫描。
对于远程服务器,指定 IP 地址: nmap 192.168.1.100。 Nmap 提供有关开放端口、服务版本、甚至带有高级标志的操作系统检测的详细信息。命令 nmap -sV 本地主机 执行服务版本检测,准确显示每个端口上正在运行的软件。
安全团队非常看重 Nmap 测试防火墙规则的能力。跑步 nmap -Pn [IP] 即使 ping 被阻止,也会扫描主机。但是,在扫描远程服务器之前,请务必确保您拥有权限,因为未经授权的端口扫描可能会违反安全策略。
使用 Netcat (nc) 检查开放端口
Netcat 提供了一种简单的方法来以最小的开销进行端口检查。命令 nc -zv 本地主机 22-80 扫描端口范围 22 到 80,显示哪些端口接受连接。 -z 标志启用扫描模式而不发送数据,而 -v 提供详细输出。
对于单端口验证, nc -zv 主机名 443 快速确认HTTPS是否可访问。事实证明,此方法在脚本和自动化工作流程中很有用。您可以将 netcat 与 shell 循环结合起来进行更广泛的扫描: 对于 {1..1000} 中的端口;执行 nc -zv localhost $port 2>&1 | grep 成功;完毕
这 网络猫监听器 其功能不仅限于端口检查,还扩展到实际的服务测试和数据传输,使其成为任何管理员工具包中的多功能工具。
使用 PowerShell 检查开放端口
PowerShell 使 Windows 用户能够检查远程 Linux 服务器上的开放端口,而无需安装其他软件。命令 Test-NetConnection -计算机名称 [Linux-IP] -端口 22 验证 Windows 计算机的 SSH 可访问性。
要扫描多个端口,请创建一个简单的 PowerShell 循环: 1..1024 | 1..1024 ForEach-Object { Test-NetConnection -ComputerName 192.168.1.100 -Port $_ -WarningAction SilentlyContinue } |其中对象 { $_.TcpTestSucceeded }。当从 Windows 系统检查 Ubuntu、Debian 或任何其他 Linux 发行版上的端口时,此方法非常有效。
PowerShell的优势在于它与Windows基础设施的集成。您可以将结果导出到 CSV、通过电子邮件发送警报或根据端口状态触发自动响应,使其成为混合环境监控的理想选择。
端口扫描方式比较
| 工具 | 命令语法 | 最适合 | 先决条件 |
| 网络统计 | netstat-tuln | 监听端口快速概览 | 大多数系统上都预装了 |
| ss | SS-图恩 | 快速的性能,详细的套接字信息 | 预安装(现代 Linux) |
| 拉索夫 | 须藤lsof -i -P -n | 查找哪个进程使用端口 | 需要 root/sudo 访问权限 |
| 地图 | nmap 本地主机 | 全面的端口扫描 | 必须单独安装 |
| 网猫 | nc -zv 主机端口 | 简单的端口连接测试 | 预安装或轻松安装 |
| 电源外壳 | 测试网连接 | 从 Windows 远程扫描 | 需要Windows机器 |
常见的 Linux 端口及其相关服务
| 港口 | 服务 | 协议 | 常用 |
| 22 | SSH | 传输控制协议 | 通过以下方式安全远程访问 SSH远程连接 |
| 80 | HTTP协议 | 传输控制协议 | 未加密的网络流量 |
| 443 | HTTPS | 传输控制协议 | 加密的网络流量 |
| 21 | 文件传输协议 | 传输控制协议 | 文件传输 |
| 25 | 邮件传输协议 | 传输控制协议 | 邮件发送 |
| 3306 | MySQL | 传输控制协议 | 数据库连接 |
| 5432 | PostgreSQL | 传输控制协议 | 数据库连接 |
端口配置需要了解防火墙设置和服务绑定。许多管理员 更改 Linux 中的 SSH 端口 从默认的 22 端口更改为非标准端口,以减少自动攻击尝试。这 Telnet 与 SSH 争论凸显了为什么端口 23 (Telnet) 应保持关闭,而支持端口 22 的加密 SSH 协议。
了解 Linux 中的开放端口

每个开放端口都代表系统的潜在入口点。安全隐患加剧,自动端口扫描活动激增 全球 16.7%,因为威胁行为者不断探测易受攻击的入口点。这些侦察活动每月扫描数十亿个端口,搜索配置错误的服务或过时的软件。
很公平,但是当攻击者发现开放端口时实际发生了什么?港口国告诉你这个故事。处于 LISTEN 状态的端口接受传入连接,ESTABLISHED 表示活动数据传输,TIME_WAIT 显示最近关闭但仍在跟踪的连接。攻击者通过各种方法利用开放端口:对 SSH(端口 22)进行暴力攻击、通过 Web 端口(80/443)进行 SQL 注入以及通过易受攻击的服务进行远程代码执行。
安全地打开端口需要采用深度防御方法。从默认拒绝防火墙策略开始。验证您的配置 iptables 显示规则。只为您经常使用的服务打开端口,并在不再需要时立即关闭它们。考虑更改常用服务的默认端口以减少自动扫描的成功率。
Linux 生态系统面临着重大的安全挑战,有数百个漏洞需要修补。定期端口审核可帮助您在攻击者之前发现未经授权的服务。使用尊重安全边界的文件传输工具,例如 通过 SSH 复制文件 而不是未加密的 FTP。在系统之间移动文件时,使用 SCP将文件从远程复制到本地系统 通过 SSH 的安全通道提供加密传输。
最佳实践包括对敏感服务实施端口碰撞、使用fail2ban 阻止重复的身份验证失败以及维护连接尝试的详细日志。安排定期安全审核,以检查哪些端口保持开放以及它们是否仍然用于合法目的。
Cloudzy 的 Linux VPS 如何简化端口管理
通过配置良好的基础设施,管理端口变得更加容易。云兹的 Linux虚拟专用服务器 解决方案提供预配置的安全设置,包括智能防火墙规则和通过直观的控制面板简化的端口管理。借助完全 root 访问权限,您可以完全控制要打开或关闭的端口。
以最便宜的价格为自己购买经济型或高级 Linux VPS 来托管您的网站或远程桌面。 VPS 在 Linux KVM 上运行以提高效率,并在具有 NVMe SSD 存储的强大硬件上运行以提高速度。
阅读更多检查和管理端口时,性能很重要。 Cloudzy 的 NVMe 存储可确保您的端口扫描工具高效运行,同时高达 10 Gbps 的连接可无瓶颈地处理大容量流量。该基础设施受益于 Linux 为全球服务器基础设施的很大一部分提供支持的事实,使得这些优化的配置经过了实战考验且可靠。
每月只需 3.96 美元起,您就可以获得非常适合练习端口管理技术的专业级环境。多个数据中心位置允许您测试地理分布式设置,而 24/7 支持可协助复杂的防火墙配置或端口相关的故障排除。无论您是学习如何检查 Linux 中的开放端口还是部署生产服务,拥有灵活的 VPS 环境都可以加速您的安全实施。
结论
那么,检查开放端口的最佳方法是什么?说得直白一点,就是没有。对于快速本地检查,ss 或 netstat 可以轻松完成工作。当您需要全面的安全审核时,Nmap 会揭示一切。为了追踪哪个进程拥有端口,lsof 可以节省数小时的猜测时间。当您需要远程验证时,PowerShell 可桥接 Windows 和 Linux。
这里真正的教训不是记住命令。这是为了使端口审核成为一种例行公事,而不是恐慌反应。安排每周扫描,在发现未使用的端口时立即关闭它们,并记录哪些服务需要哪些端口。这种方法将端口检查从被动消防转变为主动防御。