Linux Nmap 命令典型用法全揭秘:网络安全的漏洞扫描利器你一定要知道! 📅 2026/7/18 19:13:53 在网络安全领域信息收集是渗透测试、漏洞评估的第一步而 NmapNetwork Mapper作为 Linux 环境下最经典的网络扫描工具堪称 “信息收集的瑞士军刀”。无论是主机存活探测、端口状态识别还是服务版本探测、漏洞脆弱性扫描Nmap 都能凭借灵活的参数组合和强大的脚本扩展能力帮你快速摸清目标网络的 “底细”。本文将从 Nmap 的基础原理出发拆解其7 大类典型用法结合实战场景讲解命令示例与结果解读附上线程控制、输出优化等进阶技巧帮你从 “会用 Nmap” 到 “用好 Nmap”真正发挥其在漏洞扫描中的核心价值。一、Nmap 核心定位为什么它是网络安全的 “必备工具”在学习用法前先明确 Nmap 的核心能力 —— 它不是单一的 “漏洞扫描器”而是集 “主机发现、端口扫描、服务探测、OS 识别、脚本扩展” 于一体的综合网络探测工具。其在网络安全中的核心应用场景包括资产盘点快速识别内网存活主机、开放端口理清目标网络拓扑漏洞预探测通过服务版本识别如 Apache 2.4.49关联已知漏洞如 Log4j、Heartbleed渗透测试前置确定目标攻击面如开放的 3389 远程桌面、8080 管理后台安全监控定期扫描服务器端口状态检测异常开放端口如后门端口。Nmap 的优势在于轻量、跨平台Linux/Windows/macOS、开源免费且支持 “命令行参数 Lua 脚本” 的灵活扩展既能满足新手的基础扫描需求也能支撑老手的深度定制化探测。二、Nmap 基础安装与核心语法框架在 Linux 环境下使用 Nmap首先要完成安装与基础语法的理解这是后续复杂用法的前提。1. Linux 环境安装 Nmap不同 Linux 发行版的安装命令略有差异推荐使用官方源或包管理器安装确保版本最新本文基于 Nmap 7.94 版本讲解# Ubuntu/Debian系列sudoaptupdatesudoaptinstallnmap-y# CentOS/RHEL系列sudoyuminstallnmap-y# 验证安装成功查看版本nmap-V# 输出示例Nmap version 7.94 ( https://nmap.org )2. Nmap 核心语法框架Nmap 的命令结构遵循 “参数 目标” 的逻辑最基础的格式为nmap[扫描参数][目标地址]其中扫描参数控制扫描类型如端口扫描、服务探测、扫描速度、输出格式等目标地址支持单 IP192.168.1.100、IP 段192.168.1.0/24、域名www.example.com、列表文件-iL target.txt文件中每行一个目标。例如最基础的 “扫描单个 IP” 命令nmap192.168.1.100# 默认扫描1000个常用端口输出开放端口与服务三、Nmap 典型用法拆解Nmap 的用法围绕 “信息收集深度” 逐步递进从 “是否有主机存活” 到 “是否存在漏洞”可分为 7 大类核心场景。每类场景均附 “命令示例 参数解读 结果分析”确保即学即用。1. 场景 1主机发现存活探测—— 确定 “攻击目标是否在线”在扫描端口前需先确认目标主机是否存活避免扫描无效 IP 浪费时间。Nmap 提供多种主机发现方式最常用的是Ping 扫描-sn仅发送 ICMP 请求包不进行端口扫描速度快且隐蔽。实战命令与解读# 1. 单IP存活探测nmap-sn192.168.1.100# -sn只做主机发现不扫描端口# 2. 网段存活探测找出192.168.1.0/24网段所有在线主机nmap-sn192.168.1.0/24-oNlive_hosts.txt# -oN将结果保存为普通文本文件# 3. 无Ping扫描应对禁止ICMP的目标通过TCP SYN/ACK包探测存活nmap-sn-PS21,22,80,443192.168.1.100# -PS发送SYN包到指定端口21ftp/22ssh/80http/443https结果分析示例Nmap scan report for 192.168.1.100 Host is up (0.00052s latency). # 主机存活延迟0.00052秒 Nmap done: 1 IP address (1 host up) scanned in 0.03 secondsHost is up主机存活Host is down主机离线或禁止 ICMP需用 - PS/-PA 参数重试。2. 场景 2端口扫描 —— 找出 “目标开放的攻击入口”端口是网络服务的 “窗口”如 80 端口对应 HTTP 服务、22 对应 SSH端口扫描是 Nmap 最核心的功能。需掌握 “端口范围控制” 与 “扫描类型选择”适配不同场景需求。核心端口扫描参数参数功能描述适用场景-p指定端口范围如 - p 80,443 或 -p 1-1000精准扫描目标端口-sTTCP 全连接扫描三次握手建立连接准确性高适合无防火墙环境-sSTCP SYN 半开扫描只发 SYN 包不建立完整连接速度快、隐蔽性高渗透测试首选-sUUDP 端口扫描探测 UDP 服务如 DNS 53 端口需配合 - pU速度较慢-p-扫描所有 65535 个端口全面扫描适合深度资产探测实战命令与解读# 1. 常用端口快速扫描SYN半开扫描推荐渗透测试用nmap-sS-p1-1000192.168.1.100# 扫描1-1000端口速度快且隐蔽# 2. 重点端口精准扫描Web服务远程桌面SSHnmap-sT-p80,443,22,3389192.168.1.100# -sT全连接扫描结果更准确# 3. 全端口深度扫描适合重要目标需耐心等待nmap-sS-p-192.168.1.100-T4# -T4扫描速度等级4共0-5级4级平衡速度与隐蔽性# 4. UDP端口扫描探测DNS、SNMP等UDP服务nmap-sU-p53,161192.168.1.100# -sUUDP扫描-p 53(DNS)/161(SNMP)结果分析示例PORT STATE SERVICE 22/tcp open ssh # 22端口开放对应SSH服务 80/tcp open http # 80端口开放对应HTTP服务 443/tcp closed https # 443端口关闭 3389/tcp filtered rdp # 3389端口被过滤可能有防火墙拦截open端口开放攻击入口closed端口关闭无服务监听filtered端口被过滤防火墙 / IDS 拦截无法确定状态。3. 场景 3服务版本探测 —— 关联 “已知漏洞风险”仅知道端口开放不够需进一步识别 “端口对应的服务版本”如 Apache 2.4.49、Nginx 1.21.6因为特定版本可能存在已知漏洞如 Apache 2.4.49 的路径穿越漏洞 CVE-2021-41773。实战命令与解读# 基础服务版本探测-sV启用服务版本识别nmap-sS-p80,443-sV192.168.1.100# 深度版本探测--version-intensity 9提高版本探测强度结果更精准nmap-sS-p80-sV--version-intensity9192.168.1.100# 结合端口扫描版本探测扫描常用端口并识别服务版本nmap-sS-p1-1000-sV192.168.1.100-oXservice_scan.xml# -oX保存为XML格式方便导入漏洞管理工具结果分析示例PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.49 # 80端口运行Apache 2.4.49 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)若识别到Apache httpd 2.4.49可立即关联漏洞库确认该版本存在 CVE-2021-41773路径穿越 RCE后续可针对性测试若版本识别为unknown可提高--version-intensity参数1-9默认 7或更换扫描类型如 - sT 全连接扫描。4. 场景 4操作系统OS探测不同操作系统如 Windows Server 2019、Ubuntu 20.04的漏洞与利用方式差异极大如 Windows 的永恒之蓝漏洞 CVE-2017-0144 仅影响 Windows 系统。Nmap 通过分析 TCP/IP 协议栈特征可推测目标 OS 类型。实战命令与解读# 基础OS探测-O启用操作系统识别nmap-sS-p1-1000-O192.168.1.100# 深度OS探测--osscan-guess强制猜测OS类型适合难以识别的目标nmap-sS-p80,22-O--osscan-guess192.168.1.100结果分析示例Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.19 Network Distance: 1 hopNmap 会输出 “OS 家族”如 Linux、“内核版本范围”4.X-5.X帮助后续选择适配的漏洞利用工具如针对 Linux 的 Dirty COW 漏洞 CVE-2016-5195若 OS 识别结果模糊如 “Running: Unknown”需增加开放端口数量OS 探测依赖多端口特征或使用 - sT 全连接扫描。5. 场景 5脚本扫描NSE—— 自动化 “漏洞检测与利用”Nmap Scripting EngineNSENmap 脚本引擎是其 “灵魂功能”内置数百个 Lua 脚本可实现漏洞检测如弱口令、CVE 漏洞、认证测试、信息收集等自动化操作。对于网络安全人员NSE 脚本扫描是 “提升效率的关键”。核心 NSE 脚本分类与参数脚本类别功能描述常用脚本示例参数用法vuln漏洞检测CVE、配置缺陷http-vuln-cve2021-41773Apache 漏洞–script vulnauth认证测试弱口令、默认密码ssh-bruteSSH 弱口令爆破–script authdiscovery信息发现目录扫描、DNS 解析http-enumWeb 目录扫描–script discoveryexploit漏洞利用获取 shellhttp-vuln-cve2017-5638Struts2 RCE–script exploit实战命令与解读# 1. 基础漏洞扫描扫描目标是否存在常见漏洞如SQL注入、XSSnmap-sS-p80,443-sV--scriptvuln192.168.1.100# --script vuln调用所有vuln类脚本# 2. 针对性CVE漏洞检测检测Apache 2.4.49路径穿越漏洞CVE-2021-41773nmap-p80--scripthttp-vuln-cve2021-41773192.168.1.100# 3. SSH弱口令爆破使用默认字典适合测试内部弱口令主机nmap-p22--scriptssh-brute --script-argsuserdbusers.txt,passdbpasswords.txt192.168.1.100# --script-args传递脚本参数userdb用户名字典passdb密码字典# 4. Web目录扫描探测Web后台、敏感文件如login.php、backup.zipnmap-p80--scripthttp-enum192.168.1.100结果分析示例PORT STATE SERVICE 80/tcp open http | http-vuln-cve2021-41773: | VULNERABLE: | Apache 2.4.49 Path Traversal and Remote Code Execution | State: VULNERABLE | IDs: CVE:CVE-2021-41773 | Risk factor: Critical CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | Disclosure date: 2021-09-29 | References: | https://cve.mitre.org/cgi-bin/cvename.cgi?nameCVE-2021-41773 | https://httpd.apache.org/security/vulnerabilities_24.html若输出 “VULNERABLE”说明目标存在该漏洞可立即使用对应 POC如 curl 命令验证并利用若输出 “NOT VULNERABLE”则目标已修复或版本不受影响。6. 场景 6内网扫描在渗透测试中拿下一台内网主机后需扫描内网其他主机横向移动。Nmap 支持内网网段扫描结合 “无 Ping 扫描”“速度控制”可避免触发内网 IDS/IPS 告警。实战命令与解读# 1. 内网存活主机快速扫描不触发ICMP告警nmap-sn192.168.2.0/24 -PS22,80-T3# -T3中等速度平衡隐蔽性与效率# 2. 内网端口扫描重点扫描远程桌面、数据库端口nmap-sS-p22,3389,1433,3306192.168.2.0/24-oAinternal_scan# -oA同时保存为文本、XML、Nmap格式# 3. 内网漏洞扫描检测内网主机是否存在永恒之蓝漏洞nmap-p445--scriptsmb-vuln-ms17-010192.168.2.0/24# smb-vuln-ms17-010永恒之蓝漏洞检测脚本7. 场景 7扫描结果输出与可视化 —— 便于 “报告整理与分析”Nmap 支持多种输出格式可适配不同场景如文本报告、工具导入、可视化分析核心输出参数如下参数输出格式用途-oN普通文本格式快速查看、手动整理报告-oXXML 格式导入漏洞管理工具如 Nessus-oA全部格式Nmap 文本 XML备份所有结果避免丢失-oGGrepable 格式用 grep 筛选结果如筛选开放端口实战命令与解读# 1. 保存为文本报告便于阅读nmap-sS-p1-1000-sV192.168.1.100-oNscan_report.txt# 2. 保存为XML格式导入Metasploit或Nessusnmap-sS-p80--scriptvuln192.168.1.100-oXvuln_scan.xml# 3. 用grep筛选开放端口从Grepable格式结果中找开放80端口的主机nmap-sn192.168.1.0/24-oGlive_hosts.grepgrepUplive_hosts.grep|grep80/open# 筛选存活且80端口开放的主机四、Nmap 进阶技巧速度控制、防火墙绕过、脚本定制掌握基础用法后需结合实战场景优化扫描策略避免被目标检测或拦截。1. 速度控制平衡 “效率与隐蔽性”Nmap 的-T参数0-5 级控制扫描速度不同场景选择不同等级等级名称速度适用场景风险T0Paranoid极慢高度隐蔽避免 IDS 告警耗时极长扫描 1000 端口需数小时T3Normal中等常规扫描默认等级低风险不易触发告警T5Insane极快内部网络扫描无 IDS高风险易被防火墙拦截实战建议外网扫描用 T2-T3内网扫描用 T3-T4避免使用 T5易触发流量阈值告警。2. 防火墙 / IDS 绕过突破 “扫描拦截”若目标开启防火墙常规扫描可能无结果可通过以下技巧绕过# 1. 分片扫描将TCP包分片躲避防火墙检测nmap-sS-p80-f192.168.1.100# -f启用分片# 2. 源端口欺骗伪装成常用端口的流量如80、443nmap-sS-p22-g80192.168.1.100# -g指定源端口为80# 3. 关闭DNS反向解析避免DNS请求暴露扫描行为nmap-sS-p80-n192.168.1.100# -n不做DNS反向解析3. 自定义 NSE 脚本满足 “特殊扫描需求”若内置脚本无法满足需求如检测自定义业务漏洞可编写简单的 Lua 脚本。例如检测 “某 Web 系统登录页面是否存在验证码绕过” 的脚本save ascheck_captcha.lualocalhttprequirehttplocalshortportrequireshortportdescriptionCheck if login page has captcha bypass vulnerabilitycategories{vuln,safe}portruleshortport.http actionfunction(host,port)localresphttp.get(host,port,/login.php)ifresp.body:find(captcha0)then-- 若登录请求含captcha0无验证码returnPossible captcha bypass vulnerability: /login.php?captcha0endreturnNo captcha bypass foundend调用自定义脚本nmap-p80--script./check_captcha.lua192.168.1.100五、Nmap 实战工作流从 “扫描” 到 “漏洞验证”结合上述用法可形成一套完整的 Nmap 扫描工作流以 “Web 服务器渗透测试” 为例六、总结Nmap 的核心价值与学习建议Nmap 作为网络安全的 “入门工具”其核心价值在于“用最简单的命令获取最关键的信息”。对于零基础学习者建议按以下步骤进阶基础阶段掌握-sn主机发现、-sS端口扫描、-sV服务探测能独立完成单目标扫描进阶阶段熟练使用 NSE 脚本vuln/auth 类理解-T速度控制、-f分片等绕过技巧实战阶段结合渗透测试场景如内网横向、漏洞验证定制扫描策略并将 Nmap 与其他工具Burp Suite、Metasploit联动。最后需注意Nmap 的扫描行为需遵守法律法规仅对授权目标进行测试严禁未经允许扫描他人网络可能触犯《网络安全法》《刑法》。合法、合规地使用工具才是网络安全从业者的基本准则。网络安全学习资源分享:给大家分享一份全套的网络安全学习资料给那些想学习 网络安全的小伙伴们一点帮助对于从来没有接触过网络安全的同学我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线大家跟着这个大的方向学习准没问题。因篇幅有限仅展示部分资料朋友们如果有需要全套《网络安全入门进阶学习资源包》请看下方扫描即可前往获取