服务公告

服务公告 > 综合新闻 > Nmap:安全审计

Nmap:安全审计

发布时间:2026-04-23 11:02

一、前言

搞过渗透测试或安全评估的人都知道,最烦的是拿到一台新服务器根本不知道从哪下手快速摸清它的"家底"。这教程直接给你实战套路,用nmap把目标机器的端口、服务、漏洞全部扒出来,10分钟搞清楚一台服务器的安全状况。

二、操作步骤

第1步:安装nmap(多发行版)

先确认系统里有没有nmap,没有就装上。

CentOS/RHEL:

yum install -y nmap Loaded plugins: fastestmirror Setting up Install Process Package nmap-6.40-19.el7.x86_64 already installed and latest version Nothing to do

Ubuntu/Debian:

apt-get install -y nmap Reading package lists... Done Building dependency tree Done nmap is already the newest version (7.91-1).

查看版本:

nmap --version Nmap version 7.91 ( https://nmap.org ) Platform: x86_64-redhat-linux-gnu Compiled with: openssl 1.0.2k liblua 5.3.3 nmap-libpcre 7.8

第2步:主机发现

内网渗透或者快速定位存活主机时,先扫一遍哪些机器在线。

nmap -sn -PS22,80,443,3389 192.168.1.0/24 Starting Nmap 7.91 ( https://nmap.org ) Nmap scan report for 192.168.1.1 Host is up (0.0038s latency). PORT STATE SERVICE 22/tcp filtered ssh 3389/tcp filtered ms-wbt-server Nmap scan report for 192.168.1.10 Host is up (0.0012s latency). PORT STATE SERVICE 22/tcp open ssh Nmap scan report for 192.168.1.20 Host is up (0.0021s latency). PORT STATE SERVICE 80/tcp open http 443/tcp open https Nmap scan report for 192.168.1.100 Host is up (0.0008s latency). All 100 scanned ports on 192.168.1.100 are in ignored states. Nmap done: 256 IP addresses (4 hosts up) scanned in 12.34 seconds

看到没:192.168.1.1有防火墙挡着,.10只开22,.20开了web服务,.100端口全被过滤。

第3步:基础端口扫描

拿到目标IP后,先快速扫一遍常见端口,看看暴露了哪些服务。

nmap -T4 -F 192.168.1.20 Starting Nmap 7.91 ( https://nmap.org ) Nmap scan report for 192.168.1.20 Host is up (0.0015s latency). Not shown: 96 filtered ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 443/tcp open https 3306/tcp open mysql Nmap done: 1 IP address (1 host up) scanned in 5.21 seconds

好家伙,3306直接对外开放了,这数据库端口暴露在外网是几个意思?

第4步:服务版本检测

端口只是表面,关键是这些服务到底是什么版本,有哪些已知漏洞。

nmap -sV --version-intensity 5 192.168.1.20 Starting Nmap 7.91 ( https://nmap.org ) Nmap scan report for 192.168.1.20 Host is up (0.0018s latency). PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.4 (protocol 2.0) 80/tcp open http Apache httpd 2.4.6 ((CentOS) OpenSSL/1.0.2k-fips) 443/tcp open ssl Apache httpd 2.4.6 ((CentOS) OpenSSL/1.0.2k-fips) 3306/tcp open mysql MySQL 5.7.23 Service detection performed. 5 services on 1 host.

OpenSSH 7.4要查一下有没有CVE,Apache 2.4.6加OpenSSL 1.0.2k-fips这组合老得很。

第5步:操作系统指纹识别

确认服务器跑的是什么系统,版本对不对。

nmap -O 192.168.1.20 Starting Nmap 7.91 ( https://nmap.org ) Running: Linux 3.10-4.2.x (CentOS 7.x) OS CPE: cpe:/o:linux:linux_kernel:3.10 OS details: Linux 3.10-4.2.x (CentOS 7.x) Network Distance: 1 hop TCP/IP fingerprint: OS:SCAN(V=7.91%E=4%D=1/12%OT=22%CT=1%CU=40834%PV=Y%DS=1%DC=D%G=Y%M=ACD03C %TM=65ABC123%P=x86_64-redhat-linux-gnu)SEQ(SP=AA%GCD=1%ISR=BB%TI=Z%CI=Z%II=I %TS=8)OPS(O1=M5B4ST11NW7%O2=M5B4ST11NW7%O3=M5B4NNT11NW7%O4=M5B4ST11NW7%O5=M5 B4ST11NW7%O6=M5B4ST11)WIN(W1=7120%W2=7120%W3=7120%W4=7120%W5=7120%W6=7120)

确认是CentOS 7,内核3.10,物理机或者VM。

第6步:漏洞脚本扫描

nmap内置一堆脚本,专门扫已知漏洞。跑一下看看有没有可利用的问题。

nmap --script vuln 192.168.1.20 Starting Nmap 7.91 ( https://nmap.org ) Nmap scan report for 192.168.1.20 Host is up (0.0021s latency). PORT STATE SERVICE 22/tcp open ssh 80/tcp open http | http-slowloris-check: | VULNERABLE: | Slowloris DOS attack | State: VULNERABLE | IDs: CVE:2015-1635 |_ http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-1635 443/tcp open https |_ssl-ccs-injection: No vulns found |_ssl-cert: Valid | ssl-dh-params: | VULNERABLE: | Diffie-Hellman Key Exchange Weakness | State: VULNERABLE | Risk factor: Medium |_ Key size: 768 bit 3306/tcp open mysql |_mysql-empty-password: No empty password found |_mysql-info: ERROR 1045: Access denied for user 'YOUR_USERNAME'@'192.168.1.100' Nmap done: 1 IP address (1 host up) scanned in 45.67 seconds

挖到了三个问题:

  1. HTTP slowloris拒绝服务漏洞
  2. SSL DH密钥交换强度太弱(768位)
  3. MySQL不允许匿名连接(这个是好事)

第7步:防火墙检测

有时候端口被过滤了,需要确认是不是防火墙在作怪。

nmap -sA -p 22 192.168.1.20 Starting Nmap 7.91 ( https://nmap.org ) Nmap scan report for 192.168.1.20 Host is up (0.0018s latency). PORT STATE SERVICE 22/tcp unfiltered ssh nmap -sA -p 22 192.168.1.1 Starting Nmap 7.91 ( https://nmap.org ) Nmap scan report for 192.168.1.1 Host is up (0.0038s latency). PORT STATE SERVICE 22/tcp filtered ssh

对比结果:192.168.1.20的22端口unfiltered说明防火墙没拦截,192.168.1.1的22被filtered说明有防火墙或者ACL在挡着。

第8步:综合输出报告

把扫描结果导出成文件,方便后续分析或者写报告。

nmap -A -oX /tmp/scan_report.xml -oN /tmp/scan_report.txt 192.168.1.20 cat /tmp/scan_report.txt # Nmap 7.91 scan initiated Tue Jan 12 03:45:00 2026 as: nmap -A -oX /tmp/scan_report.xml -oN /tmp/scan_report.txt 192.168.1.20 Starting Nmap 7.91 ( https://nmap.org ) Nmap scan report for 192.168.1.20 Host is up (0.0018s latency). PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.4 (protocol 2.0) 80/tcp open http Apache httpd 2.4.6 ((CentOS) OpenSSL/1.0.2k-fips) 443/tcp open ssl Apache httpd 2.4.6 ((CentOS) OpenSSL/1.0.2k-fips) 3306/tcp open mysql MySQL 5.7.23 OS: Linux 3.10-4.2.x (CentOS 7.x) Network Distance: 1 hop Host script results: |_http-slowloris-check: VULNERABLE |_ssl-dh-params: VULNERABLE (768 bit key) Nmap done: 1 IP address (1 host up) scanned in 52.34 seconds

三、常见问题FAQ

Q1:扫描内网机器被防火墙拦了,端口全是filtered怎么办?

A:试试半连接扫描(-sS)加上不同的源端口。防火墙如果只放行了特定端口(比如80、443),你可以用-p 80或者用--source-port指定源端口绕过。还有个邪招是用 fragmented packets(-f),把TCP包拆小,很多防火墙对碎片包放行。

Q2:扫描速度太慢,T4还是跑不动,想加速又怕被发现怎么办?

A:老手都知道,速度和安全是Trade-off。T5最快但容易触发IDS。如果内网扫描,追求速度就加--max-retries和--min-parallelism。真正要隐蔽的话,用慢速扫描配合随机延迟,自己写个脚本控制节奏比nmap的timing选项更可控。

Q3:跑漏洞脚本(--script vuln)报错"Script scanning not supported by your version of nmap",怎么回事?

A:基础版本的nmap不带脚本引擎。CentOS/RHEL上yum装的版本经常是被阉割过的。Ubuntu/Debian的apt版本稍微好一点。最佳方案是去nmap官网下载源码编译,或者用你的发行版的完整包。检查一下nse脚本目录:

ls /usr/share/nmap/scripts/ | wc -l # 正常应该有500+个脚本

Q4:扫描结果里的端口状态到底什么意思?open、filtered、closed有什么区别?

A:open是端口开着且有服务应答;closed是端口没东西在监听但网络可达;filtered是防火墙或者IDS在干扰,你根本不知道下面有没有服务。实际渗透中,filtered端口往往比closed有意思,因为说明目标在意防护。

Q5:为什么扫出来的操作系统版本不准,CentOS显示成Ubuntu?

A:指纹识别不是100%准,容器环境、网络地址转换、修改过的内核都会干扰结果。用--reason看看判断依据,结合-sV的服务版本信息一起看更靠谱。关键是对多个指标交叉验证,别迷信单一输出。

四、总结

搞完这套流程,你对目标机器的状态门清了:

  • 存活主机 + 暴露的端口
  • 服务版本 + 指纹操作系统
  • 已知漏洞 + 防火墙规则

核心要点:

  1. 先主机发现缩小范围,再针对性深度扫描
  2. -sV比单纯端口扫描价值高10倍,版本信息才能定位漏洞
  3. 漏洞脚本不是万能的,但对已知CVE很有效
  4. 防火墙检测能帮你判断哪些端口是真开了还是被拦了
  5. 导出的XML可以丢给其他工具(Metasploit、Python脚本)做二次处理

延伸阅读:

  • nmap官方脚本库:https://nmap.org/nsedoc/(每个脚本都有说明和用法)
  • CVE数据库:查扫出来的版本对应的漏洞
  • 《Nmap Network Scanning》官方手册,想深入必读