D
开发工具箱

Nmap 命令详解:扫描类型、参数与实战用法

安全工具 2026年8月4日 约 1 分钟阅读

⚠️ 本教程仅用于授权渗透测试、漏洞扫描和自身资产的安全自查。对未授权系统进行端口扫描可能违反法律法规或服务条款。nmap 是攻击者也会使用的侦察工具——理解它的意义,是为了作为防御者去发现暴露面、及时收敛风险

Nmap 是什么

Nmap(Network Mapper)是最常用的网络探测与安全审计工具。它的核心能力就一件事:搞清楚”目标网络上有哪些主机、开放了哪些端口、跑着什么服务、是什么操作系统、有什么已知漏洞”

这串信息在攻防两端都至关重要:

  • 攻击者用它做侦察,先摸清目标暴露面再挑软柿子打;
  • 防御者/运维用它做资产自查,发现自己无意中开放的危险端口(比如 Redis 没设密码、数据库对公网开放)。

所以 nmap 既是攻击的”第一步”,也是防御的”体检仪”。下面按”从简到繁”的顺序拆解它的核心参数。

核心结构:一条 nmap 命令长什么样

nmap [扫描类型] [选项] [目标]

三部分:

  • 扫描类型:决定”怎么扫”,比如 -sS(SYN 扫描)、-sT(全连接扫描)、-sU(UDP 扫描)。不写扫描类型时,nmap 默认对特权用户用 SYN 扫描、普通用户用全连接扫描
  • 选项-p(端口)、-sV(版本探测)、-O(OS 识别)、-T4(速率)等。
  • 目标:单个 IP、域名、CIDR(如 192.168.1.0/24)、范围(192.168.1.1-100)或多个目标空格隔开。

我们的 Nmap 命令生成器 就是把这三块可视化拼出来,不用背参数。

扫描类型:四种最常用的”怎么扫”

1. SYN 扫描(-sS,最常用)

也叫”半开扫描”(half-open)。它只发 SYN,收到 SYN-ACK 就回 RST 断开,不完成 TCP 三次握手

优点:

  • :不用建完整连接,扫描成千上万个端口也快;
  • 隐蔽:目标应用层(服务)察觉不到连接,只留下一条没完成的握手记录,很多简单日志看不到;
  • 需要 root:因为要自己构造原始 SYN 包(raw socket)。普通用户跑 -sS 会被降级成 -sT

这是渗透测试和常规侦察的默认选择。

