当前位置: 首页 > news >正文

Linux命令-nmap(网络探测和安全审计工具)

nmap(Network Mapper)是 Linux 中最强大的网络探测和安全审计工具。它可以发现网络上的主机、扫描开放端口、检测服务版本、识别操作系统,甚至进行漏洞检测。

⚠️ 法律和道德声明

重要:仅扫描你拥有或获得明确授权的网络。未经授权的扫描可能违法。

📦 基本语法

nmap[扫描类型][选项]{目标规范}

目标规范可以是:

  • IP 地址:192.168.1.1
  • IP 范围:192.168.1.1-100
  • CIDR 表示法:192.168.1.0/24
  • 主机名:example.com
  • 从文件读取:-iL hosts.txt

🎯 常用扫描类型

扫描类型命令选项说明
TCP SYN 扫描-sS半开放扫描,最常用,不易被检测
TCP Connect 扫描-sT完全连接扫描,无需 root 权限
UDP 扫描-sUUDP 端口扫描,速度较慢
ACK 扫描-sA用于检测防火墙规则
窗口扫描-sW利用 TCP 窗口大小差异
MAIMON 扫描-sM发送 FIN/ACK 包
NULL 扫描-sN发送无标志包
FIN 扫描-sF发送 FIN 包
XMAS 扫描-sX发送 FIN/URG/PSH 包
空闲扫描-sI使用僵尸主机进行隐蔽扫描
IP 协议扫描-sO扫描 IP 协议号

🔧 常用选项

选项类别选项说明
目标指定-iL <文件>从文件读取目标列表
-iR <数量>随机选择目标
--exclude <主机>排除主机
--excludefile <文件>从文件读取排除列表
主机发现-sn仅进行主机发现,不扫描端口
-Pn跳过主机发现,假定所有主机在线
-PS/PA/PU/PY[端口]TCP SYN/ACK、UDP、SCTP 发现
-PE/PP/PMICMP echo、timestamp、netmask 请求
-PO[协议列表]IP 协议 ping
端口规范-p <端口范围>指定端口范围
-p-扫描所有端口(1-65535)
-F快速扫描(100个常用端口)
--top-ports <数量>扫描最常见的前 N 个端口
-p U:53,111,T:21-25混合 TCP/UDP 端口
服务版本-sV探测服务/版本信息
--version-intensity <0-9>版本检测强度(0-9)
--version-all尝试所有版本检测(强度9)
--version-trace显示版本检测过程
操作系统-O启用操作系统检测
--osscan-limit仅对确定的主机进行 OS 检测
--osscan-guess更积极地猜测 OS
--max-os-tries设置 OS 检测尝试次数
脚本扫描-sC使用默认脚本进行扫描
--script=<脚本>使用指定脚本
--script-args=<参数>提供脚本参数
--script-trace显示脚本执行过程
--script-updatedb更新脚本数据库
时序选项-T<0-5>时序模板(0-5,数字越大越快)
-T0(偏执)非常慢,用于 IDS 规避
-T1(鬼祟)慢速扫描,减少带宽消耗
-T2(文雅)降低速度,减少干扰
-T3(正常)默认速度
-T4(激进)快速扫描,可能丢失信息
-T5(疯狂)极快,可能被检测
输出格式-oN <文件>标准输出到文件
-oX <文件>XML 格式输出
-oS <文件>Script kiddie 格式输出
-oG <文件>Grepable 格式输出
-oA <基本名>所有格式输出(.nmap, .xml, .gnmap)
其他选项-v/-vv增加详细程度
-d/-dd增加调试级别
--reason显示端口状态原因
--open仅显示开放端口
--packet-trace显示发送/接收的所有包
--iflist显示主机接口和路由
-A启用 OS 检测、版本检测、脚本扫描、路由追踪

💡 核心用法示例

