Nmap 从入门到实战:环境搭建 + 全网通用命令 + 安全扫描案例
一、前言:Nmap—— 网络安全必备扫描神器
Nmap(Network Mapper)是开源、免费、跨平台的网络扫描与安全审计工具,被誉为网安从业者的入门必备工具。核心功能:
- 主机发现:定位局域网 / 公网存活主机
- 端口扫描:探测目标开放端口、服务
- 版本探测:识别服务版本、操作系统类型
- 漏洞扫描:配合脚本检测高危漏洞(如永恒之蓝)
- 运维审计:服务器端口巡检、内网资产梳理
无论是渗透测试、应急响应,还是服务器运维,Nmap 都是最常用的基础工具,本文带你从环境搭建到实战扫描,一站式掌握 Nmap!
二、Nmap 环境搭建(全平台教程)
Nmap 支持 Windows、Linux、macOS、Kali 等所有主流系统,搭建步骤极简,零基础可快速完成。
2.1 Windows 系统搭建 Nmap
- 官网下载:https://nmap.org/download.html
- 选择 Windows 版本,下载 exe 安装包(自带 Npcap 抓包驱动,必须安装)
- 双击安装,一路下一步,勾选安装 Npcap
- 安装完成后,打开
CMD或PowerShell,输入命令验证:
cmd
nmap --version
出现版本号即安装成功!
2.2 Linux 系统搭建 Nmap
Ubuntu/Debian/Kali
bash
# 更新软件源
sudo apt update
# 安装Nmap
sudo apt install nmap -y
# 验证安装
nmap --version
CentOS/RedHat
bash
# 安装Nmap
sudo yum install nmap -y
# 验证安装
nmap --version
2.3 Kali Linux(自带 Nmap,无需安装)
Kali 作为网安专用系统,默认预装 Nmap,直接打开终端使用即可:
bash
# 直接使用
nmap --version
:::tip📌 核心依赖:Nmap 必须依赖Npcap/WinPcap驱动实现抓包扫描,Windows 安装时务必勾选,Linux 会自动安装依赖!:::
三、Nmap 基础语法与核心参数
3.1 基础语法
bash
nmap [参数] 目标IP/域名/网段
3.2 高频核心参数(全网最实用)
| 参数 | 功能 | 实战场景 |
|---|---|---|
| -sP | 仅主机发现,不扫端口 | 快速查找局域网存活主机 |
| -p | 指定端口扫描 | 扫描指定端口(如 - p 80,443,3389) |
| -p- | 扫描全部 65535 个端口 | 全面探测开放端口 |
| -sV | 服务版本探测 | 识别端口对应服务、版本 |
| -O | 操作系统探测 | 识别目标系统类型(Windows/Linux) |
| -A | 全面扫描(端口 + 版本 + 系统 + 脚本) | 深度探测目标信息 |
| -T4 | 设置扫描速度(0-5) | 常规扫描用 - T4,稳且快 |
| --script | 调用 Nmap 脚本 | 漏洞探测、服务枚举 |
| -oN | 保存扫描结果 | 导出扫描报告 |
四、Nmap 实战使用:5 大高频场景
4.1 场景 1:主机发现(查找存活设备)
快速扫描局域网内存活主机,不探测端口,速度最快:
bash
# 扫描单个IP
nmap -sP 192.168.1.100
# 扫描整个网段
nmap -sP 192.168.1.0/24
4.2 场景 2:基础端口扫描(最常用)
扫描默认常用端口
bash
nmap 192.168.1.100
扫描指定端口
bash
# 扫描80、445、3389端口
nmap -p 80,445,3389 192.168.1.100
扫描全部端口(全面探测)
bash
nmap -p- -T4 192.168.1.100
4.3 场景 3:服务版本 + 系统探测
bash
# 深度探测:端口+版本+系统
nmap -sV -O -T4 192.168.1.100
4.4 场景 4:漏洞扫描(配合 Nmap 脚本)
Nmap 自带漏洞扫描脚本,可直接检测高危漏洞(如 MS17-010 永恒之蓝):
bash
# 扫描永恒之蓝漏洞
nmap --script smb-vuln-ms17-010 192.168.1.100
4.5 场景 5:保存扫描结果
bash
# 将结果保存为txt文件
nmap -A 192.168.1.100 -oN nmap_scan.txt
五、6 类真实 Nmap 安全案例:攻击侧 + 防御侧
Nmap 既是安全人员的 “审计工具”,也是黑客的 “探路工具”,以下是企业运维中最常见的 Nmap 扫描引发的安全事件,附防御方案直接落地。
5.1 案例 1:SSH(22 端口)扫描 + 暴力破解入侵
🔴 攻击场景:黑客先用 Nmap 扫描公网服务器:nmap -p 22 --open 103.xx.xx.0/24,筛选出开放 22 端口的服务器,再用 Hydra 批量暴力破解弱口令(如 root/123456),攻破后植挖矿木马。📌 真实后果:某云服务器被入侵后 CPU 占用 100%,业务中断 3 天,挖矿产生的电费 + 业务损失超 8 万元。
✅ 防御方案:
- Nmap 定期自查:
nmap -p 22 服务器IP,确认 22 端口仅对内网开放; - 修改 SSH 默认端口:22→10022;
- 禁用 root 远程登录,开启密钥认证;
- 防火墙配置 IP 白名单,仅允许办公 IP 访问 22 端口。:::
5.2 案例 2:MySQL(3306 端口)未授权访问扫描
🔴 攻击场景:黑客用 Nmap 扫描:nmap -p 3306 --script mysql-empty-password 192.168.0.0/24,探测空密码 / 弱口令 MySQL 服务器,直接登录后篡改 / 删除数据库。
📌 真实后果:某电商网站数据库被篡改,订单数据丢失,赔偿用户损失超 20 万元。
✅ 防御方案:
- Nmap 每周扫描内网:
nmap -p 3306 --script mysql-vuln* 内网网段,排查漏洞; - MySQL 设置 16 位强密码,禁止空密码;
- 3306 端口仅允许应用服务器 IP 访问,禁止公网映射;
- 开启 MySQL 审计日志,记录异常登录。:::
5.3 案例 3:Redis(6379 端口)未授权访问扫描
🔴 攻击场景:黑客用 Nmap 扫描:nmap -p 6379 --script redis-info 47.xx.xx.0/24,发现开放 6379 端口且无密码的 Redis 服务器,写入公钥获取服务器 root 权限。
📌 真实后果:某游戏服务器 Redis 被入侵,黑客篡改游戏道具数据,造成经济损失超 50 万元。✅ 防御方案:
- Nmap 日常巡检:
nmap -p 6379 服务器IP,关闭无用 Redis 服务; - Redis 设置密码,禁用
config等危险命令; - 以普通用户运行 Redis,禁止 root 启动;
- 6379 端口仅对内网授权 IP 开放。:::
5.4 案例 4:RDP(3389 端口)暴露 + 勒索病毒攻击
🔴 攻击场景:黑客用 Nmap 扫描:nmap -p 3389 --open 202.xx.xx.0/24,定位开放 3389 端口的 Windows 服务器,暴力破解后植入勒索病毒。
📌 真实后果:某医院服务器被加密,HIS 系统瘫痪,患者无法挂号 / 缴费,直接损失超 10 万元。✅ 防御方案:
- Nmap 公网扫描自查:
nmap -p 3389 公网IP,确认 3389 端口未暴露; - 修改 RDP 默认端口,开启网络级别身份验证;
- 安装 RDP 暴力破解防护工具,限制失败登录次数;
- 定期备份服务器数据,应对勒索攻击。:::
5.5 案例 5:内网 Nmap 扫描泄露核心资产
🔴 攻击场景:黑客入侵内网普通电脑后,用 Nmap 全网段扫描:nmap -A 192.168.1.0/24 -oN asset.txt,获取内网服务器、数据库、存储设备等核心资产信息,横向渗透至核心服务器。
📌 真实后果:某企业内网被穿透,核心研发数据泄露,项目被迫暂停,损失超 100 万元。
✅ 防御方案:
- 部署内网入侵检测系统(IDS),监控 Nmap 大规模扫描行为;
- 内网划分 VLAN,普通网段无法访问核心服务器网段;
- 禁止内网主机安装 / 运行 Nmap 等扫描工具;
- 定期检查内网主机异常网络行为。:::
5.6 案例 6:恶意 Nmap 扫描被溯源(防御侧正向案例)
🟢 防御场景:某企业防火墙监测到大量 Nmap 扫描流量(特征:全端口扫描、高频 SYN 包),通过流量溯源定位攻击 IP,结合日志发现攻击源为境外服务器,立即封禁 IP 并上报网安部门。
📌 关键动作:
- 识别 Nmap 扫描特征:异常端口探测、SYN/FIN 扫描包、脚本扫描特征;
- 防火墙开启 “端口扫描防护” 规则,拦截高频扫描;
- 溯源攻击 IP,封禁恶意网段;
- 加固暴露端口,提升服务器防护等级。
✅ 可复用技巧:用 Nmap 模拟攻击扫描自身服务器:nmap -sS -T5 服务器IP,验证防火墙是否能拦截恶意扫描。:::
六、Nmap 高频命令速查表(按场景分类)
| 场景分类 | 命令 | 核心功能 | 使用场景 |
|---|---|---|---|
| 基础主机发现 | nmap -sP 192.168.1.0/24 |
仅扫描存活主机,不扫端口 | 快速梳理内网存活设备 |
| 基础主机发现 | nmap -sn 192.168.1.1-100 |
等价于 - sP,新版 Nmap 推荐用 - sn | 避免 - sP 兼容问题 |
| 快速端口扫描 | nmap 192.168.1.100 |
扫描默认 1000 个常用端口 | 快速排查目标开放端口 |
| 指定端口扫描 | nmap -p 80,443,22,3389 192.168.1.100 |
扫描指定端口(逗号分隔) | 针对性检测高危端口 |
| 连续端口扫描 | nmap -p 1-65535 192.168.1.100 |
扫描 1-65535 全部端口 | 全面探测所有开放端口 |
| 全部端口扫描 | nmap -p- 192.168.1.100 |
等价于 - p 1-65535,简写形式 | 节省命令长度,高频使用 |
| 服务版本探测 | nmap -sV 192.168.1.100 |
识别端口对应服务 + 版本 | 排查低版本服务漏洞 |
| 系统类型探测 | nmap -O 192.168.1.100 |
识别目标操作系统(Windows/Linux) | 针对性选择攻击 / 加固方案 |
| 全面深度扫描 | nmap -A 192.168.1.100 |
端口 + 版本 + 系统 + 脚本综合扫描 | 一次性获取目标全量信息 |
| 扫描速度优化 | nmap -T4 192.168.1.100 |
设置扫描速度(0-5,T4 最常用) | 平衡扫描速度与准确性 |
| 隐蔽扫描(SYN) | nmap -sS 192.168.1.100 |
半开放扫描,减少被防火墙检测 | 规避简单的入侵检测系统 |
| UDP 端口扫描 | nmap -sU -p 53,161 192.168.1.100 |
扫描 UDP 端口(DNS/SNMP) | 排查 UDP 服务漏洞 |
| 结果导出(文本) | nmap -A 192.168.1.100 -oN scan.txt |
保存扫描结果到 txt 文件 | 留存扫描报告 / 审计溯源 |
| 结果导出(JSON) | nmap -A 192.168.1.100 -oJ scan.json |
保存为 JSON 格式,便于解析 | 自动化运维 / 数据处理 |
| 批量 IP 扫描 | nmap -iL ip列表.txt -oN result.txt |
扫描文件中的批量 IP / 网段 | 大批量资产扫描 |
命令使用技巧
- 速度优先级:
-T0(最慢,隐蔽)<-T4(常规)<-T5(最快,易被检测) - 高频组合:
nmap -T4 -sV -p- 目标IP(速度 + 版本 + 全端口,日常最常用) - 简写优化:
-p-替代-p 1-65535,-sn替代-sP(新版兼容)
七、Nmap 漏洞脚本速查表(按服务分类)
Nmap 自带数百个漏洞扫描脚本,存放在 /usr/share/nmap/scripts/(Linux/Kali),以下是企业运维中最常用的高危漏洞脚本:
| 服务类型 | 脚本名称 | 核心功能 | 扫描命令示例 |
|---|---|---|---|
| SSH(22) | ssh-brute |
SSH 暴力破解(需密码字典) | nmap --script ssh-brute -p 22 192.168.1.100 |
| SSH(22) | ssh-vuln-cve2018-15473 |
检测 SSH 权限提升漏洞 | nmap --script ssh-vuln-cve2018-15473 -p 22 目标IP |
| SMB(445) | smb-vuln-ms17-010 |
检测永恒之蓝漏洞(MS17-010) | nmap --script smb-vuln-ms17-010 -p 445 目标IP |
| SMB(445) | smb-brute |
SMB 服务暴力破解 | nmap --script smb-brute -p 445 目标IP |
| MySQL(3306) | mysql-empty-password |
检测 MySQL 空密码 | nmap --script mysql-empty-password -p 3306 目标IP |
| MySQL(3306) | mysql-vuln-cve2021-27905 |
检测 MySQL 远程代码执行漏洞 | nmap --script mysql-vuln-cve2021-27905 -p 3306 目标IP |
| Redis(6379) | redis-info |
探测 Redis 配置 / 版本信息 | nmap --script redis-info -p 6379 目标IP |
| Redis(6379) | redis-vuln-unauth |
检测 Redis 未授权访问 | nmap --script redis-vuln-unauth -p 6379 目标IP |
| RDP(3389) | rdp-vuln-ms12-020 |
检测 RDP 远程代码执行漏洞 | nmap --script rdp-vuln-ms12-020 -p 3389 目标IP |
| HTTP(80/443) | http-vuln-cve2021-41773 |
检测 Apache 路径遍历漏洞 | nmap --script http-vuln-cve2021-41773 -p 80 目标IP |
| HTTP(80/443) | http-brute |
Web 登录暴力破解 | nmap --script http-brute -p 80 目标IP |
| FTP(21) | ftp-brute |
FTP 暴力破解 | nmap --script ftp-brute -p 21 目标IP |
| FTP(21) | ftp-vuln-cve2011-2523 |
检测 FTP 缓冲区溢出漏洞 | nmap --script ftp-vuln-cve2011-2523 -p 21 目标IP |
| 通用漏洞 | vulners |
检测目标 CVE 漏洞(需联网) | nmap --script vulners -sV 目标IP |
脚本使用技巧
- 批量脚本扫描:
nmap --script "smb-vuln-*" -p 445 目标IP(扫描所有 SMB 漏洞脚本) - 脚本参数自定义:
nmap --script ssh-brute --script-args userdb=用户字典.txt,passdb=密码字典.txt -p 22 目标IP - 查看脚本说明:
nmap --script-help smb-vuln-ms17-010(了解脚本功能 / 参数)
八、速查表使用注意事项
🔴 核心提醒:
- 仅可对授权的目标使用(自有服务器 / 内网、客户授权测试);
- 禁止扫描公网未授权 IP,违反《网络安全法》《刑法》;
- 漏洞扫描脚本可能触发目标防御系统,测试前需提前沟通;
- Kali Linux 自带所有脚本,Windows 版 Nmap 需单独下载脚本库。:::
实战组合命令(直接复制)
bash
# 1. 内网资产快速梳理(存活主机+开放端口)
nmap -sn 192.168.1.0/24 -oN 内网资产.txt
# 2. 服务器高危端口+漏洞扫描
nmap -T4 -sV --script "vulners,smb-vuln-ms17-010,redis-vuln-unauth" -p 22,445,3389,6379 服务器IP -oN 漏洞扫描报告.txt
# 3. 全端口深度扫描(夜间执行,耗时较长)
nmap -T4 -sV -p- 目标IP -oN 全端口扫描.txt
九、Nmap 使用规范与法律声明
Nmap 是安全工具,但严禁用于非法扫描!
- 仅可对自己拥有、获得授权的服务器 / 网段进行扫描;
- 禁止扫描政府、企业、个人未授权设备;
- 非法扫描违反《网络安全法》《刑法》第 285 条(非法侵入计算机信息系统罪),最高可处三年有期徒刑;
- 学习请使用虚拟机靶场、本地局域网进行测试,避免触碰法律红线。
十、Nmap 学习总结
- 环境搭建:全平台支持,Windows 装 Npcap,Linux 一键安装,Kali 自带;
- 核心逻辑:主机发现→端口扫描→版本探测→漏洞审计,循序渐进;
- 实战命令:日常扫描用
-T4 -sV,全面扫描用-A -p-,漏洞扫描用--script; - 安全案例:SSH/MySQL/Redis/RDP 是高频攻击端口,需用 Nmap 定期自查 + 防火墙防护;
- 法律底线:仅扫描授权目标,非法扫描必追责。
Nmap 是网络安全的敲门砖,熟练掌握 Nmap 的 “扫描 + 防护” 逻辑,是学习渗透测试、服务器运维、内网安全的核心基础!
文末互动
觉得文章干货满满,点赞 + 收藏 + 关注,后续持续更新 Nmap 高级脚本编写、内网隐蔽扫描实战教程!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)