使用 netstat
命令(经典工具)
安装(部分系统需手动安装):
sudo apt install net-tools # Debian/Ubuntu sudo yum install net-tools # CentOS/RHEL
常用参数组合:
sudo netstat -tuln
-t
:仅显示TCP端口-u
:仅显示UDP端口-l
:仅显示监听中的端口-n
:以数字形式显示地址和端口(不解析域名)-p
:显示进程名/ID(需sudo权限)
输出示例:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
- 关键列:
Local Address
→0.0.0:22
表示所有IP监听22端口(SSH服务)
State
→LISTEN
表示端口正在等待连接
使用 ss
命令(netstat
的现代替代)
优势:执行速度更快,无需额外安装(默认集成于主流发行版)。
基础命令:
sudo ss -tuln
参数含义同 netstat
。
过滤特定端口(如查看80端口):
sudo ss -tuln sport = :80
使用 lsof
命令(查看进程占用端口)
安装(未预装时):
sudo apt install lsof # Debian/Ubuntu sudo yum install lsof # CentOS/RHEL
查看所有监听端口:
sudo lsof -i -P -n | grep LISTEN
-i
:显示网络连接-P
:禁止端口别名(显示数字端口)-n
:禁止IP地址解析(显示原始IP)
输出示例:
sshd 1234 root 3u IPv4 12345 0t0 TCP *:22 (LISTEN)
- 含义:进程
sshd
(PID 1234)正在监听22端口。
使用 nmap
扫描本地端口(安全审计)
安装:
sudo apt install nmap # Debian/Ubuntu sudo yum install nmap # CentOS/RHEL
扫描本机开放端口:
sudo nmap -sT -p- 127.0.0.1
-sT
:TCP全连接扫描(最稳定)-p-
:扫描所有65535个端口(范围1-65535)
输出示例:
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
- STATE:
open
表示端口可访问,filtered
可能被防火墙拦截。
查看端口关联服务
通过 /etc/services
文件查询端口对应的标准服务:
grep 22 /etc/services
输出示例:
ssh 22/tcp # Secure Shell
常见问题解决
-
无权限查看进程信息
→ 使用sudo
提权执行命令(如sudo ss -tulp
)。 -
命令未找到
→ 按前文方法安装对应工具包(如net-tools
、lsof
)。 -
端口监听但无法访问
→ 检查防火墙:sudo ufw status # Ubuntu防火墙 sudo firewall-cmd --list-ports # CentOS防火墙
总结建议
- 日常快速检查 → 使用
ss -tuln
(效率最高) - 排查进程占用 → 使用
lsof -i :端口号
- 深度安全扫描 → 使用
nmap
- 生产环境操作前 → 通过测试环境验证命令,避免误操作影响服务。
安全提示:
- 关闭非必要端口以减少攻击面。
- 定期审计端口使用情况(结合自动化脚本)。
- 敏感服务避免绑定
0.0.0
(所有接口),建议限制IP范围。
引用说明: 参考 Linux 官方手册(man netstat
/man ss
/man lsof
)、Nmap 官方文档及 Red Hat/CentOS、Ubuntu 安全实践指南,命令兼容主流 Linux 发行版(包括 Ubuntu、Debian、CentOS、RHEL 等)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5932.html