所有文章 > 技术杂货铺 > Mac,Linux,Windows查看端口使用的方法有哪些?

Mac,Linux,Windows查看端口使用的方法有哪些?

查看端口使用的需求背景:企业在多个项目研发过程中,开发者需要了解端口使用的情况,从而为新项目选择一个合适的端口;在调试代码时,经常会遇到端口被占用的情形(往往是由于程序异常引发);定期的电脑或服务器安全检查时,需要了解对外提供的端口情况。

一、netstat查看端口使用情况

netstat命令可以显示网络连接,路由表,接口状态,伪装连接,网络链路信息和组播成员组等信息。netstat在mac、linux、windows都自带的一种端口查看工具,常见用法如下:

#列出所有端口
netstat -tuln
-t: 显示 TCP 连接信息
-u: 显示 UDP 连接信息
-l: 仅显示监听状态的端口
-n: 使用数字格式显示端口号,而不是服务名

#列出所有 tcp 端口
netstat -at

#显示网络接口列表
netstat -i

#显示网络工作信息统计表
netstat -s

#显示伪装的网络连线
netstat -m

#显示核心路由信息
netstat -r

#显示合并的信息
netstat -rs

二、lsof查看某一端口占用情况

lsof(list open files)是一个用于列出当前系统打开文件的工具。linux、mac系统默认安装了lsof,可以直接使用;Windows提供了openfiles命令来替代lsof。

#查看特定端口的占用情况
lsof -i:端口号

#查看监听该端口的进程信息,包括进程名称、进程ID、用户和协议等
lsof -P -n -i:端口号

三、mac、linux、windows查看端口使用的方法

3.1)linux查看端口使用的方法

1、用lsof查看端口被使用的情况并关闭该进程,更多指令,查看lsof命名详解。

# lsof -i:8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nodejs 26993 root 10u IPv4 37999514 0t0 TCP *:8000 (LISTEN)

# kill -9 26993

2、用netstat查看端口被使用的情况,更多指令,查看netstat命令详解。

# netstat -tunlp | grep 8000
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 26993/nodejs

3、用ss命令查看端口被使用的情况。ss命令可以列出当前系统中打开的套接字(socket)信息,包括网络端口。

# sudo ss -tlnp | grep 80
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users (("nginx",pid=2170625,fd=10))

4、查看所有端口使用情况

# netstat -tuln
or
# ss -tuln

3.2)mac查看端口使用的方法

mac查看端口使用的方法基本与linux相同,除去ss指令外,lsof与netstat用法都相同。例如:查看某个端口的连接情况:

# lsof -i:80

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
wwmapp 21536 XXX 108u IPv4 0x1446ad03e92e2b 0t0 TCP 192.168.0.7:50110->60.29.232.121:http (ESTABLISHED)

mac自带了一个网络工具,可以使用该工具来查看端口使用情况。

3.3)windows查看端口使用的方法

1、使用netstat查看端口使用、找到进程、关闭应用的方法

1. 查看所有的端口占用情况
```
C:\>netstat -ano
```
协议 本地地址 外部地址 状态 PID
TCP 127.0.0.1:1434 0.0.0.0:0 LISTENING 3236
TCP 127.0.0.1:5679 0.0.0.0:0 LISTENING 4168
TCP 127.0.0.1:7438 0.0.0.0:0 LISTENING 4168
TCP 127.0.0.1:8015 0.0.0.0:0 LISTENING 1456
TCP 192.168.3.230:139 0.0.0.0:0 LISTENING 4
TCP 192.168.3.230:1957 220.181.31.225:443 ESTABLISHED 3068
TCP 192.168.3.230:2020 183.62.96.189:1522 ESTABLISHED 1456
TCP 192.168.3.230:2927 117.79.91.18:80 ESTABLISHED 4732
TCP 192.168.3.230:2929 117.79.91.18:80 ESTABLISHED 4732

2. 查看指定端口的占用情况
```
C:\>netstat -aon|findstr "9050"
```
协议 本地地址 外部地址 状态 PID
TCP 127.0.0.1:9050 0.0.0.0:0 LISTENING 2016

3. 查看PID对应的进程
```
C:\>tasklist|findstr "2016"
```

映像名称 PID 会话名 会话# 内存使用
========================= ======== ================
tor.exe 2016 Console 0 16,064 K


4. 结束该进程

```
C:\>taskkill /f /t /im tor.exe
```

四、常见的端口查看场景

1、如果发现某个重要端口被未知进程占用,如何快速定位并解决该问题

