nmap 是什么
nmap 是最常用的网络探测与端口扫描工具:先做主机发现,再向目标端口发包并根据回包判断端口状态(open 有服务响应、closed 明确拒绝、filtered 被丢弃或静默)。扫描方式分两类,-sS 半开扫描发 SYN 不等完整握手,速度快但需要原始套接字权限(root 或 CAP_NET_RAW);-sT 走系统 connect 调用,普通用户可运行但速度慢。Linux 发行版用包管理器安装,Windows 使用官方安装包。
基本信息
| 默认行为 | 主机发现 + 常见 1000 个端口 |
|---|---|
| 常用参数 | -sS / -sT / -Pn / --top-ports / -p / -oA |
| 权限要求 | -sS 需 root 或 CAP_NET_RAW;-sT 普通用户可用 |
| 前置条件 | 授权网段、报备时间窗口与限速策略 |
| 产出 | 开放端口清单,并标注扫描方式与时间 |
典型使用场景
- 项目启动时摸清授权网段的开放端口,为后续服务识别排优先级
- 验证防火墙策略是否只放行了业务必要端口
- 变更后复核:新上线的服务是否把端口暴露到了不该暴露的网段
- 给客户输出暴露面清单时提供端口级证据
- 排查业务不通:先确认目标端口是 filtered 还是 closed
最小示例
最小示例
nmap -sn 10.0.10.0/24 # 先做主机发现,避免对不存在的地址发包
nmap -sS -p 22,80,443 10.0.10.5 # 扫描指定端口(需 root)
nmap -sT -Pn -p 1-1000 10.0.10.5 # 低权限场景,跳过主机发现直接扫端口
nmap -sS --top-ports 100 10.0.10.0/24 # 只扫最常见 100 个端口,控制噪音
nmap -sS -T3 --min-rate 200 -p- 10.0.10.5 # 全端口扫描时显式限速
nmap -oA scan-10.0.10.5 # 三种格式留档,便于复核与复现输出逐列读法
| 字段 | 含义 | 正常与异常 |
|---|---|---|
| PORT | 端口号与协议 | 只关注授权范围内的端口 |
| STATE | open / closed / filtered | filtered 多为防火墙丢弃,不等于端口关闭 |
| SERVICE | 按端口号推断的服务名 | 默认推断不可靠,需 -sV 复核 |
| REASON | 判定依据,如 syn-ack、reset、no-response | 跨网段扫描出现大量 no-response 时先怀疑拦截设备 |
-sT 走系统 connect 调用,速度慢但权限要求低;同一目标用 -sS 与 -sT 结果可能不同(中间设备对半开连接的响应策略不一样),报告里要写明所用方式。
扫描频率过高会被 IPS 判为攻击行为并触发封禁:扫描前与客户监控团队同步时间窗口与出口 IP,发现被阻断后先联系解封再继续。