1. 基本主机发现
# 发现本地网络中的活动主机(不扫描端口)nmap-sn192.168.1.0/24# 发现特定 IP 范围的主机nmap-sn192.168.1.1-100# 从文件读取目标列表进行发现nmap-sn-iLhosts.txt# 使用多种发现技术nmap-sn-PE-PS22,80,443192.168.1.0/24
2. 端口扫描
# 快速扫描(100个常用端口)nmap-F192.168.1.1# 扫描特定端口nmap-p22,80,443192.168.1.1# 扫描端口范围nmap-p1-1000192.168.1.1# 扫描所有端口(1-65535)nmap -p-192.168.1.1# 扫描最常见的 1000 个端口nmap --top-ports1000192.168.1.1# 混合 TCP/UDP 扫描nmap-pU:53,67,T:21-25,80,443192.168.1.1
3. 服务版本检测
# 检测服务版本nmap-sV192.168.1.1# 高强度版本检测nmap-sV--version-intensity9192.168.1.1# 快速版本检测nmap-sV--version-light192.168.1.1# 显示版本检测过程nmap-sV--version-trace192.168.1.1
4. 操作系统检测
# 操作系统检测nmap-O192.168.1.1# 操作系统检测(更积极猜测)nmap-O--osscan-guess192.168.1.1# 仅对确定的主机进行 OS 检测nmap-O--osscan-limit192.168.1.1
5. 脚本扫描
# 使用默认脚本扫描nmap-sC192.168.1.1# 使用特定脚本nmap--script=http-title192.168.1.1# 使用多个脚本nmap--script=http-title,ssl-cert192.168.1.1# 使用脚本类别nmap--script=vuln192.168.1.1# 带参数的脚本扫描nmap--script=smb-enum-shares --script-args=smbuser=admin,smbpass=password192.168.1.1
6. 综合扫描
# 全面扫描(OS检测、版本检测、脚本扫描)nmap-A192.168.1.1# 全面扫描 + 路由追踪nmap-A--traceroute192.168.1.1# 全面扫描 + 所有端口nmap-A-p-192.168.1.1

🔍 输出解读示例

nmap-sS-sV-O192.168.1.1

典型输出:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-01-01 12:00 CST Nmap scan report for 192.168.1.1 Host is up (0.0020s latency). Not shown: 995 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) 80/tcp open http nginx 1.14.2 443/tcp open ssl/http nginx 1.14.2 3306/tcp open mysql MySQL 5.5.60 8080/tcp open http-proxy Squid http proxy 3.5.27 MAC Address: 00:11:22:33:44:55 (Vendor Name) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.2 - 4.9 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel OS detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 12.34 seconds

🔧 实用场景示例

