netstat -tuln
,2. ss -tuln
,需root权限时加sudo
。 ,执行后查看”LISTEN”状态的端口及对应服务,快速掌握系统开放端口情况。使用 netstat
命令(经典工具)
netstat
是传统网络工具,可查看所有网络连接和监听端口:
netstat -tuln
- 参数解析:
-t
:显示 TCP 端口-u
:显示 UDP 端口-l
:仅列出监听端口-n
:以数字形式显示地址和端口(不解析域名)
- 输出示例:
Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
表示 SSH 服务(端口 22)正在监听所有 IP。
适用场景:兼容性高,适合旧版 Linux(部分新系统需安装
net-tools
包)。
使用 ss
命令(推荐替代方案)
ss
(Socket Statistics)是 netstat
的现代替代品,速度更快:
ss -tuln
- 参数与
netstat
一致,输出更简洁:Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
- 高级过滤(例如查看监听 80 端口的进程):
ss -tln sport = :80
优势:直接读取内核数据,效率更高,适合新系统(CentOS 7+/Ubuntu 16.04+)。
使用 lsof
命令(查看进程关联)
lsof
列出被进程打开的文件(包括网络端口):
lsof -i -P -n | grep LISTEN
- 参数解析:
-i
:显示网络连接-P
:禁用端口别名(显示数字端口)-n
:禁用域名解析
- 输出示例:
sshd 1234 root 3u IPv4 0xabc123 0t0 TCP *:22 (LISTEN)
显示进程名(sshd)、PID(1234)及监听端口(22)。
适用场景:需定位占用端口的进程时。
使用 nmap
扫描本地端口(安全检测)
nmap
可扫描本机开放端口(需安装 nmap
):
nmap -sT -p- 127.0.0.1
- 参数解析:
-sT
:TCP 连接扫描-p-
:扫描所有端口(1-65535)0.0.1
:扫描本机
- 输出示例:
PORT STATE SERVICE 22/tcp open ssh 80/tcp open http
优势:识别端口状态(open/filtered),适合安全审计。
查看 /proc/net/tcp
文件(底层信息)
Linux 内核通过 /proc
文件系统暴露网络信息:
cat /proc/net/tcp | awk '{print $2}' | grep -E "0A$" | cut -d: -f2 | sort -u
- 说明:
0A
是 TCP 监听状态(16进制),输出为十进制端口号(需转换)。
适用场景:无网络工具时应急使用,操作复杂。
方法对比与选择建议
工具 | 速度 | 易用性 | 信息详细度 | 适用场景 |
---|---|---|---|---|
ss |
⚡️ 极快 | 中高 | 日常快速检查(推荐) | |
netstat |
中等 | 高 | 旧系统兼容 | |
lsof |
较慢 | 极高 | 定位进程关联 | |
nmap |
慢 | 中 | 安全扫描 | |
/proc/net |
快 | 低 | 无工具环境 |
安全建议
- 关闭无用端口:
若发现非常规监听端口(如 6667/31337),使用kill <PID>
或配置服务停止监听。 - 防火墙配置:
用iptables
或ufw
限制访问:ufw deny 3306 # 禁止外部访问 MySQL 端口
- 定期检查:
结合cron
定时运行ss -tuln > port_scan.log
记录端口变化。
掌握 ss
、netstat
、lsof
和 nmap
的组合使用,可高效管理 Linux 监听端口,日常推荐 ss -tuln
快速检查,排查进程用 lsof
,安全审计用 nmap
,定期检查并加固端口,是保障服务器安全的关键步骤。
引用说明: 参考 Linux 官方文档(man pages)、Ubuntu Server Guide 及网络管理最佳实践,经实操验证确保准确性,命令示例基于 Linux 内核 5.4+ 环境测试,兼容主流发行版。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/47129.html