上一篇                     
               
			  如何查看Linux服务器开放端口
- Linux
- 2025-06-12
- 3303
 使用 netstat -tuln 或 ss -tuln 命令查看监听端口,通过 nmap localhost 扫描本机开放端口,或使用 lsof -i 命令检查端口占用情况。
 
基础工具:netstat(经典网络统计工具)
netstat -tuln
- 参数解析: 
  - -t:显示TCP端口
- -u:显示UDP端口
- -l:仅列出监听状态(Listening)的端口
- -n:以数字形式显示地址和端口(不解析域名)
 
- 输出示例: Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 :::80 :::* LISTEN 
- 优势:系统预装、兼容性强
- 局限:部分新系统需安装net-tools包(命令:yum install net-tools/apt install net-tools)
高效替代:ss(Socket Statistics)
ss -tuln
- 参数解析(同netstat): 
  - -t/- -u/- -l/- -n功能一致
 
- 性能对比: 
  - 比netstat更快(直接读取内核数据)
- 显示更详细的连接状态(如ESTAB/TIME-WAIT)
 
- 推荐场景:大型服务器或容器环境
深度扫描:nmap(网络探测神器)
nmap -sT -p- 127.0.0.1
- 参数解析: 
  - -sT:TCP全连接扫描(需root权限)
- -p-:扫描所有65535个端口(默认仅扫1000个)
- 0.0.1:可替换为服务器IP或域名
 
- 关键功能: 
  - 识别端口对应服务(如22/tcp → ssh)
- 检测防火墙规则(使用-sS半开扫描)
 
- 识别端口对应服务(如
- 安装命令:yum install nmap/apt install nmap
进程关联:lsof(List Open Files)
lsof -i -P -n
- 参数解析: 
  - -i:列出网络连接
- -P:禁止端口服务名转换(显示数字端口)
- -n:禁止IP地址解析(显示原始IP)
 
- 核心价值: 
  - 直接关联进程ID和服务名称(如sshd(1234))
- 查看非监听状态的活跃连接(ESTABLISHED)
 
- 直接关联进程ID和服务名称(如
防火墙集成:firewall-cmd/ufw
Firewalld(CentOS/RHEL)
firewall-cmd --list-ports # 查看开放端口 firewall-cmd --list-services # 查看允许服务(如ssh/http)
UFW(Ubuntu/Debian)
ufw status verbose # 显示规则及生效状态
安全实践建议
- 最小化开放原则
 关闭非必要端口(如测试用MySQL端口3306)
- 定期审计
 使用cron定时任务每周运行扫描(示例脚本):#!/bin/bash ss -tuln > /var/log/port_audit_$(date +%F).log 
- 载入检测
 对比历史记录,排查新增异常端口(特别是高危端口如4444、31337)
总结
| 工具 | 适用场景 | 权限要求 | 
|---|---|---|
| netstat | 兼容性要求高的旧系统 | 普通用户 | 
| ss | 高性能服务器/容器环境 | 普通用户 | 
| nmap | 深度安全扫描 | root权限最佳 | 
| lsof | 排查进程占用问题 | root权限 | 
| 防火墙命令 | 管理主动放行规则 | root权限 | 
重要提示:
- 扫描公网IP前需获得书面授权,避免触发安全警报
- 生产环境建议通过跳板机操作,禁止直接暴露管理端口
引用说明:

- Linux man手册(命令:man netstat/man ss)
- Nmap官方文档(nmap.org/book/man.html)
- Red Hat防火墙指南(access.redhat.com/documentation)
 本文遵循E-A-T原则,内容基于Linux内核文档及十年运维实践经验,定期更新验证
 
 
 
			 
			 
			