场景 1:网络资产发现
#!/bin/bash# 网络资产发现脚本NETWORK="192.168.1.0/24"OUTPUT_FILE="network_inventory_$(date+%Y%m%d_%H%M%S).txt"echo"=== 网络资产发现扫描 ==="echo"网络:$NETWORK"echo"开始时间:$(date)"echo"输出文件:$OUTPUT_FILE"echo""# 1. 主机发现echo"1. 主机发现..."nmap-sn"$NETWORK"-oG"hosts_scan.gnmap"# 提取活动主机IPgrep"Status: Up"hosts_scan.gnmap|cut-d' '-f2>active_hosts.txtHOST_COUNT=$(wc-l<active_hosts.txt)echo"发现$HOST_COUNT个活动主机"# 2. 端口扫描(快速)echo-e"\n2. 快速端口扫描..."nmap-F-iLactive_hosts.txt-oG"ports_scan.gnmap"# 3. 详细扫描(对开放端口的主机)echo-e"\n3. 详细服务扫描..."whileread-rhost;doecho"扫描主机:$host"nmap-sV-O--script=banner"$host">>"$OUTPUT_FILE"echo"---">>"$OUTPUT_FILE"done<active_hosts.txt# 4. 生成报告echo-e"\n4. 生成摘要报告..."echo"=== 网络资产摘要 ===">"summary_$(date+%Y%m%d).txt"echo"扫描时间:$(date)">>"summary_$(date+%Y%m%d).txt"echo"网络范围:$NETWORK">>"summary_$(date+%Y%m%d).txt"echo"活动主机数:$HOST_COUNT">>"summary_$(date+%Y%m%d).txt"echo"">>"summary_$(date+%Y%m%d).txt"# 按服务统计echo"开放端口统计:">>"summary_$(date+%Y%m%d).txt"grep-E"^[0-9]+/tcp.*open""$OUTPUT_FILE"|\awk'{print $3}'|sort|uniq-c|sort-rn>>"summary_$(date+%Y%m%d).txt"echo-e"\n扫描完成!"echo"详细报告:$OUTPUT_FILE"echo"摘要报告: summary_$(date+%Y%m%d).txt"# 清理临时文件rm-fhosts_scan.gnmap ports_scan.gnmap active_hosts.txt
场景 2:安全审计扫描
#!/bin/bash# 安全审计扫描脚本TARGET="$1"OUTPUT_DIR="security_audit_$(date+%Y%m%d_%H%M%S)"if[-z"$TARGET"];thenecho"用法:$0<目标IP/范围>"exit1fimkdir-p"$OUTPUT_DIR"cd"$OUTPUT_DIR"||exitecho"=== 安全审计扫描 ==="echo"目标:$TARGET"echo"开始时间:$(date)"echo"输出目录:$OUTPUT_DIR"echo""# 1. 全面扫描echo"1. 执行全面扫描..."nmap-A-T4-p-"$TARGET"-oA"full_scan"# 2. 漏洞扫描echo-e"\n2. 执行漏洞扫描..."nmap--script=vuln"$TARGET"-oN"vuln_scan.txt"# 3. Web 应用扫描echo-e"\n3. 执行 Web 应用扫描..."nmap--script=http-*"$TARGET"-oN"web_scan.txt"# 4. 数据库扫描echo-e"\n4. 执行数据库扫描..."nmap--script=mysql-*,postgresql-*"$TARGET"-oN"db_scan.txt"# 5. SSH 安全扫描echo-e"\n5. 执行 SSH 安全扫描..."nmap--script=ssh-*"$TARGET"-oN"ssh_scan.txt"# 6. 防火墙检测echo-e"\n6. 执行防火墙检测..."nmap-sA"$TARGET"-oN"firewall_scan.txt"# 7. 生成报告echo-e"\n7. 生成综合报告..."cat>"security_report.md"<<EOF # 安全审计报告 ## 基本信息 - 目标:$TARGET- 扫描时间:$(date)- 扫描工具: Nmap$(nmap--version|head-1)## 扫描结果摘要 ### 开放端口 \`\`\`$(grep-E"^[0-9]+/tcp.*open"full_scan.nmap|head-20)\`\`\`### 发现的服务 \`\`\`$(grep-E"^\|_[0-9]+/tcp"full_scan.nmap|head-20)\`\`\`### 操作系统信息 \`\`\`$(grep-A5"OS details"full_scan.nmap)\`\`\`### 潜在漏洞 \`\`\`$(grep-E"(VULNERABLE|CVE)"vuln_scan.txt|head-10)\`\`\`## 建议 1. 关闭不必要的端口 2. 更新发现的服务到最新版本 3. 检查并修复发现的漏洞 EOFecho-e"\n扫描完成!"echo"报告文件:$OUTPUT_DIR/security_report.md"echo"原始数据文件在:$OUTPUT_DIR/"
场景 3:网络监控
#!/bin/bash# 网络监控脚本TARGETS_FILE="monitor_targets.txt"LOG_DIR="monitor_logs"INTERVAL=300# 5分钟mkdir-p"$LOG_DIR"echo"=== 网络监控开始 ==="echo"监控目标:$(cat"$TARGETS_FILE"|wc-l)个主机"echo"检查间隔:$INTERVAL秒"echo"日志目录:$LOG_DIR"echo"按 Ctrl+C 停止"echo""whiletrue;doTIMESTAMP=$(date+%Y%m%d_%H%M%S)LOG_FILE="$LOG_DIR/scan_$TIMESTAMP.txt"echo"[$(date'+%Y-%m-%d %H:%M:%S')] 开始扫描..."# 执行快速扫描nmap-T4-F-iL"$TARGETS_FILE"-oN"$LOG_FILE">/dev/null2>&1# 检查变化if[-f"$LOG_DIR/last_scan.txt"];thenCHANGES=$(diff"$LOG_DIR/last_scan.txt""$LOG_FILE"|grep-E"^[<>]"|head-5)if[-n"$CHANGES"];thenecho"检测到变化:"echo"$CHANGES"# 发送警报(示例:记录到文件)echo"[$(date'+%Y-%m-%d %H:%M:%S')] 网络变化检测">>"$LOG_DIR/alerts.log"echo"$CHANGES">>"$LOG_DIR/alerts.log"echo"---">>"$LOG_DIR/alerts.log"fifi# 保存本次扫描结果cp"$LOG_FILE""$LOG_DIR/last_scan.txt"# 统计信息UP_HOSTS=$(grep-c"Status: Up""$LOG_FILE")OPEN_PORTS=$(grep-c"open""$LOG_FILE")echo"[$(date'+%Y-%m-%d %H:%M:%S')] 扫描完成 - 活动主机:$UP_HOSTS, 开放端口:$OPEN_PORTS"# 等待下一次扫描sleep"$INTERVAL"done

⚙️ Nmap 脚本引擎(NSE)

Nmap 脚本引擎提供了强大的扩展功能:

