使用 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 上运行。

  1. 在 LabEx 虚拟机环境中打开一个终端窗口。终端是一个基于文本的界面,允许你通过输入命令与操作系统进行交互。你应该位于默认目录 /home/labex/project。要确认当前所在的目录,你可以使用以下命令:

    pwd
    

    pwd 命令代表“打印工作目录”。当你运行此命令时,它将显示你当前所在目录的路径。你应该会看到类似以下的输出:

    /home/labex/project
    
  2. 使用以下命令安装 Apache2 Web 服务器:

    sudo apt update && sudo apt install apache2 -y
    

    sudo 命令用于以管理员权限运行命令。apt update 会更新系统上的软件包信息,确保你拥有可用软件包的最新信息。apt install apache2 -y 用于安装 Apache2 Web 服务器。-y 选项会在安装过程中自动对任何提示回答“是”。在安装过程中,你会看到大量输出,这些输出显示了系统安装软件所采取的步骤。

  3. 启动 Apache2 服务:

    sudo service apache2 start
    

    安装 Apache2 Web 服务器后,你需要启动其服务。service 命令用于管理系统服务。在这种情况下,我们正在启动 Apache2 服务,以便它可以开始接受传入请求。

  4. 验证 Apache2 是否正常运行:

    sudo service apache2 status
    

    为了确保 Apache2 服务按预期运行,你可以在 service 命令中使用 status 选项。这将显示 Apache2 服务的当前状态。你应该会看到表明 Apache2 处于活动(运行)状态的输出,类似于:

    * apache2 is running
    
  5. 你还可以通过创建一个新的“Web 服务”标签来验证 Web 服务器是否可访问。点击虚拟环境顶部标签中的 + 符号,选择“Web 服务”选项,然后输入端口 80。这将尝试连接到运行在端口 80 上的 Web 服务器。如果一切设置正确,它应该会显示默认的 Apache2 欢迎页面。

现在我们的系统上已经运行了一个 Web 服务器,它已经打开了端口 80 用于通信。下一步,我们将使用 Nmap 来发现这个开放端口。

Nmap 简介及常见端口扫描操作

既然我们已经成功搭建了一个 Web 服务器,现在是时候学习如何使用 Nmap 来找出系统上哪些端口是开放的了。了解开放端口在网络安全中至关重要,因为开放端口可能是攻击者的潜在入口。通过使用 Nmap,我们可以识别这些端口并采取适当的安全措施。

什么是 Nmap?

Nmap 是 Network Mapper 的缩写,它是一款知名的免费开源工具,用于网络发现和安全审计。它在网络安全领域有广泛的应用:

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

使用 Nmap 进行常见端口扫描

Nmap 提供了多种扫描选项。对于初学者来说,快速扫描选项 (-F) 非常有用。默认情况下,Nmap 会扫描 1000 个端口,这可能会花费很长时间。-F 选项将扫描的端口数量减少到最常见的 100 个端口,使扫描速度大大加快。

让我们对本地机器进行一次快速扫描,以找出我们刚刚搭建的 Web 服务器:

  1. 打开终端。在终端中,你将输入命令与操作系统进行交互。输入以下命令并按回车键:

    nmap -F localhost
    

    让我们来分解一下这个命令:

    • nmap:这是我们正在使用的扫描工具。它是告诉系统开始网络扫描的主要命令。
    • -F:此选项启用快速扫描模式。它将扫描限制在最常见的 100 个端口,为你节省时间。
    • localhost:这是我们要扫描的目标。localhost 指的是你的本地机器,其 IP 地址为 127.0.0.1。
  2. 运行命令后,你将看到类似以下的输出:

    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。
    • 其他 96 个常见端口是关闭的。它们在输出中没有详细显示。
  3. 如果你想要更详细的信息,例如开放端口上运行的服务的版本,可以进行更详细的扫描。使用以下命令:

    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 上运行,并且还告诉了我们 Apache HTTP 服务器的版本。

理解扫描结果

扫描结果显示端口 80 是开放的,并且正在运行 HTTP 服务。这是我们所预期的,因为我们安装并启动了 Apache Web 服务器,它默认监听端口 80。在现实场景中,了解哪些端口是开放的对安全专业人员非常重要:

  1. 识别潜在的安全漏洞:开放端口上运行的不同服务可能存在已知漏洞。通过了解哪些端口是开放的以及上面运行着什么服务,安全专业人员可以检查是否存在安全风险。
  2. 确保只运行必要的服务:在开放端口上运行不必要的服务会增加攻击面。通过识别开放端口,安全专业人员可以确保只运行实际需要的服务。
  3. 验证防火墙配置是否按预期工作:防火墙用于控制网络的入站和出站流量。通过扫描开放端口,安全专业人员可以检查防火墙是否阻止了应该阻止的端口,并允许了应该开放的端口。

记录扫描结果和安全影响

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

使用 Nmap 生成报告

Nmap 可以直接以各种报告格式输出扫描结果,包括纯文本、XML、JSON 等。这比手动创建报告更高效、准确。让我们使用 Nmap 的输出选项来生成一份报告:

  1. 运行带有输出选项的 Nmap 扫描:
nmap -F -sV localhost -oN /home/labex/project/nmap_report.txt

在这个命令中:

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

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

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

更多报告格式选项

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

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

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

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

理解扫描结果的安全影响

从扫描报告中可以看到,端口 80/tcp 是开放的,并且运行着一个 HTTP 服务(Apache 网络服务器)。这有几个重要的安全影响:

  1. 潜在的攻击入口:开放端口就像建筑物的门。每个开放端口都可能成为攻击者进入你系统的途径。
  2. 服务漏洞风险:开放端口上运行的服务可能存在安全漏洞,攻击者可以利用这些漏洞。
  3. 需要监控的通信通道:开放端口用于通信,你需要监控这些端口上的活动,以检测任何异常行为。

为确保端口安全,你应该遵循以下最佳实践:

  • 只保持必要的端口开放:不必要的开放端口会增加系统的攻击面。
  • 定期更新使用这些端口的服务:更新通常包含修复漏洞的安全补丁。
  • 实施防火墙规则以限制访问:防火墙可以帮助控制谁可以通过特定端口访问你的系统。
  • 监控端口活动以发现异常模式:通过监控活动,你可以及时检测并响应潜在威胁。

实验清理

现在你已经完成了扫描练习,是时候停止 Apache 网络服务器了。在不需要时让服务继续运行可能会带来安全风险,因此正确的清理很重要。

  1. 停止 Apache 服务:
sudo service apache2 stop
  1. 验证服务是否已停止:
sudo service apache2 status

你应该会看到表明 Apache2 未运行的输出,例如:

* apache2 is not running
  1. 确认端口 80 已关闭:
nmap -F localhost

输出应显示端口 80 已关闭或未在开放端口列表中列出。在实际场景中,这个清理过程对于确保服务在不需要时不会继续运行至关重要,因为这可能会带来安全风险。

总结

在本次实验中,你学习了使用 Nmap 进行网络端口扫描的基础知识,Nmap 是网络安全领域一款强大的开源工具。你通过实践,掌握了理解网络端口、搭建具有开放端口的 Web 服务器、使用 Nmap 进行常见端口扫描、解读扫描结果、在安全报告中记录发现以及正确关闭服务等技能。

这些技能是网络安全评估的基石,对于 IT 安全、网络管理和系统管理专业人员来说至关重要。掌握端口扫描技术有助于识别网络漏洞,并保护系统免受未经授权的访问。