服务器测评网
我们一直在努力

Linux如何查看系统中所有开放端口?常用命令及操作步骤有哪些?

在Linux系统中,端口是网络通信的入口,每个开放的端口都对应一个运行中的服务,可能是Web服务、数据库服务,也可能是潜在的安全风险,查看系统开放的端口,是系统管理员排查网络问题、保障服务器安全、优化服务配置的基础操作,本文将详细介绍Linux环境下查看开放端口的多种方法、常用命令及其适用场景,帮助读者全面掌握端口管理技能。

Linux如何查看系统中所有开放端口?常用命令及操作步骤有哪些?

端口的基本概念:为什么需要查看开放端口?

端口是TCP/IP协议中用于区分不同服务的逻辑标识,范围从0到65535,0-1023为知名端口(如HTTP服务的80端口、SSH服务的22端口),1024-49151为注册端口,49152-65535为动态或私有端口,查看开放端口的核心目的包括:

  1. 安全排查:发现未授权开放的服务(如默认开启的Telnet、FTP等高危服务),及时关闭以降低攻击风险。
  2. 服务管理:确认关键服务(如Nginx、MySQL)是否正常监听端口,排查服务启动失败或端口冲突问题。
  3. 网络调试:当客户端无法连接服务时,通过检查端口状态判断是服务未启动、防火墙拦截还是网络配置问题。

传统工具:netstat——经典的端口查看命令

netstat是Linux系统中最早用于查看网络连接和端口的工具,尽管在新版本中逐渐被ss替代,但其丰富的选项和清晰的输出仍被广泛使用。

基本语法与常用选项

netstat [选项]
  • -t:显示TCP端口
  • -u:显示UDP端口
  • -l:仅显示监听端口(即等待连接的端口)
  • -n:以数字形式显示地址和端口(避免DNS解析,提高速度)
  • -p:显示占用端口的进程ID(PID)和名称
  • -a:显示所有端口(包括监听和非监听)

实用示例

  1. 查看所有监听的TCP和UDP端口

    netstat -tuln

    输出结果包括本地地址(Local Address)和端口(如0.0.0:22表示所有IP监听22端口)、状态(LISTEN表示监听状态)、协议(tcp/udp)等。

  2. 查看特定端口的占用情况

    netstat -tuln | grep ":80"

    通过grep过滤出80端口(HTTP服务)的监听状态,判断Web服务是否正常运行。

  3. 显示端口关联的进程信息

    netstat -tulnp

    输出结果会增加PID/Program name列,可直接看到占用端口的进程(如nginx: master process表示Nginx主进程占用80端口)。

注意事项

netstat在处理大量网络连接时速度较慢,且依赖/proc/net文件,在Linux内核版本较新的系统中逐渐被ss取代。

现代工具:ss——高效替代netstat的利器

ssiproute2工具包的一部分,专为替代netstat而设计,其查询速度更快(直接从内核获取网络信息),且支持更丰富的过滤选项。

基本语法与常用选项

ss [选项]
  • -t:TCP端口
  • -u:UDP端口
  • -l:仅显示监听端口
  • -n:数字形式显示
  • -p:显示进程信息
  • -a:所有端口
  • 4/6:仅显示IPv4/IPv6端口

实用示例

  1. 查看所有监听端口(推荐用法)

    Linux如何查看系统中所有开放端口?常用命令及操作步骤有哪些?

    ss -tuln

    输出格式与netstat类似,但更简洁,且查询速度显著提升(尤其在高并发场景下)。

  2. 查看端口对应的进程

    ss -tulnp | grep ":3306"

    过滤出3306端口(MySQL默认端口)的监听情况,并显示对应的进程(如mysqld)。

  3. 统计当前监听端口数量

    ss -tuln | awk '{print $1}' | sort | uniq -c

    通过awk提取协议列,sort排序后用uniq -c统计各类协议(tcp/udp)的监听端口数量。

优势对比

相比netstatss的优势在于:

  • 速度更快:直接从内核获取数据,无需解析/proc/net文件。
  • 功能更强大:支持filter(如ss state listening按状态过滤)、sport/dport(源端口/目标端口过滤)等高级语法。

进阶工具:lsof——通过文件描述符查看端口

lsof(list open files)是用于列出系统打开文件的工具,在Linux中,“一切皆文件”,网络端口也被视为文件,因此可通过lsof查看端口关联的进程。

基本语法

lsof -i [协议]:[端口]
  • -i:指定网络文件(端口)
  • [协议]:可选(tcp/udp
  • [端口]:可选(如8022

实用示例

  1. 查看80端口对应的进程

    lsof -i:80

    输出包括进程ID(PID)、用户(USER)、文件描述符(FD,IPv4表示IPv4端口)、类型(TYPE,IPv4)等。

  2. 查看所有TCP监听端口

    lsof -iTCP -sTCP:LISTEN

    -sTCP:LISTEN表示过滤TCP监听状态的端口,效果与ss -tln类似,但可结合lsof的其他功能(如查看用户权限)。

    Linux如何查看系统中所有开放端口?常用命令及操作步骤有哪些?

适用场景

lsof更适合在已知端口时快速关联进程,或查看特定用户的端口占用情况(如lsof -i -u username)。

网络扫描工具:nmap——查看远程主机端口

若需查看远程Linux服务器的开放端口(而非本地),nmap(Network Mapper)是首选工具,它支持端口扫描、服务识别、漏洞检测等功能,是网络安全运维的必备工具。

基本语法

nmap [选项] [目标IP]
  • -sT:TCP连接扫描(无需root权限)
  • -sS:TCP SYN扫描(需root权限,速度快且隐蔽)
  • -sU:UDP扫描
  • -p:指定端口(如-p 22,80,443
  • -open:仅显示开放端口

实用示例

  1. 扫描远程服务器的TCP监听端口

    nmap -sT -p 1-1000 192.168.1.100

    扫描目标服务器168.1.100的1-1000号TCP端口,输出开放端口及其对应的服务(如22/tcp open ssh)。

  2. 快速扫描常见开放端口

    nmap --top-ports 100 192.168.1.100

    --top-ports扫描最常见的100个端口,适用于快速判断服务器基础服务状态。

注意事项

nmap扫描可能被目标服务器视为攻击行为,需确保在授权范围内使用;扫描UDP端口速度较慢,需耐心等待。

端口管理的最佳实践

查看端口只是第一步,合理管理端口才能保障系统安全与稳定。

  1. 最小化开放端口:遵循“最小权限原则”,仅开放业务必需的端口,关闭未使用的服务(如systemctl disable telnet)。
  2. 定期检查端口:通过定时任务(如cron)定期执行ss -tuln | grep LISTEN,记录端口变化,及时发现异常开放端口。
  3. 结合防火墙管理:使用iptablesfirewalld限制端口访问(如仅允许特定IP访问3306端口),避免直接暴露公网。
  4. 监控端口状态:通过zabbixprometheus等工具监控端口状态,当关键端口(如80、443)异常时触发告警。

Linux查看开放端口的工具各有侧重:netstat适合传统场景,ss是现代系统的高效选择,lsof擅长进程关联,nmap则用于远程端口扫描,掌握这些工具的使用方法,并结合端口管理最佳实践,能有效提升系统运维效率与安全性,在实际操作中,需根据场景选择合适的工具,并始终以安全为前提,合理配置端口访问策略,确保服务器稳定运行。

赞(0)
未经允许不得转载:好主机测评网 » Linux如何查看系统中所有开放端口?常用命令及操作步骤有哪些?