使用命令行工具(如netstat -anosudo netstat -tuln)查看当前活动的网络连接和侦听端口,确定哪个端口被占用,通过tasklist(Windows)或ps -ef(Linux)命令查找与占用端口相关的进程,一旦找到占用端口的进程,可以根据需要决定是否终止该进程或修改其配置文件以释放端口

# netstat -atnl | grep 端口号
or
# lsof -i:端口号

2、如何排查远程调用故障

使用命令行工具查看端口是否已经占用,查看对应进程的状态,查看网络防火墙状态。

五、高危端口使用清单

在安装某些常用软件时,会默认开启一些端口,常见的端口清单如下:

端口号端口说明渗透测试威胁( 漏洞)
TCP 20,21FTP服务( 文件传输协议)允许匿名上传下载、爆破、嗅探、win提取、远程执行,以及各类后门程序( backdoor)
TCP 22SSH服务(安全外壳协议)容易受到中间人攻击和黑客利用收集到的信息尝试爆破( ssh隧道、内网代理转发、文件传输等等)
TCP 23Telnet服务(远程终端协议)爆破、嗅探,一般用于路由器和交换机登录(弱口令盛码最容易被破解)
TCP 25SMTP服务(简单邮寄传输协议)邮件伪造,vrfy/expn命令查询邮件用户信息,可使用smtp-user-enumT具来自动跑
TCP/UDP 53DNS( 域名系统 )DNS溢出、远程代码执行、允许区域传送,dns劫持,缓存投毒欺骗以及各种基于dns隧道的远控
TCP/UDP 69TFTP服务(简单文件传输系统)尝试下载目标及其的各类重要配置文件
TCP 80-89,
443
8440-8450
8080-
8089
各种常用的Web服务端口可尝试经典的top n、VPN、owa、webmail,目标oa,各类java控制台,各类服务器web管理面板,各类web中间件漏洞利用,各类web框架漏洞利用等等
TCP 110POP3服务(邮件协议版本3)可尝试爆破、嗅探
TCP 111,2049NFS服务( 网络文件系统 )权限配置不当
TCP 135OPC等服务的链接端口实际上是一个WINNT漏洞开放的135的端口情况容易引起自外部的”Snork”攻击
TCP 137,139,445SMB( NetBios协议)可尝试爆破以及smb自身的各种远程执行类漏洞利用SMB( 137);smb、嗅探( 139 );ms17-010、ms08-067( 445)
TCP 512,513,514Linuxrexec服务(远程登录)可爆破,rlogin登录
TCP 554554端口默认情况下用于”Real Time Streaming Protocol(实时流协议,简称RTSP)目前,RTSP协议所发现的漏洞主要就是RealNetworks早期发布的Helix Universal Server存在缓冲区溢出漏洞,相对来说,使用的554端口是安全的
TCP 873Rsync服务(数据镜像备份工具)匿名访问,文件上传
TCP 1029,20168这两个端口是lovgate蠕虫所开放的后门端口蠕虫病毒
TCP 1194OpenVPN服务(虚拟专用通道)想办法钓VPN账号进内网
TCP 1352Lotus服务( Lotus软件)弱口令,信息泄漏,爆破
TCP 1433SQL Server服务(数据库管理系注入,提权,sa弱口令,爆破
TCP 1500ISPmanager服务(主机控制面板)弱口令
TCP 1723PPTP服务(点对点隧道协议)爆破想办法钓VPN账号,进内网
TCP 2082,2083cPanel服务(虚拟机控制系统)弱口令
TCP 3306MySql服务(数据库)注入,提取,爆破
TCP 3312,3311Kangle服务( Web服务器 )弱口令
TCP 3389window rdp服务(远程桌面协议)ms12-020、Windows rdp shift后门[需要03以下的系
统]、爆破
首先说明3389端口是windows的远程管理终端所开的端口,它并不是一个木马程序,请先确定该服务是否是你自己开放的
TCP 40004000端口是用于大家经常使用的qq聊天工具的,再细说就是为qq客户端开放的端口抓包,破解
TCP 4848GlassFish服务(应用服务器 )弱口令
TCP 5000Flask、Sybase/DB2服务(数据爆破,注入
TCP 5432postgresql服务(数据库)爆破,注入,弱口令
TCP 5554一种针对微软Isass服务的新蠕虫病
毒–震荡波( Worm.Sasser ),该病毒可以利用TCP5554端口开启一个FTP服务
主要被用于病毒的传播
TCP 5900,5901,5902VNC服务虚拟网络控制台,远程控制弱口令爆破VNC提权
TCP 8000Ajenti ( linux服务器管理面板)弱口令
TCP 50070,50030Hadoop(分布式文件系统)默认端口未授权访问