概念介绍:Nmap 是什么,以及合法使用的前提
一、概念介绍:Nmap 是什么,以及合法使用的前提
Nmap 是 Network Mapper 的缩写,是一套开源的网络探测与安全审计工具。它的核心能力是发现网络上有哪些主机在线、这些主机开放了哪些端口、端口后面运行着什么服务与版本、以及目标操作系统的大致类型。除了这些基础能力,它还提供了一套脚本引擎 NSE,可以用 Lua 脚本扩展出更具体的探测逻辑。
在运行任何扫描之前,必须先确认一件事:只扫描自有网络,或已经获得书面授权的目标。端口扫描在法律上通常被认定为"探测行为",未经授权对第三方网络做扫描,在很多国家和地区都可能构成违法,即便没有造成任何破坏。合规的扫描应当满足:授权主体明确(网络或系统的所有者)、范围明确(网段、单机、端口范围)、时间窗口明确、以及紧急联系人明确。企业内部做资产盘点时,也建议先通过内部流程拿到网络管理方的书面确认,并提前把扫描源 IP 告知运维与安全团队,避免被当成攻击行为触发应急响应。
扫描过程中应当留痕:记录扫描时间、源地址、目标范围、使用的命令与参数、以及输出文件。扫描结果通常包含大量资产信息,属于敏感数据,要按内部的数据分级要求存储与传递,不要随手发到公开渠道。发现意外的高危暴露面时,应通过正式渠道上报,而不是自行深入测试。
Nmap 的核心概念需要先理清。主机发现决定哪些目标被认为在线;端口扫描判断端口状态;服务与版本探测通过发送特定探针并比对响应指纹来判断服务类型与版本;操作系统探测通过分析 TCP/IP 协议栈的实现差异来猜测系统类型。端口状态主要有六种:open(有服务在监听)、closed(可达但无服务)、filtered(被防火墙或过滤设备阻挡,无法确定)、unfiltered(可达但无法判断是否开放)、open|filtered(无法区分这两种情况)、closed|filtered(无法区分这两种情况)。理解 filtered 的含义很重要——它不代表安全,只代表探测不到。
和相邻方案的差别。Masscan 是为大网段快速扫描设计的工具,速度极快但准确性与服务识别能力弱于 Nmap,常见组合是先用 Masscan 找开放端口,再用 Nmap 做详细识别。Zmap 面向全网段研究类扫描,速度更快但更不精确,且使用场景高度受限。Nmap 的 NSE 脚本提供了从服务识别、漏洞探测到信息收集的扩展能力,但要特别注意脚本分类中的 intrusive 与 vuln 类脚本,它们可能对目标造成实际影响,只能在明确授权的情况下使用。选型经验:做资产盘点与合规审计用 Nmap;做大网段快速筛查用 Masscan 加 Nmap 组合。
| 术语 | 含义 | 实际影响 |
|---|---|---|
| Host Discovery | 判断主机是否在线 | 防火墙可能拦截探测包导致误判为离线 |
| SYN 扫描 | 半开扫描,不完成三次握手 | 速度快且不易留完整连接记录,需要管理员权限 |
| Connect 扫描 | 完成完整三次握手 | 不需要特权,但目标会记录完整连接 |
| UDP 扫描 | 针对 UDP 端口 | 慢且结果不确定,通常只扫常见端口 |
| 服务版本探测 | 发送探针比对指纹 | 可能被目标的防护机制识别为异常流量 |
| 定时模板 | T0 到 T5 的时序预设 | 数字越大越快,也越容易被检测与丢弃 |
| NSE 脚本 | Lua 扩展脚本 | 按 category 区分安全性,intrusive 与 vuln 类需谨慎 |
| filtered 状态 | 探测不到端口状态 | 不代表端口关闭,只代表被过滤 |

