news 2026/4/18 8:52:44

【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/4/17 19:48:21

Win11搭建智谱AI开发环境(Open-AutoGLM部署实战指南)

第一章:Win11搭建智谱AI开发环境概述在Windows 11系统上构建智谱AI(Zhipu AI)的本地开发环境,是开展大模型应用研发的重要起点。该环境融合了Python生态、深度学习框架与GPU加速能力,为开发者提供高效、稳定的AI实验平…

作者头像 李华
网站建设 2026/4/18 8:40:34

徐州耐力板厂家

徐州耐力板厂家:行业现状、优势与展望在建筑、农业、广告等众多领域,耐力板凭借其高透明度、抗冲击性强、耐候性好等优势得到广泛应用。徐州作为工业较为发达的地区,拥有不少耐力板厂家,下面我们来深入了解。徐州耐力板厂家的行业…

作者头像 李华
网站建设 2026/4/18 7:56:42

7、隐写术与应用程序密码破解:原理、方法与工具

隐写术与应用程序密码破解:原理、方法与工具 1. 隐写术概述 隐写术是指“将信息隐藏于显而易见之处”。它与密码学不同,密码学是将明文转换为密文,而隐写术不会改变所隐藏信息的形式,只是将信息放置在文件内部。在隐写术中,有两种文件类型:载体文件,用于容纳信息,可以…

作者头像 李华
网站建设 2026/4/18 8:03:05

10、Windows Azure服务配置与运行时API深度解析

Windows Azure服务配置与运行时API深度解析 1. 服务配置文件的有效使用 服务配置在运行时是可以更改的,这使得它成为放置一些无需停止服务即可更改的设置的理想位置。以下是有效使用服务配置文件的一些建议: - 存储账户信息 :将存储账户名称和凭据放在配置文件中,这样…

作者头像 李华
网站建设 2026/4/18 8:48:33

为什么90%的人在Win11部署Open-AutoGLM时失败?真相在这里

第一章:为什么90%的人在Win11部署Open-AutoGLM时失败?真相在这里许多开发者在尝试于 Windows 11 系统中部署 Open-AutoGLM 时遭遇失败,核心原因往往并非模型本身,而是环境配置与系统兼容性被严重低估。以下几点是常见陷阱及其解决…

作者头像 李华
网站建设 2026/4/14 10:38:18

phoneagent Open-AutoGLM实战指南(从零搭建AI自动操作引擎)

第一章:phoneagent Open-AutoGLM实战指南(从零搭建AI自动操作引擎)Open-AutoGLM 是 phoneagent 项目中的核心自动化推理引擎,专为移动端智能操作设计,能够基于自然语言指令实现对手机应用的自主控制。通过集成大语言模…

作者头像 李华