nmap 是什么
nmap 是端口与服务识别的基础工具:它通过发送特定探测包并分析响应,判断主机是否在线、哪些端口开放、以及端口上运行的服务与版本。默认行为是扫描少量常用端口,配合 -sV 做版本识别、-Pn 跳过主机存活探测、--open 只保留开放端口。使用时要注意两点:扫描会给目标带来额外负载,需要授权与窗口控制;版本识别依赖特征库,结论是判断依据之一而不是最终结论,重要资产应结合其他方式交叉验证。
基本信息
| 适用平台 | Linux 与 Windows 均可运行,部分扫描类型需要 root 或管理员权限 |
|---|---|
| 扫描类型 | -sS SYN(默认有权限时)/-sT 完整连接 |
| 服务识别 | -sV 探测版本 |
| 过滤输出 | --open 只显示开放端口 |
| 解析控制 | -n/-R DNS 解析开关 |
| 输入输出 | -iL 从文件读目标,-oA 输出三种格式结果 |
| 权限差异 | 无特权用户只能使用完整连接扫描 |
典型使用场景
- 资产梳理:确认自有主机的端口开放情况与对外暴露面
- 服务识别:核对端口上运行的服务与版本,为补丁核对提供输入
- 变更核查:上线前后对比端口开放差异,发现预期外的监听
- 横向可达性评估:在授权范围内确认网段之间的访问控制是否有效
- 脚本化检查:用内置脚本做证书信息、常见配置项等专项核查
- 结果归档:把扫描结果按时间保存,便于与历史基线对比
常用起手式
常用起手式
# TCP 连接扫描(无 root 权限可用)
nmap -sT -sV --open --top-ports 100 192.0.2.10
# 需要 root:SYN 扫描更快更隐蔽(对目标日志而言)
sudo nmap -sS -sV -p 22,80,443,8080,3306 192.0.2.10
# -n 跳过 DNS 解析,加速输出
# 批量目标:-iL targets.txt -oA scan-2026-10
# 仅限自有或已获书面授权的资产输出字段读法
| 字段 | 含义 | 注意事项 |
|---|---|---|
| 22/tcp open ssh | 端口开放且识别到服务 | 识别结果来自特征匹配,需人工确认 |
| filtered | 被过滤,无法判断开放与否 | 常见于防火墙丢包,需换探测方式 |
| closed | 端口关闭但有响应 | 可用于判断主机在线 |
| Service Info | 版本与产品信息 | 可作为补丁核对线索,非最终结论 |
扫描内网资产时优先确认目标是否允许 ICMP;若主机屏蔽 ping,需要 -Pn 才能继续(见主机发现条目)。
速率是可控项:--max-rate 与 --min-parallelism 可以在业务敏感时段把负载压下来,进度慢一些比触发业务告警更划算。