news 2026/7/10 8:20:08

【Linux 基础知识系列:第二百一十二篇】使用 nmap 进行端口扫描与服务探测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux 基础知识系列:第二百一十二篇】使用 nmap 进行端口扫描与服务探测

简介

在网络管理和安全领域,了解目标主机的开放端口和服务信息是至关重要的。这不仅有助于系统管理员进行日常的网络维护和故障排查,还能帮助安全专家发现潜在的安全漏洞。nmap(Network Mapper)是一款功能强大的开源网络扫描工具,它能够快速、准确地扫描目标主机的开放端口和服务信息。通过使用nmap,我们可以轻松地进行网络拓扑发现、端口扫描和服务版本探测等操作。本文将深入讲解nmap的常用扫描类型,包括 TCP 全连接扫描和 SYN 半连接扫描,并演示如何探测目标主机的开放端口与运行服务。

核心概念

端口扫描

端口扫描是一种网络技术,用于检测目标主机上开放的端口。每个端口都可能对应一个正在运行的服务,例如 HTTP 服务通常运行在端口 80 上。通过扫描这些端口,我们可以了解目标主机上哪些服务是可访问的,从而为进一步的网络分析或安全评估提供依据。

TCP 全连接扫描

TCP 全连接扫描是最基本的端口扫描方式。它通过建立完整的 TCP 三次握手过程来确定目标端口的状态。如果三次握手成功,则认为端口是开放的;如果收到 RST(Reset)包,则认为端口是关闭的。这种扫描方式的优点是简单直接,但缺点是容易被目标主机的日志记录下来,因为完整的 TCP 连接会被视为正常的网络活动。

SYN 半连接扫描

SYN 半连接扫描是一种更隐蔽的扫描方式。它只发送一个 SYN(Synchronize)包到目标端口,如果收到 SYN-ACK(Synchronize-Acknowledge)包,则认为端口是开放的;如果收到 RST 包,则认为端口是关闭的。这种扫描方式不会完成完整的 TCP 三次握手,因此在某些情况下可以避开简单的防火墙检测。

服务探测

服务探测是端口扫描的进一步操作。在确定端口开放后,nmap可以尝试识别运行在该端口上的服务类型及其版本信息。这对于评估服务的安全性非常有帮助,因为某些旧版本的服务可能存在已知的安全漏洞。

命令与示例

安装 nmap

在大多数 Linux 发行版中,nmap可以通过包管理器轻松安装。

在 Debian/Ubuntu 系统中:

sudo apt update sudo apt install nmap

在 CentOS/RHEL 系统中:

sudo yum install nmap

TCP 全连接扫描

TCP 全连接扫描使用-sT选项。以下是一个简单的示例,扫描目标主机192.168.1.1的开放端口。

nmap -sT 192.168.1.1

示例输出:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-10 10:00 CST Nmap scan report for 192.168.1.1 Host is up (0.00026s latency). Not shown: 996 closed 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 1.52 seconds

SYN 半连接扫描

SYN 半连接扫描使用-sS选项。这种方式更加隐蔽,适合在需要避免被目标主机记录的情况下使用。

nmap -sS 192.168.1.1

示例输出:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-10 10:05 CST Nmap scan report for 192.168.1.1 Host is up (0.00025s latency). Not shown: 996 closed 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 1.48 seconds

服务探测

在扫描端口的同时,nmap可以使用-sV选项进行服务探测,以获取端口上运行的服务版本信息。

nmap -sV 192.168.1.1

示例输出:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-10 10:10 CST Nmap scan report for 192.168.1.1 Host is up (0.00024s latency). Not shown: 996 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.41 ((Ubuntu)) 443/tcp open ssl/http Apache httpd 2.4.41 ((Ubuntu)) 3306/tcp open mysql MySQL 8.0.21-0ubuntu0.20.04.4 Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 3.20 seconds

扫描多个端口

如果只想扫描特定的几个端口,可以使用-p选项指定端口号。

nmap -sT -p 22,80,443 192.168.1.1

示例输出:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-10 10:15 CST Nmap scan report for 192.168.1.1 Host is up (0.00023s latency). PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 443/tcp open https Nmap done: 1 IP address (1 host up) scanned in 0.32 seconds

扫描多个主机

nmap支持扫描多个主机,可以使用 IP 地址范围或子网掩码。

nmap -sT 192.168.1.1-10

或者使用子网掩码:

nmap -sT 192.168.1.0/24

输出扫描结果

nmap支持将扫描结果输出到文件,方便后续分析。可以使用-oN(普通格式)、-oG(grepable 格式)或-oX(XML 格式)选项。

nmap -sT 192.168.1.1 -oN scan_results.txt

常见问题

如何避免扫描被目标主机检测到?

SYN 半连接扫描(-sS)是一种相对隐蔽的扫描方式,因为它不会完成完整的 TCP 三次握手。此外,可以使用--scan-delay选项增加扫描延迟,使扫描过程更加缓慢,从而降低被检测到的可能性。

