Linux nmap 命令完全指南:网络扫描与安全审计从入门到精通
一、nmap 是什么? nmap(Network Mapper)是 Linux/Unix 平台下最著名的网络发现和安全扫描工具。它通过发送原始 IP 数据包来探测网络中哪些主机在线、开放了哪些端口、运行着什么服务及操作系统版本。无论是系统管理员做资产盘点,还是安全工程师做漏洞评估,nmap 都是不可或缺的瑞士军刀。
核心能力 nmap 提供六大核心功能:
功能 说明 关键选项
主机发现 探测目标 IP 范围内哪些主机在线 -sn(Ping 扫描)
端口扫描 扫描目标主机开放的 TCP/UDP 端口 -sS(TCP SYN)、-sT(TCP Connect)
服务/版本探测 识别端口上运行的服务和应用版本 -sV
操作系统识别 通过 TCP/IP 指纹猜测目标操作系统 -O
脚本扩展 用 NSE(Nmap Scripting Engine)执行漏洞检测、服务枚举等 -sC(默认脚本)、--script
网络拓扑发现 绘制目标网络的路由路径 --traceroute
二、安装方法 Ubuntu/Debian 系列 1 2 sudo apt updatesudo apt install nmap -y
RHEL/CentOS/Fedora 1 2 sudo dnf install nmap -y sudo yum install nmap -y
源码编译(最新版本) 1 2 3 4 5 6 wget https://nmap.org/dist/nmap-7.95.tar.bz2 tar xjf nmap-7.95.tar.bz2 cd nmap-7.95./configure make -j$(nproc ) sudo make install
安装后验证版本:
三、基础用法 1. 指定扫描目标 nmap 支持多种目标指定方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 nmap 192.168.1.1 nmap 192.168.1.0/24 nmap 192.168.1.1-100 nmap example.com nmap -iL targets.txt nmap 192.168.1.0/24 --exclude 192.168.1.1,192.168.1.2
2. 主机发现(Ping 扫描) -sn 选项仅做主机发现,不扫描端口,速度极快:
1 2 nmap -sn 192.168.1.0/24
输出示例:
1 2 3 4 5 Nmap scan report for 192.168.1.1 Host is up (0.0012s latency). Nmap scan report for 192.168.1.10 Host is up (0.0023s latency). Nmap done: 256 IP addresses (5 hosts up) scanned in 3.45 seconds
3. 默认扫描 不带任何选项时,nmap 对目标执行默认扫描(-sS TCP SYN 扫描 1000 个常用端口):
四、端口扫描技术 TCP SYN 扫描(半开扫描)- -sS 最常用的扫描方式,速度快、隐蔽性强。只发送 SYN 包,不完成三次握手:
1 sudo nmap -sS 192.168.1.10
需要 root 权限,因为涉及构造原始数据包。收到 SYN/ACK 则端口开放,收到 RST 则关闭。
TCP Connect 扫描 - -sT 完成完整的三次握手,不需要 root 权限,但速度较慢且更容易被日志记录:
UDP 扫描 - -sU 扫描 UDP 端口(如 DNS 53、SNMP 161),速度较慢,建议配合版本探测:
1 sudo nmap -sU 192.168.1.10
端口范围指定 1 2 3 4 5 6 7 8 9 10 11 12 13 14 nmap -p 80,443,8080 192.168.1.10 nmap -p 1-1024 192.168.1.10 nmap -p- 192.168.1.10 nmap -p http,https,ssh 192.168.1.10 nmap --top-ports 100 192.168.1.10
扫描技术对比
扫描类型 选项 是否需要 root 速度 隐蔽性 适用场景
TCP SYN -sS 是 快 高 日常首选
TCP Connect -sT 否 中 低 无 root 权限时
UDP -sU 是 慢 高 UDP 服务检测
TCP FIN -sF 是 快 极高 绕过防火墙
TCP Null -sN 是 快 极高 绕过防火墙
TCP ACK -sA 是 中 高 防火墙规则探测
TCP Window -sW 是 中 中 检测 RST 细节差异
TCP Maimon -sM 是 中 高 特定系统探测
五、服务与版本探测 - -sV 识别端口上运行的具体服务和应用版本:
1 2 3 4 5 6 7 8 nmap -sV 192.168.1.10 nmap -sV --version-intensity 9 192.168.1.10 nmap -sV --version-light 192.168.1.10
输出示例:
1 2 3 4 5 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 80/tcp open http nginx 1.24.0 443/tcp open http nginx 1.24.0 3306/tcp open mysql MySQL 8.0.35-0ubuntu0.22.04.1
六、操作系统识别 - -O 通过 TCP/IP 协议栈指纹推测目标操作系统:
1 sudo nmap -O 192.168.1.10
输出示例:
1 2 3 4 Device type: general purpose Running: Linux 5.X OS CPE: cpe:/o:linux:linux_kernel:5 OS details: Linux 5.10 - 5.19
七、合并扫描(常用组合) 最常用的全功能扫描组合:
1 2 3 4 5 6 7 8 sudo nmap -sS -sV -sC -O --traceroute 192.168.1.10sudo nmap -T4 -F 192.168.1.10sudo nmap -sS -sV -sC -O -v 192.168.1.10
八、NSE 脚本引擎 Nmap Scripting Engine(NSE)是 nmap 最强大的扩展能力,用 Lua 语言编写,目前已包含 600+ 个脚本。
常用脚本分类
脚本类别 说明 示例脚本
auth 认证相关检测 ftp-anon.nse, ssh-brute.nse
broadcast 广播协议发现 broadcast-ping.nse, dhcp-discover.nse
brute 暴力猜解 http-brute.nse, mysql-brute.nse
default 默认脚本集(-sC) http-title.nse, ssh-hostkey.nse
discovery 服务/信息发现 dns-brute.nse, nbstat.nse
dos 拒绝服务测试 http-slowloris.nse(需谨慎)
exploit 漏洞利用 http-shellshock.nse
external 外部数据查询 whois-domain.nse, http-geolocation.nse
fuzzer 模糊测试 dns-fuzz.nse
intrusive 侵入性测试 http-sql-injection.nse
malware 恶意软件检测 http-malware-host.nse
safe 安全脚本(推荐) ssl-enum-ciphers.nse
version 版本探测增强 skypev2-version.nse
vuln 漏洞检测 ssl-heartbleed.nse
使用示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sudo nmap -sC 192.168.1.10sudo nmap --script=vuln 192.168.1.10sudo nmap --script=http-title,ssl-enum-ciphers 192.168.1.10sudo nmap --script=http-brute --script-args userdb=users.txt,passdb=pass.txt 192.168.1.10ls /usr/share/nmap/scripts/
经典安全检测脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sudo nmap -p 443 --script=ssl-heartbleed example.comsudo nmap -p 443 --script=ssl-enum-ciphers example.comsudo nmap --script=dns-zone-transfer -p 53 example.comsudo nmap -p 80 --script=http-methods --script-args http-methods.url-path=/test 192.168.1.10sudo nmap -p 445 --script=smb-vuln-* 192.168.1.10
九、输出格式 nmap 支持多种输出格式,便于保存和分析:
1 2 3 4 5 6 7 8 9 10 11 sudo nmap -sS -sV -oN scan.txt 192.168.1.10sudo nmap -sS -sV -oX scan.xml 192.168.1.10sudo nmap -sS -oG scan.gnmap 192.168.1.0/24sudo nmap -sS -oA myscan 192.168.1.10
十、实战场景 场景 1:内网资产盘点 快速发现公司内网所有在线主机及其开放服务:
1 2 3 4 5 6 7 8 sudo nmap -sn 10.0.0.0/24 -oG online.txtgrep Up online.txt | awk '{print $2}' > targets.txt sudo nmap -sS -sV -sC -T4 -iL targets.txt -oA assets-scan
场景 2:Web 服务器安全审计 1 sudo nmap -p 80,443 -sV --script=http-headers,http-title,http-methods,ssl-enum-ciphers example.com
场景 3:防火墙规则探测 用 ACK 扫描判断防火墙是否允许特定端口出口:
1 2 3 4 5 sudo nmap -sA -p 80,443,22 192.168.1.1sudo nmap -sF -sN -p 80,443 192.168.1.1
场景 4:全网漏洞快速扫描 1 2 sudo nmap --script=vuln -T4 -oA vuln-scan 10.0.1.0/24
场景 5:网速与延迟测试 1 2 3 4 5 6 sudo nmap -sn -PE -PP -PS80,443,22 -PA80,443,22 192.168.1.10sudo nmap -T4 -F 192.168.1.10 sudo nmap -T5 -F 192.168.1.10
十一、扫描速度控制 nmap 通过 -T 选项提供六种时序模板:
模板 名称 说明 适用场景
-T0 Paranoid 每次发包间隔 5 分钟 躲避 IDS
-T1 Sneaky 间隔 15 秒 很隐蔽
-T2 Polite 间隔 0.4 秒,减少带宽消耗 优雅模式
-T3 Normal 默认模式,自动并行 日常使用
-T4 Aggressive 假设网络快且可靠,大幅加速 局域网快速扫描
-T5 Insane 极限速度,可能丢包 极快局域网
进阶参数调优:
1 2 3 4 5 6 7 8 9 10 11 --min-hostgroup 64 --max-hostgroup 256 --min-parallelism 10 --max-scan-delay 100ms --max-retries 2 --host-timeout 30m --initial-rtt-timeout 100ms --max-rtt-timeout 500ms
十二、安全与法律注意事项 使用 nmap 扫描他人网络时,请在法律允许范围内操作:
1 2 3 4 5 6 7 1. 未经授权扫描他人网络在多数国家和地区属于违法行为 2. 了解当地《网络安全法》《计算机信息系统安全保护条例》等法律法规 3. Nmap.org 提供 scanme.nmap.org 作为合法的测试目标 4. 建议在自己的 VPS 或内网环境中练习 5. 使用 -sS(SYN 扫描)这样的隐蔽扫描并不能避免法律责任 6. 企业环境下需获得书面的渗透测试授权 7. 扫描结果应妥善保管,不得泄露他人网络拓扑信息
十三、常见问题排查
问题 可能原因 解决方法
扫描结果显示所有端口 filtered 防火墙丢弃了探测包 尝试 -sT(Connect 扫描)或 -Pn(跳过主机发现)
sudo 后仍报权限错误 尝试在 Docker 中跑 nmap 添加 --privileged 或 --cap-add=NET_RAW,SYS_ADMIN
UDP 扫描极慢 UDP 无连接的固有特性 配合 --host-timeout 限制单机用时,缩小端口范围
版本探测耗时过长 --version-intensity 默认 7 使用 --version-light 或 -sV 配合 -T4
扫描大子网卡死 默认并发数不够 使用 -T4 --min-hostgroup 64
IP 伪装扫描被反制 -D 诱饵扫描可能被识别 使用代理扫描 --proxies
WSL 中无法使用 SYN 扫描 WSL 缺少原始套接字支持 改用 virtualbox 完整 Linux 或使用 -sT
十四、命令速查表
场景 命令
Ping 扫描子网 nmap -sn 192.168.1.0/24
快速扫描 Top 100 端口 sudo nmap -F 192.168.1.10
全端扫描(65535 个) sudo nmap -p- 192.168.1.10
全面信息收集 sudo nmap -sS -sV -sC -O 192.168.1.10
漏洞扫描 sudo nmap --script=vuln 192.168.1.10
Web 安全检测 sudo nmap -p 80,443 --script=http-*,ssl-* example.com
版本探测 sudo nmap -sV --version-light 192.168.1.10
OS 识别 sudo nmap -O --osscan-guess 192.168.1.10
防火墙规则探测 sudo nmap -sA 192.168.1.1
诱饵扫描(隐藏源 IP) sudo nmap -D decoy1,decoy2,ME 192.168.1.10
从文件读取目标 + 全输出 sudo nmap -iL targets.txt -oA result
排除特定 IP sudo nmap 10.0.0.0/24 --exclude 10.0.0.1
十五、与其他工具配合 nmap 的 XML 输出可以配合其他工具做可视化分析:
1 2 3 4 5 6 7 8 9 10 11 sudo nmap -sS -sV -oX scan.xml 192.168.1.0/24xsltproc scan.xml -o scan.html nmdb -f scan1.xml nmdb -f scan2.xml ndiff scan1.xml scan2.xml sudo apt install zenmap
总结 nmap 是每个 Linux 运维人员和网络安全从业者必备的工具。从简单的 Ping 扫描到复杂的 NSE 脚本引擎,它的能力覆盖了网络发现、服务探测、漏洞检测的方方面面。建议在日常运维中将 nmap 纳入资产管理流程,定期对内网做资产盘点和安全审计。但要始终记住:nmap 是一把利器,请只在授权范围内使用。
本文由AI辅助生成,内容仅供参考