使用 Nmap 扫描常见网络端口

NmapBeginner
立即练习

简介

在本实验中,你将学习如何使用 Nmap 扫描常见网络端口。端口扫描是网络安全中的一项重要技术,可以帮助你识别目标系统上开放的端口。攻击者可能会利用这些开放端口作为入侵入口,因此,端口扫描是网络管理员和安全专业人员必备的技能。

掌握 Nmap 这一强大的开源网络扫描工具后,你可以发现网络中的活动服务、评估安全漏洞,并维护系统的完整性。

了解网络端口并安装 Web 服务器

本步骤将介绍网络端口是什么,以及它们在网络安全中的重要性。网络端口对于计算机网络中不同应用程序和服务之间的通信至关重要。端口就像系统的出入口,允许数据流入和流出系统。任何关注网络安全的人都需要理解端口这一基本概念。

什么是网络端口?

网络端口是计算机网络中用于通信的虚拟端点。你可以把它们想象成不同应用程序和服务收发数据时经过的门。端口允许同一系统上的多个应用程序和服务共享网络资源,且互不干扰。端口使用 0 到 65535 之间的数字标识,不同范围的端口用于不同用途:

  • 端口 0 - 1023:这些是为标准服务保留的知名端口。例如,HTTP(用于网页浏览)通常使用端口 80,FTP(用于文件传输)使用端口 21,SSH(用于安全远程访问)使用端口 22。
  • 端口 1024 - 49151:这些是为特定应用程序注册的端口。软件开发者可以为自己的应用程序注册特定端口号。
  • 端口 49152 - 65535:这些是动态端口或私有端口。应用程序建立临时连接时会使用这些端口。

设置用于扫描的 Web 服务器

为了练习端口扫描,先在本机上设置 Web 服务器。Web 服务器是一种使用 HTTP(超文本传输协议)向用户提供网页文件的程序。当用户在浏览器中输入网站地址时,浏览器会向 Web 服务器发送请求,服务器再返回相应的网页。Web 服务器默认使用端口 80。

在 LabEx 虚拟机环境中打开终端。终端是基于文本的界面,你可以通过输入命令与操作系统交互。当前目录应为默认目录 /home/labex/project。运行以下命令确认当前目录:

pwd

pwd 是「打印工作目录」(print working directory)的缩写。运行该命令后,终端会显示当前目录的路径。你应该会看到类似以下输出:

/home/labex/project

安装 Apache2 Web 服务器:

sudo apt update && sudo apt install apache2 -y

sudo 命令用于以管理员权限运行命令。apt update 会更新系统中的软件包信息,apt install apache2 -y 会安装 Apache2 Web 服务器。选项 -y 会在安装提示出现时自动回答「是」。

启动 Apache2 服务:

sudo service apache2 start

service 命令用于管理系统服务。这里使用它启动 Apache2,使其能够接收传入请求。

检查 Apache2 是否正常运行:

sudo service apache2 status

status 选项会显示 Apache2 服务的当前状态。你应该会看到类似以下输出:

* apache2 is running

你也可以新建一个「Web Service」标签页,检查 Web 服务器是否可以访问。点击虚拟环境顶部标签栏中的 + 符号,选择「Web Service」,然后输入端口 80。如果设置正确,页面会显示 Apache2 默认欢迎页。

现在,本机上的 Web 服务器已经运行,并开放了端口 80 用于通信。下一步将使用 Nmap 查找这个开放端口。

认识 Nmap 并扫描常见端口

本步骤将使用 Nmap 查找已配置 Web 服务器的系统上有哪些端口处于开放状态。了解开放端口对于网络安全至关重要,因为攻击者可能会利用这些端口作为入侵入口。使用 Nmap 识别开放端口后,你可以采取适当的安全措施。

什么是 Nmap?

Nmap 是 Network Mapper(网络映射器)的缩写,是一款知名的免费开源网络发现和安全审计工具。它在网络安全领域有多种用途:

  • 发现网络中的主机和服务:Nmap 可以帮助你查找网络中连接了哪些设备,以及这些设备提供了哪些服务。例如,它可以检测网络中是否有文件服务器、Web 服务器或邮件服务器。
  • 清点网络中的系统:你可以使用 Nmap 列出网络中的所有系统,包括它们的 IP 地址和运行的服务。网络管理员可以利用这份清单管理和维护网络。
  • 检查目标主机上开放的端口:端口就像计算机的门。端口开放表示有服务正在监听,并准备接受连接。Nmap 可以扫描目标主机,查找开放的端口。
  • 识别网络主机的操作系统和服务版本:了解主机运行的操作系统和服务版本,可以帮助安全专业人员判断这些系统是否存在攻击者可能利用的已知漏洞。

使用 Nmap 扫描常见端口

Nmap 提供多种扫描选项。对于初学者来说,快速扫描选项(-F)非常实用。Nmap 默认扫描 1000 个端口,可能需要较长时间。选项 -F 会将扫描范围缩小到最常见的 100 个端口,从而显著加快扫描速度。

现在对本机执行快速扫描,查找刚刚设置的 Web 服务器:

打开终端,对本机运行快速扫描:

nmap -F localhost

此命令包含三个部分:

  • nmap:启动网络扫描工具。
  • -F:启用快速扫描模式,只扫描最常见的 100 个端口。
  • localhost:将本机作为扫描目标,其 IP 地址为 127.0.0.1。

运行命令后,你会看到类似以下输出:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-XX-XX XX:XX UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).
Not shown: 96 closed ports
PORT   STATE SERVICE
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in X.XX seconds