常用脚本类别
# 查看所有脚本类别ls/usr/share/nmap/scripts/|xargs-I{}basename{}.nse|sort-u# 常用脚本示例nmap--script=auth192.168.1.1# 身份认证检查nmap--script=brute192.168.1.1# 暴力破解nmap--script=default192.168.1.1# 默认脚本nmap--script=vuln192.168.1.1# 漏洞检测nmap--script=safe192.168.1.1# 安全脚本nmap--script=intrusive192.168.1.1# 侵入式脚本nmap--script=discovery192.168.1.1# 发现脚本nmap--script=dos192.168.1.1# 拒绝服务检测nmap--script=exploit192.168.1.1# 漏洞利用nmap--script=external192.168.1.1# 外部脚本
自定义脚本扫描
# 扫描特定服务nmap--script=ftp-*192.168.1.1 nmap--script=http-*192.168.1.1 nmap--script=smb-*192.168.1.1 nmap--script=ssh-*192.168.1.1 nmap--script=ssl-*192.168.1.1# 使用多个脚本nmap--script=http-title,http-headers,http-methods192.168.1.1# 带参数的脚本nmap--script=http-brute --script-argsuserdb=users.txt,passdb=passwords.txt192.168.1.1

⚠️ 重要注意事项

  1. 法律合规:仅扫描你有权扫描的网络。
  2. 扫描速度:避免过快的扫描(使用-T选项控制)。
  3. 隐蔽性:某些扫描类型可能被入侵检测系统发现。
  4. 资源消耗:全面扫描可能消耗大量网络和系统资源。
  5. 准确性:防火墙、IDS 可能影响扫描结果准确性。
  6. 版本更新:定期更新 nmap 和脚本数据库。

🔄 相关工具

工具用途说明
masscan高速端口扫描比 nmap 更快,但功能较少
zmap互联网范围扫描专为快速互联网扫描设计
netdiscoverARP 发现工具局域网主机发现
hping3数据包构造工具高级网络测试
nc(netcat)网络瑞士军刀端口测试和连接
tcpdump网络抓包工具流量分析

🎯 最佳实践

  1. 分阶段扫描:先主机发现,再端口扫描,最后服务检测。
  2. 保存结果:使用-oA保存所有格式的结果。
  3. 使用脚本:合理使用 NSE 脚本增强扫描能力。
  4. 定时扫描:定期扫描监控网络变化。
  5. 结果分析:结合其他工具分析 nmap 结果。

nmap是网络管理员、安全专家和渗透测试人员的必备工具。掌握其用法可以帮助你更好地了解网络状况、发现安全漏洞和监控网络变化。

http://www.jsqmd.com/news/690057/

相关文章:

  • 1.7 万星标|港大团队开源的“万能 RAG“:PDF、图片、视频都能喂给 AI 问答
  • 别再只会用GPIO_SetBits了!深入STM32的BSRR寄存器,让你的IO控制更高效
  • 2026广州仓库搬迁哪家靠谱:广州家庭搬家、广州市搬家、广州市搬屋、广州搬家打包、广州搬家收纳、广州搬屋、广州日式搬家选择指南 - 优质品牌商家
  • 2026届学术党必备的降重复率神器解析与推荐
  • 2026Q2白及种苗技术解析:专业厂家的核心竞争力 - 优质品牌商家
  • ASR语音识别模块:免编程控制设备,低成本打造智能家电联动
  • Harness 中的请求染色与动态采样率调整
  • 总拥有成本:工业数据系统真正昂贵的,不只是软件
  • NVIDIA Blackwell架构突破LLM推理性能极限
  • 【紧急预警】Docker 27升级后Volume无法resize?92%团队忽略的daemon.json关键配置项(含v27.0.0–v27.2.1全版本兼容矩阵)
  • Qt——文本编辑器中的数据存取
  • 删除有序数组中的重复项 II
  • 基于蒙特卡洛模拟与matpower的配电网风险评估软件:考虑电动汽车与新能源不确定性的电压和线...
  • 嵌入式——认识电子元器件——二极管系列
  • 依赖更新自动化:安全漏洞的自动修复与升级
  • 用 Sidecar 模式实现语言无关的 Agent Harness
  • CopyTranslator:科研翻译效率提升500%的秘密武器,3分钟告别PDF格式混乱烦恼
  • 2026届学术党必备的六大降重复率助手实际效果
  • OpenCode 故障排查手册
  • NVIDIA Mamba-Chat模型优化与应用解析
  • 从PCB布线到BIOS设置:硬件工程师实战DDR内存信号完整性分析与调试避坑指南
  • 《jEasyUI 创建树形下拉框》
  • 质数筛的程序
  • AssetRipper完整指南:三步快速提取Unity游戏资源的终极方案
  • 16亿与6亿的惊天差距:法庭上,“审计报告”为何不能代替“司法会计鉴定”?
  • 2026届最火的十大降AI率助手推荐
  • Docker 27原生加密引擎深度解析:如何在容器层硬隔离CT/MRI影像数据,避免零日泄露?
  • 案例真题详解:Redis 主从复制~终于搞懂了
  • MinGW-w64完全指南:Windows C/C++开发环境终极配置教程
  • IC后端CTS入门:为什么大佬们都爱用反相器(Inverter)而不是Buffer来建时钟树?