×

端口扫描原理详解:从 TCP 握手到安全评估实战

端口扫描是网络安全评估中最基础也最重要的步骤之一。本文将从 TCP 三次握手讲起,对比各种扫描技术,并教你如何解读结果和做好防护。

端口扫描类型与风险评估示意图
示意图: 端口扫描类型与风险评估示意图

一、端口基础

范围名称说明
0–1023知名端口22(SSH)、80(HTTP)、443(HTTPS)
1024–49151注册端口3306(MySQL)、5432(PostgreSQL)
49152–65535动态端口操作系统临时分配

二、TCP 三次握手与扫描原理

SYN
SYN-ACK
ACK
连接建立
扫描类型发送开放时关闭时特点
TCP Connect完整握手SYN-ACKRST可靠,但留日志
SYNSYNSYN-ACKRST快速、隐蔽、需 root
FINFIN无响应RST绕过部分防火墙
UDPUDP应用层响应ICMP Port Unreachable慢,但能发现 UDP 服务
💡 提示:SYN 扫描(nmap -sS)是实战中最常用的扫描方式。它只完成握手的前半部分,速度快且不会在应用层留下日志。但需要 root/管理员权限因为要构造原始数据包。

三、端口状态解读

状态含义原因
open端口正在监听服务运行中
closed可达但无服务服务未启动
filtered无法确定防火墙 DROP

四、常用扫描命令

# 快速扫描常见端口(SYN 扫描,需 root)
sudo nmap -sS -T4 --top-ports 1000 target_ip

# 全端口扫描(耗时较长)
sudo nmap -sS -p- target_ip

# 服务版本检测
sudo nmap -sV -p 22,80,443,3306 target_ip

# 操作系统指纹识别
sudo nmap -O target_ip

# UDP 扫描(常见 UDP 服务)
sudo nmap -sU --top-ports 100 target_ip

# 综合扫描(版本 + 脚本 + OS 检测)
sudo nmap -A -T4 target_ip

五、高风险端口

端口服务风险建议
22SSH暴力破解密钥认证 + fail2ban
3389RDP暴力破解 + 漏洞VPN 内访问
3306MySQL未授权访问仅绑 127.0.0.1
6379Redis未认证 → RCE设密码 + 绑定本地
9200Elasticsearch数据泄露不暴露公网
27017MongoDB未授权访问启用认证
⚠️ 注意:对不属于你的服务器进行端口扫描可能违反法律。始终只扫描你有授权的目标。

🔒 服务器端口安全最佳实践:

  • 最小暴露:只开必要端口
  • 数据库绝不暴露公网
  • 管理端口走 VPN
  • 定期自审:每月 nmap 扫描公网 IP
  • 用 ipinfo.im 在线端口扫描工具快速检查