nmap -sS --scan-delay 1s 192.168.1.1

如何扫描特定的服务?

如果只想扫描特定的服务,可以使用-p选项结合服务名称。例如,只扫描 HTTP 和 HTTPS 服务:

nmap -sT -p http,https 192.168.1.1

如何扫描 UDP 端口?

nmap也支持 UDP 端口扫描,使用-sU选项。

nmap -sU 192.168.1.1

如何处理扫描结果中的 “filtered” 状态?

当端口状态显示为 “filtered” 时,表示nmap无法确定端口是开放还是关闭,这通常是因为目标主机的防火墙或过滤设备阻止了扫描请求。可以尝试使用不同的扫描类型或增加扫描延迟来解决这个问题。

实践建议

使用合适的扫描类型

根据扫描目标和需求选择合适的扫描类型。如果目标主机对扫描行为较为敏感,建议使用 SYN 半连接扫描(-sS);如果需要快速扫描且不担心被记录,可以使用 TCP 全连接扫描(-sT)。

结合服务探测

在扫描端口时,建议结合服务探测(-sV)以获取更详细的服务版本信息。这有助于评估服务的安全性,特别是对于已知存在漏洞的服务版本。

定期扫描

定期对网络进行扫描可以帮助及时发现新开放的端口和服务,以及潜在的安全漏洞。可以将扫描任务加入定时任务(cron),实现自动化扫描。

# 每天凌晨 2 点执行扫描任务 0 2 * * * nmap -sT -sV 192.168.1.1 -oN /var/log/nmap_scan_results.txt

分析扫描结果

扫描完成后,仔细分析扫描结果文件。对于开放的端口和服务,检查是否有已知的安全漏洞,并采取相应的安全措施。可以使用工具如grepawk来快速提取关键信息。

grep "open" scan_results.txt

总结

本文详细介绍了如何使用nmap进行端口扫描与服务探测,包括 TCP 全连接扫描、SYN 半连接扫描以及服务探测的基本方法和应用场景。通过合理使用这些扫描技术,我们可以快速了解目标主机的网络状态,发现潜在的安全问题。在实际应用中,选择合适的扫描类型、结合服务探测以及定期进行扫描是确保网络安全的关键实践。掌握这些技能后,你将能够更有效地管理和维护网络环境,提升网络安全性。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/8 3:33:09

别再让 AI 自由发挥了!用 LangChain + Zod 强制它输出合法 JSON

用 LangChain Zod 构建类型安全的 AI 结构化输出 —— 从“一句话解释 Promise”开始大模型很聪明,但也很“自由”。 你让它解释 Promise,它可能回你一段优美的散文; 你想要一个干净的 JSON,它却在前后加上“好的!”“…

作者头像 李华
网站建设 2026/7/8 3:36:24

24、云存储队列与表服务操作全解析

云存储队列与表服务操作全解析 在云存储的应用场景中,队列和表服务是非常重要的组成部分。下面将详细介绍队列消息的操作以及 Windows Azure 表服务的相关内容。 队列消息操作 消息入队 向队列中添加消息时,通过发送如下的 HTTP POST 请求: POST /testq1/messages?ti…

作者头像 李华
网站建设 2026/7/8 2:27:42

31、逐跳行为(PHB)及其实现示例

逐跳行为(PHB)及其实现示例 在网络通信中,为了实现不同类型流量的差异化服务,逐跳行为(Per-Hop Behavior,PHB)的概念应运而生。PHB 描述了差分服务(Diffserv)节点对特定差分服务行为聚合体的外部可观察转发行为。下面将详细介绍 PHB 的相关内容。 1. PHB 基础概念与…

作者头像 李华
网站建设 2026/7/8 2:27:32

互联网大厂求职:Java面试中的技术点和业务场景解析

互联网大厂求职:Java面试中的技术点和业务场景解析 场景描述: 在某互联网大厂的面试室内,面试官正襟危坐,而一旁坐着的程序员谢飞机则显得有些紧张。这是谢飞机的第N次面试,前几次的“辉煌战绩”让他今天不敢掉以轻心。…

作者头像 李华
网站建设 2026/7/8 2:28:09

智谱Open-AutoGLM究竟有多强?:3大核心技术解密国产AutoML新范式

第一章:智谱 Open-AutoGLM沉思在大模型与自动化机器学习交汇的前沿,智谱推出的 Open-AutoGLM 引发了广泛的技术关注。它并非传统意义上的 AutoML 工具,而是尝试将自然语言理解能力与自动化建模流程深度融合,实现以“对话”驱动机器…

作者头像 李华
网站建设 2026/7/8 2:27:03

(AutoGLM 2.0 vs 传统建模):性能对比实测,结果令人震惊

第一章:AutoGLM 2.0 vs 传统建模:性能对比实测,结果令人震惊在真实业务场景中对 AutoGLM 2.0 与传统机器学习建模流程进行端到端对比测试,结果显示其效率与精度均实现跨越式提升。本次测试基于金融风控数据集,涵盖特征…

作者头像 李华