端口扫描是网络安全评估中最基础也最重要的步骤之一。本文将从 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-ACK | RST | 可靠,但留日志 |
| SYN | SYN | SYN-ACK | RST | 快速、隐蔽、需 root |
| FIN | FIN | 无响应 | RST | 绕过部分防火墙 |
| UDP | UDP | 应用层响应 | 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五、高风险端口
| 端口 | 服务 | 风险 | 建议 |
|---|---|---|---|
| 22 | SSH | 暴力破解 | 密钥认证 + fail2ban |
| 3389 | RDP | 暴力破解 + 漏洞 | VPN 内访问 |
| 3306 | MySQL | 未授权访问 | 仅绑 127.0.0.1 |
| 6379 | Redis | 未认证 → RCE | 设密码 + 绑定本地 |
| 9200 | Elasticsearch | 数据泄露 | 不暴露公网 |
| 27017 | MongoDB | 未授权访问 | 启用认证 |
⚠️ 注意:对不属于你的服务器进行端口扫描可能违反法律。始终只扫描你有授权的目标。
🔒 服务器端口安全最佳实践:
- 最小暴露:只开必要端口
- 数据库绝不暴露公网
- 管理端口走 VPN
- 定期自审:每月 nmap 扫描公网 IP
- 用 ipinfo.im 在线端口扫描工具快速检查