一、端口基础概念
1. 端口的作用
- 一台拥有IP地址的主机可以提供多种网络服务(如Web、FTP、SMTP等)
- 通过”IP地址+端口号”的组合来区分不同的网络服务
- 解决了IP地址与网络服务之间”一对多”的关系问题
2. 端口类型
| 类型 |
描述 |
特点 |
常见端口示例 |
| TCP端口 |
传输控制协议端口 |
需要在客户端和服务器之间建立连接,提供可靠的数据传输 |
21(FTP)、23(Telnet)、25(SMTP)、80(HTTP) |
| UDP端口 |
用户数据包协议端口 |
无需建立连接,传输速度快但安全性低 |
53(DNS)、161(SNMP)、8000(QQ) |
重要提示:TCP和UDP端口号相互独立,例如TCP 235端口与UDP 235端口不冲突
3. 端口范围划分
| 范围 |
类型 |
描述 |
用途 |
| 0-1023 |
预留端口 |
由操作系统保留,仅超级用户特权应用可使用 |
系统关键服务 |
| 1024-49151 |
登记端口 |
一般服务器程序使用的端口范围 |
自定义服务端口 |
| 49152-65535 |
临时端口 |
客户端进程动态选择的端口 |
临时通信使用 |
二、TCP协议详解
1. TCP三次握手建立连接
| 步骤 |
方向 |
数据包 |
状态变化 |
说明 |
| 第一次 |
客户端→服务器 |
[SYN], Seq = x |
客户端: SYN_SEND |
客户端发送SYN包,初始化序列号 |
| 第二次 |
服务器→客户端 |
[SYN,ACK], Seq = y, ACK = x+1 |
服务器: SYN_RCVD |
服务器确认并发送SYN包 |
| 第三次 |
客户端→服务器 |
[ACK], ACK = y+1 |
客户端: ESTABLISHED 服务器: ESTABLISHED |
客户端确认,连接建立 |
2. TCP四次挥手断开连接
| 步骤 |
方向 |
数据包 |
状态变化 |
说明 |
| 第一次 |
客户端→服务器 |
[FIN] |
客户端: FIN_WAIT_1 |
客户端请求断开连接 |
| 第二次 |
服务器→客户端 |
[ACK] |
服务器: CLOSE_WAIT 客户端: FIN_WAIT_2 |
服务器确认收到断开请求 |
| 第三次 |
服务器→客户端 |
[FIN] |
服务器: LAST_ACK 客户端: TIME_WAIT |
服务器发送断开请求 |
| 第四次 |
客户端→服务器 |
[ACK] |
服务器: CLOSED 客户端: TIME_WAIT |
客户端确认,进入等待期 |
3. TCP关键状态解析
| 状态 |
说明 |
注意事项 |
| LISTENING |
服务正在监听连接请求 |
FTP服务启动后首先处于此状态 |
| ESTABLISHED |
连接已建立,正在通信 |
表示两台机器正在正常通信 |
| CLOSE_WAIT |
对方已关闭连接,等待本端关闭 |
本端需调用close()关闭连接 |
| TIME_WAIT |
本端主动关闭连接,等待2MSL时间 |
持续2倍最大分段生存期,防止旧连接影响新连接 |
三、端口检测与管理
1. 常用端口检测命令
Windows系统
1 2
| netstat -ano netstat -ano | findstr "80"
|
Linux系统
1 2 3
| netstat -tuln lsof -i :80 ss -tuln
|
2. netstat命令详解
| 参数 |
功能 |
说明 |
-a |
显示所有连接和侦听端口 |
包含已建立和等待连接 |
-b |
显示创建连接的可执行程序 |
可能需要管理员权限 |
-n |
以数字形式显示地址和端口 |
避免DNS解析,显示更快 |
-o |
显示进程ID(PID) |
用于关联进程与端口 |
-p proto |
指定协议 |
proto: TCP, UDP, TCPv6, UDPv6 |
-r |
显示路由表 |
显示网络路由信息 |
-s |
按协议统计 |
显示各协议的统计信息 |
四、常见端口参考表
1. Web服务类端口
| 端口 |
服务 |
协议 |
用途 |
安全风险 |
| 80 |
HTTP |
TCP |
Web服务 |
XSS、SQL注入等Web漏洞 |
| 80-89 |
HTTP |
TCP |
备用Web服务 |
同上 |
| 443 |
HTTPS |
TCP |
加密Web服务 |
SSL/TLS漏洞、心脏滴血 |
| 8000-9090 |
HTTP |
TCP |
备用Web服务 |
管理后台常在此范围 |
| 8080 |
HTTP |
TCP |
Tomcat/WDCP |
默认弱口令 |
| 8089 |
HTTP |
TCP |
JBOSS |
默认弱口令、反序列化 |
| 8888 |
HTTP |
TCP |
amh/LuManager |
主机管理系统 |
2. 数据库服务类端口
| 端口 |
服务 |
协议 |
用途 |
安全风险 |
| 1433 |
MSSQL |
TCP |
Microsoft SQL Server |
弱口令、SQL注入 |
| 1521 |
Oracle |
TCP |
Oracle数据库 |
弱口令、默认账户 |
| 3306 |
MySQL |
TCP |
MySQL数据库 |
弱口令、未授权访问 |
| 5432 |
PostgreSQL |
TCP |
PostgreSQL数据库 |
弱口令、配置错误 |
| 27017-27018 |
MongoDB |
TCP |
MongoDB数据库 |
未授权访问 |
3. 特殊服务类端口
| 端口 |
服务 |
协议 |
用途 |
安全风险 |
| 445 |
SMB |
TCP |
Windows文件共享 |
永恒之蓝等漏洞 |
| 6379 |
Redis |
TCP |
Redis缓存服务 |
未授权访问、RCE |
| 873 |
Rsync |
TCP |
文件同步服务 |
未授权访问 |
| 9200-9300 |
Elasticsearch |
TCP |
搜索引擎服务 |
命令执行漏洞 |
| 11211 |
Memcached |
TCP |
缓存服务 |
未授权访问 |
| 5984 |
CouchDB |
TCP |
NoSQL数据库 |
未授权访问 |
| 7001-7002 |
WebLogic |
TCP |
Java应用服务器 |
默认弱口令、反序列化 |
4. 常用管理类端口
| 端口 |
服务 |
协议 |
用途 |
安全风险 |
| 21 |
FTP |
TCP |
文件传输 |
弱口令、匿名访问 |
| 22 |
SSH |
TCP |
安全远程登录 |
弱口令、暴力破解 |
| 23 |
Telnet |
TCP |
远程登录 |
明文传输、弱口令 |
| 3389 |
RDP |
TCP |
Windows远程桌面 |
弱口令、爆破 |
| 5900 |
VNC |
TCP |
远程桌面控制 |
弱口令、未授权访问 |
| 10000 |
Webmin |
TCP |
服务器管理 |
默认弱口令 |
| 50000 |
SAP |
TCP |
企业资源计划 |
命令执行漏洞 |
5. 其他重要端口
| 端口 |
服务 |
协议 |
用途 |
安全风险 |
| 53 |
DNS |
UDP/TCP |
域名解析 |
DNS劫持、缓存投毒 |
| 161 |
SNMP |
UDP |
网络管理 |
信息泄露、未授权访问 |
| 389 |
LDAP |
TCP |
目录服务 |
信息泄露 |
| 4440 |
Rundeck |
TCP |
任务调度 |
未授权访问 |
| 6082 |
Varnish |
TCP |
Web加速 |
未授权访问、网站篡改 |
| 8649 |
Ganglia |
TCP |
监控系统 |
信息泄露 |
五、端口安全建议
最小化原则:
安全配置:
- 为管理端口设置强密码
- 限制访问IP范围
- 使用防火墙规则控制访问
定期检测:
- 使用端口扫描工具定期检查开放端口
- 及时修补已知漏洞
- 监控异常连接
特殊端口处理:
- Web管理后台避免使用默认端口
- 敏感服务(如数据库)不应直接暴露在公网
- 使用跳板机访问内部服务
渗透测试注意事项:
- 在授权范围内进行端口扫描
- 避免对关键服务进行暴力测试
- 遵守相关法律法规和道德规范
六、端口扫描工具推荐
| 工具 |
类型 |
特点 |
适用场景 |
| Nmap |
命令行 |
功能强大,支持多种扫描技术 |
专业渗透测试 |
| Masscan |
命令行 |
速度极快,可全网扫描 |
大规模网络扫描 |
| Zenmap |
GUI |
Nmap的图形界面,易于使用 |
初学者使用 |
| Angry IP Scanner |
GUI |
简单易用,跨平台 |
快速网络扫描 |
| Netcat |
命令行 |
“网络瑞士军刀”,多功能 |
网络调试与测试 |
七、端口安全加固示例
1. 关闭不必要端口(Linux)
1 2 3 4 5 6 7 8 9
| sudo netstat -tuln
sudo ufw deny 111
sudo iptables -A INPUT -p tcp --dport 111 -j DROP sudo iptables -A INPUT -p udp --dport 111 -j DROP
|
2. 限制访问IP(Windows)
- 打开”高级安全Windows防火墙”
- 选择”入站规则”
- 找到对应服务的规则
- 右键选择”属性”
- 在”作用域”选项卡中,添加允许的IP地址
3. 服务安全配置
SSH服务:
- 禁用root远程登录
- 使用密钥认证代替密码
- 限制访问IP范围
Web服务:
- 使用HTTPS代替HTTP
- 配置安全头(如CSP、HSTS)
- 限制管理后台访问IP