怎么查询服务器当前开放端口

联启 电脑工具 2

最全命令与工具指南(2025新版)

目录导读

  1. 为什么需要查询服务器开放端口?
  2. Linux系统查询开放端口的5种核心方法
  3. Windows系统查询开放端口的3种实用技巧
  4. 使用远程工具扫描端口(安全注意事项)
  5. 常见问题与答案(FAQ)
  6. 端口管理最佳实践

为什么需要查询服务器开放端口?

在服务器运维中,端口是网络通信的“门”,每个服务(如Web、数据库、SSH)都会占用特定的端口号,查询开放端口的目的包括:

怎么查询服务器当前开放端口-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

  • 安全审计:发现未授权的开放端口,防止黑客利用(不必要的Telnet端口可能导致暴力破解)。
  • 故障排查:确认服务是否正常监听(如Nginx是否在80端口运行)。
  • 合规要求:满足PCI-DSS等标准对端口最小化原则的要求。

核心概念:端口分为TCP和UDP,默认范围是0-65535,常见端口如22(SSH)、80(HTTP)、443(HTTPS)。


Linux系统查询开放端口的5种核心方法

方法1:使用ss命令(最推荐)

socket statistics是Linux现代工具,性能优于netstat

# 列出所有监听中的TCP/UDP端口(含进程)
ss -tuln

参数详解:-t TCP,-u UDP,-l 仅显示监听中的端口,-n 不解析服务名,输出示例:

State  Recv-Q Send-Q  Local Address:Port   Peer Address:Port  
LISTEN 0      128     0.0.0.0:22          0.0.0.0:*  
LISTEN 0      128     0.0.0.0:443         0.0.0.0:*  

最佳用法:配合grep过滤特定端口:
ss -tuln | grep :80

方法2:netstat命令(经典兼容)

如果系统未预装ss,可用netstat

netstat -tuln | grep LISTEN

注意:现代Linux已逐步淘汰netstat(属于net-tools包),但CentOS 7以前版本仍常用,若遇command not found,请安装:
yum install net-tools -yapt install net-tools -y

方法3:lsof命令(查看具体进程)

想确认哪个进程占用了特定端口?用lsof

# 查看所有监听中的TCP端口
lsof -i -P -n | grep LISTEN

参数:-i 显示网络文件,-P 不转换端口号,-n 不解析主机名,简化版查询80端口:
lsof -i :80

方法4:nmap本地扫描(全面检测)

本地安装nmap后,扫描本机所有开放端口:

nmap -sT -O localhost

-sT 使用TCP Connect扫描,-O 识别操作系统。注意:某些云服务器可能限制本地nmap权限。

方法5:fuser命令(快速定位端口)

调试时可用fuser查看端口是否被占用:

# 查看80端口对应的进程PID
fuser 80/tcp

返回PID后,用ps -ef | grep PID确认进程。


Windows系统查询开放端口的3种实用技巧

技巧1:netstat -an(CMD最常用)

打开命令提示符(管理员权限),输入:

netstat -an | findstr LISTEN

输出示例:

TCP 0.0.0.0:135 0.0.0.0:0 LISTENING  
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING  

若要关联进程,使用-o参数:
netstat -ano | findstr :3389
记下PID后,在任务管理器中“详细信息”列查找进程名。

技巧2:Get-NetTCPConnection(PowerShell新时代)

PowerShell提供更清晰的输出:

Get-NetTCPConnection -State Listen | Select LocalPort, OwningProcess

此命令仅显示TCP监听端口,并给出进程PID,可进一步用Get-Process -Id PID查看具体程序。

技巧3:图形化工具TCPView(微软官方)

从Sysinternals套件下载TCPView(https://learn.microsoft.com/en-us/sysinternals/downloads/tcpview),无需安装,直接运行即可实时查看所有TCP/UDP端点及其进程。


使用远程工具扫描端口(安全注意事项)

必备工具:nmap(跨平台)

扫描远程服务器开放端口(需获得授权):

nmap -p 1-65535 你的服务器IP

参数:-p 指定端口范围,-sV 探测服务版本。重要:扫描他人服务器前必须获得书面授权,否则可能触犯法律。

在线端口扫描工具

  • YouGetSignal:https://www.yougetsignal.com/tools/open-ports/
  • Port Checker:https://portchecker.co/
    仅支持测试单个常见端口(如80、443),不能用于全端口扫描。

安全警告

  1. 禁止扫描非授权设备:在云环境(如AWS、阿里云)中,未经授权的端口扫描会被视为攻击行为,可能导致账号封禁。
  2. 关闭不必要的端口:查询到开放端口后,应使用iptables(Linux)或Windows防火墙关闭不需要的服务。

常见问题与答案(FAQ)

Q1:为什么netstat显示“command not found”?
A:多数现代Linux发行版已移除net-tools包,解决方法:使用ss命令(通常预装),或通过包管理器安装net-tools

Q2:查询端口时,如何区分TCPUDP?
A:ss -t只显示TCP,-u只显示UDP,Windows的netstat -an会显示协议列(TCP/UDP)。

Q3:端口状态“LISTEN”和“ESTABLISHED”有什么区别?
A:LISTEN表示服务正在等待连接(开放的端口);ESTABLISHED表示已建立活动的TCP连接。

Q4:端口扫描时出现“filtered”是什么意思?
A:表示防火墙或安全组阻止了探测,端口可能开放但被规则屏蔽,也可能关闭,需要检查服务器的安全策略。

Q5:如何查询某个程序正在使用的端口?
A:Linux用lsof -i :端口号;Windows用netstat -ano | findstr 端口号,然后通过PID定位进程。

Q6:端口范围为什么是0-65535?
A:TCP/UDP协议使用16位端口号(2^16=65536),其中0号端口保留,实际可用范围1-65535。


端口管理最佳实践

  1. 定期审计:每月运行ss -tuln检查开放端口,对比业务需要。
  2. 最小化原则:仅开放必要端口(如Web、SSH),关闭所有监听在0.0.0.0的未授权端口。
  3. 绑定本地地址:如果服务仅需本地访问(如数据库),应监听0.0.1而非0.0.0
  4. 使用防火墙:即使端口开放,也通过iptables或云安全组限制来源IP(如仅允许公司IP访问SSH)。
  5. 日志监控:记录端口连接日志,发现异常扫描立即响应。

示例实战:假设你发现ss -tuln显示端口4444处于LISTEN状态,但确认这不是你的业务端口,立即检查进程(lsof -i :4444),若发现未知进程,使用kill -9 PID终止,并排查是否被植入后门。

通过上述方法,无论是运维新手还是资深工程师,都能高效、安全地查询服务器开放端口,保障系统安全稳定运行。

标签: netstat lsof

抱歉,评论功能暂时关闭!