2. 全连接扫描(-sT

完整走完 TCP 三次握手(SYN → SYN-ACK → ACK),再发 RST 关闭。

  • 不需要特权,普通用户就能跑;
  • 更吵:目标的服务和日志会完整记录这条连接,隐蔽性差;
  • 适用于没有 root 权限或 SYN 扫描被防火墙/IDS 干扰的环境。

3. UDP 扫描(-sU

扫 UDP 端口(DNS、SNMP、DHCP、NTP 等)。UDP 无连接,nmap 发 UDP 包后:

  • 收到 UDP 回应 → 端口开放;
  • 收到 ICMP 端口不可达 → 端口关闭;
  • 没回应 → 被过滤(open|filtered),需要进一步确认。

UDP 扫描慢且不可靠(丢包、无响应很常见),通常针对特定重要 UDP 端口单独扫,而不是全端口扫。

4. 主机发现(-sn,只探活不扫端口)

只回答”这台机器在线吗”,不发端口探测包:

nmap -sn 192.168.1.0/24

适合先圈定存活主机,再对存活列表做深入扫描。也叫 ping 扫描(虽然不止用 ICMP ping)。

提升信息量:版本、OS 与脚本

光知道”端口开放”还不够,真正有用的是”开放端口上跑的是什么”。

服务与版本探测(-sV

探测端口上运行的服务及其版本号:

nmap -sV 192.168.1.10

输出会从 80/tcp open http 变成 80/tcp open http Apache httpd 2.4.41——版本号直接决定有没有已知漏洞可打

OS 识别(-O

根据 TCP/IP 协议栈指纹猜操作系统:

nmap -O 192.168.1.10

注意 OS 识别需要 root(要发原始包),且是”猜”的,准确度有限,仅供参考。

默认脚本(-sC

启用 Nmap 自带的一组安全向默认 NSE 脚本(约等于 --script=default),会做:

  • 抓取 banner、服务额外信息;
  • 检查常见弱配置(如匿名 FTP 登录);
  • 一些基础漏洞探测。

实战里 -sC -sV 几乎总是一起用,能一次性拿到服务详情和脚本补充信息,性价比最高。

激进扫描(-A

-A 是组合糖:= -sV + -O + -sC + 路由追踪(-traceroute),一口气把所有”信息增强”都打开。

nmap -A 192.168.1.10

信息最全,但也最吵、最慢、最容易被发现。适合在已授权的目标上做彻底体检。

NSE 漏洞脚本(--script=vuln

NSE(Nmap Scripting Engine)脚本库里有专门的漏洞检测类脚本。用 vuln 类别可扫常见漏洞:

nmap -sV --script=vuln 192.168.1.10

⚠️ 注意:vuln 类脚本里有些会真正向目标发送攻击性 payload(如尝试触发漏洞),在不确定授权范围时慎用,避免把目标打挂。

端口范围与速率调优

指定端口(-p

  • -p 80,443:指定端口
  • -p 1-1000:范围
  • -p-:全端口(1–65535)
  • -p- -pU:53,161:TCP 全端口 + 指定 UDP 端口

全端口扫描能发现藏在高位的奇葩服务(很多管理员把危险服务放在非常规端口),但耗时显著增加。

跳过主机发现(-Pn

有时目标禁止 ping(ICMP 被封),nmap 默认会先 ping、不通就跳过。加 -Pn 强制”把每个目标都当存活来扫”:

nmap -Pn -sS -sV 203.0.113.5

代价是慢(要对所有目标发包),但能扫到”禁 ping”的主机。

速率档位(-T0 ~ -T5

-T 控制扫描速度和激进程度(本质是调整发包时序、并行度):

档位含义场景
-T0极慢、每次只发一个包躲 IDS,极隐蔽
-T1隐蔽
-T2较温和折中
-T3默认正常
-T4局域网/授权快速扫描
-T5极快极快但易丢包、最易被检测

一般实战用 -T4 提速;需要躲检测时降到 -T1/-T0

路由追踪(--traceroute / -A 内含)

显示到目标的网络路径,辅助判断目标所在网段和位置。

输出格式(-oN / -oX / -oG / -oA

  • -oN <文件>:普通可读文本
  • -oX <文件>:XML,方便被其他工具(如漏洞管理平台)解析
  • -oG <文件>:grepable 格式,方便 grep/awk 二次处理
  • -oA <文件>:一次性输出上述三种(文件名前缀相同)
nmap -sS -sV -oA scan-result 192.168.1.0/24

会生成 scan-result.nmap.xml.gnmap 三个文件。

常见组合命令速查

目的命令
快速探活网段nmap -sn 192.168.1.0/24
SYN 扫常用端口 + 版本nmap -sS -sV 192.168.1.10
服务 + 默认脚本 + OS(激进)nmap -A 192.168.1.10
全端口 + 快扫nmap -sS -p- -T4 192.168.1.10
禁 ping 目标体检nmap -Pn -sS -sV -A 203.0.113.5
UDP 重点端口nmap -sU -p 53,161,123 192.168.1.10
漏洞扫描(谨慎)nmap -sV --script=vuln 192.168.1.10

作为防御者:用 nmap 做资产自查

理解 nmap 的最好方式,是拿它扫自己。定期对自己负责的网段跑一遍:

  • 发现意外开放的端口(比如测试环境误开了 6379 Redis、9200 ES 对公网);
  • 发现版本过旧的服务(nmap 报出 OpenSSH 7.4,明显该升级);
  • 发现被禁 ping 却仍存活的暴露面。

把自查常态化,就能在攻击者之前把暴露面收敛掉。这也是我们做 Nmap 命令生成器 这类工具的初衷——降低安全自查的门槛,让运维和开发者也能轻松”体检”自己的资产。

常见问题

Q1:nmap 需要 root/管理员权限吗? A:SYN 扫描(-sS)、OS 识别(-O)、-sV 的某些探测需要原始套接字权限,在 Linux 上通常要 sudo,Windows 上要用管理员命令行。没有特权时,nmap 会自动降级为全连接扫描(-sT),功能受限但也能用。

Q2:为什么有些端口显示 open|filtered A:这是 nmap 的”二义性”结论——它无法区分这个端口究竟是开放、还是被防火墙过滤(无响应)。常见于 UDP 扫描和 SYN 扫描遇到严格防火墙时。可换 -sV、调整 -T 速率、或用 -Pn 重扫来进一步确认。

Q3:-sS-sT 到底选哪个? A:有 root 权限、追求速度和隐蔽 → 用 -sS;没有权限、或 SYN 扫描总被拦 → 用 -sT。绝大多数渗透场景默认 -sS

Q4:全端口 -p- 扫一次要多久? A:取决于速率档位、网络延迟和目标响应。局域网内 -T4 -p- 几分钟到十几分钟;跨公网或 -T3 可能要几十分钟到更久。只对重要目标全端口扫,普通目标用默认 1000 个常用端口即可。

Q5:--script=vuln 会把目标打坏吗? A:有一定风险。vuln 类脚本含部分”主动触发漏洞”的 payload,对脆弱目标可能造成崩溃或服务异常。仅在明确授权、且可接受风险的目标上使用;不确定时先只用 -sC -sV 做被动信息收集。

Q6:扫描别人家网站/服务器犯法吗? A:对未授权的系统进行端口扫描,在很多司法管辖区可能违反《计算机信息系统安全保护条例》或类似法律,也可能触发对方的安全告警导致你被封 IP 甚至追责。只扫你自己拥有或已书面授权的资产。

Q7:-T5 是不是最快最好? A:不一定。-T5 极快但丢包率高,可能漏掉实际开放的端口,同时也最容易被 IDS 检测。要速度用 -T4 通常是最优平衡;要准确就别拉太高。

小结

nmap 的核心就是”用什么方式扫(扫描类型)+ 收集多少信息(版本/OS/脚本)+ 扫多快多广(端口/速率)“的组合。SYN 扫描 -sS 是默认主力,-sV -sC 补齐服务细节,-A 一次性全开做彻底体检,-p--T 控制覆盖与速度。把它用在授权自查上,就能在攻击者之前发现并收敛自己的暴露面——这才是这类安全工具正确的打开方式。