这些输出包含以下重要信息:

  • 扫描对象是本机,IP 地址为 127.0.0.1。
  • 端口 80 处于开放状态,运行的是 HTTP 服务。这就是前面安装的 Apache Web 服务器,因为 Apache 默认监听端口 80。
  • 其他常见端口处于关闭状态,因此不会逐一列出。

若要查看更详细的信息,包括开放端口上运行的服务版本,请运行:

nmap -sV -F localhost

选项 -sV 会检测开放端口上运行的服务版本。输出会包含更多信息:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-XX-XX XX:XX UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).
Not shown: 96 closed ports
PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.X

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in X.XX seconds

此输出确认 Apache Web 服务器正在端口 80 上运行,并显示了它的版本。

理解扫描结果

扫描结果显示,端口 80 处于开放状态,运行的是 HTTP 服务。这符合预期,因为我们安装并启动了 Apache Web 服务器,而 Apache 默认监听端口 80。在实际环境中,了解哪些端口处于开放状态对安全专业人员非常重要:

  • 识别潜在的安全漏洞:开放端口上运行的不同服务可能存在已知漏洞。了解开放端口及其上运行的服务后,安全专业人员可以检查是否存在安全风险。
  • 确保只运行必要的服务:开放端口上运行不必要的服务会扩大攻击面。识别开放端口后,安全专业人员可以确认系统只运行实际需要的服务。
  • 验证防火墙配置是否符合预期:防火墙负责控制进出网络的流量。扫描开放端口有助于安全专业人员确认防火墙是否按预期放行或阻止端口。

记录扫描结果并分析安全影响

在网络安全领域,记录发现结果是重要的一环。Nmap 内置了报告功能,可以帮助我们更有效地记录扫描结果。本步骤将介绍如何生成 Nmap 报告、分析扫描结果,并讨论开放端口带来的安全影响。最后,我们会正确停止本实验中启动的服务,确保系统安全。

使用 Nmap 生成报告

Nmap 可以直接将扫描结果保存为多种报告格式,包括纯文本、XML、JSON 等。与手动编写报告相比,这种方式效率更高,也更准确。下面使用 Nmap 的输出选项生成报告:

运行带有输出选项的 Nmap 扫描:

nmap -F -sV localhost -oN /home/labex/project/nmap_report.txt

此命令中:

  • 选项 -F 执行快速扫描(只扫描最常见的 100 个端口)。
  • 选项 -sV 尝试确定开放端口上运行的服务版本。
  • -oN /home/labex/project/nmap_report.txt 将输出以纯文本格式保存到指定文件。

查看生成的报告:

cat /home/labex/project/nmap_report.txt

你会看到包含完整扫描信息的报告,包括:

  • 扫描日期和时间
  • 目标信息
  • 开放端口列表
  • 每个开放端口上运行的服务及其版本

其他报告格式选项

Nmap 支持多种适用于不同用途的输出格式:

  • -oX filename - 以 XML 格式输出,适合自动化处理
  • -oG filename - 以 Grepable 格式输出,便于使用 grep 搜索
  • -oJ filename - 以 JSON 格式输出,适用于现代应用程序
  • -oA filename - 同时以所有格式输出(Normal、XML 和 Grepable)

例如,生成 XML 格式的报告:

nmap -F -sV localhost -oX /home/labex/project/nmap_report.xml

理解扫描结果的安全影响

从扫描报告中可以看到,端口 80/tcp 处于开放状态,运行的是 HTTP 服务(Apache Web 服务器)。这会带来几项重要的安全影响:

  • 潜在的攻击入口:开放端口就像建筑物的门,每个开放端口都可能成为攻击者进入系统的入口。
  • 服务漏洞风险:开放端口上运行的服务可能存在安全缺陷,攻击者可能利用这些缺陷发起攻击。
  • 需要监控的通信通道:开放端口用于通信,因此需要监控这些端口上的活动,以便发现异常行为。

为保障端口安全,请遵循以下最佳实践:

  • 只开放必要的端口:不必要的开放端口会扩大系统的攻击面。
  • 定期更新使用这些端口的服务:更新通常包含用于修复漏洞的安全补丁。
  • 设置防火墙规则,限制访问:防火墙可以帮助控制哪些人能够通过特定端口访问系统。
  • 监控端口活动,发现异常模式:通过监控活动,你可以及时发现潜在威胁并采取应对措施。

清理实验环境

扫描练习已经完成,现在停止 Apache Web 服务器。不再需要的服务如果继续运行,可能会带来安全风险,因此应正确清理实验环境。

停止 Apache 服务:

sudo service apache2 stop

检查服务是否已停止:

sudo service apache2 status

你应该会看到 Apache2 未运行的状态提示,例如:

* apache2 is not running

确认端口 80 已关闭:

nmap -F localhost

输出中应显示端口 80 已关闭,或者开放端口列表中不再出现端口 80。在实际环境中,清理工作非常重要,可以确保不再需要的服务不会继续运行,避免带来安全风险。

总结

在本实验中,你学习了使用 Nmap 进行网络端口扫描的基础知识。Nmap 是一款功能强大的网络安全开源工具。你动手了解了网络端口、设置了开放端口的 Web 服务器、使用 Nmap 扫描常见端口、解读扫描结果、将发现结果记录到安全报告中,并正确停止了服务。

这些技能是网络安全评估的基础,对于 IT 安全、网络管理和系统管理专业人员都十分重要。掌握端口扫描有助于发现网络漏洞,并保护系统免受未经授权的访问。