简介
在本次实验中,你将学习如何使用 Nmap(一款强大的网络扫描工具)来发现和分析网络上运行的服务。Nmap 是网络管理员和安全专业人员的重要工具,常用于网络发现和安全审计。
你将掌握的技能包括搭建基本的 Web 服务器、使用 Nmap 扫描和检测服务、解读扫描结果,以及有效地记录你的发现。这些知识是进行网络安全评估的基础,并且在现实场景中被广泛应用,以识别系统的潜在漏洞。
在本次实验中,你将学习如何使用 Nmap(一款强大的网络扫描工具)来发现和分析网络上运行的服务。Nmap 是网络管理员和安全专业人员的重要工具,常用于网络发现和安全审计。
你将掌握的技能包括搭建基本的 Web 服务器、使用 Nmap 扫描和检测服务、解读扫描结果,以及有效地记录你的发现。这些知识是进行网络安全评估的基础,并且在现实场景中被广泛应用,以识别系统的潜在漏洞。
在这一步中,我们将在你的本地机器上搭建一个基本的 Web 服务器。为什么要这么做呢?这个 Web 服务器将作为你后续 Nmap 扫描练习的目标。Nmap 是一款用于网络探索和安全审计的强大工具,有一个本地 Web 服务器供你扫描,将有助于你在安全且可控的环境中了解它的工作原理。
Web 服务器是在网络中起着关键作用的软件。当你在浏览器中打开一个网站时,正是 Web 服务器根据你的请求将网页内容(如 HTML 页面、图片或视频)发送到你的浏览器。在本次实验中,我们将利用 Python 的内置功能来创建一个简单的 HTTP 服务器。HTTP(超文本传输协议)是网络数据通信的基础,使用 Python 的内置服务器是快速启动并运行 Web 服务器的简便方法。
首先,你需要打开一个终端。终端是一个基于文本的界面,允许你通过输入命令与计算机的操作系统进行交互。打开终端后,你要导航到项目目录。在终端中导航意味着在计算机的文件系统中移动。使用以下命令进入项目目录:
cd /home/labex/project
现在,我们要为你的 Web 服务器内容创建一个新目录。目录就像你计算机上的文件夹,可用于存储文件。我们使用 mkdir
命令来创建新目录。这里 -p
标志很重要,它确保如果父目录(即包含你要创建的目录的目录)不存在,会为你创建这些父目录。运行以下命令:
mkdir -p services
创建目录后,我们需要进入该目录。就像你在桌面上打开一个文件夹一样,我们使用 cd
命令进入新创建的目录:
cd services
接下来,我们要创建一个简单的 HTML 文件。HTML(超文本标记语言)是创建网页的标准语言。这个文件将由你的 Web 服务器提供服务。以下命令创建一个名为 index.html
的文件,并将文本 "Welcome to the mini fortress" 放入其中:
echo "Welcome to the mini fortress" > index.html
最后,我们将在端口 8000 上启动一个 Python HTTP 服务器。端口就像你计算机上的一扇门,网络流量可以通过它进出。端口 8000 是测试 Web 服务器常用的端口。以下命令使用 Python 的内置 HTTP 服务器模块来启动 Web 服务器:
python3 -m http.server 8000
运行此命令后,你应该会看到类似以下的输出:
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
这意味着你的 Web 服务器已启动并运行,随时可以处理请求。
为了确保你的 Web 服务器正常运行,我们需要打开一个新的终端窗口。保持第一个终端窗口运行,因为它当前被 Web 服务器进程占用。如果你关闭它,Web 服务器将停止运行。
打开一个新的终端窗口。
现在,我们将使用 curl
命令来访问你的 Web 服务器。curl
是一个命令行工具,允许你向服务器传输数据或从服务器接收数据。运行以下命令:
curl http://localhost:8000
如果一切正常,你应该会看到消息:Welcome to the mini fortress
这确认了你的 Web 服务器正在运行且可以访问。
你刚刚搭建的 Web 服务器将继续在第一个终端窗口中运行。保持此窗口打开,让服务器继续运行,以便进行后续步骤。所有后续命令都应在你刚刚打开的新终端窗口中执行。
在这一步中,我们将使用一款名为 Nmap 的强大工具来扫描并检测你在上一步中搭建的 Web 服务器服务。扫描服务是网络安全的重要组成部分,因为它能帮助我们了解网络上运行着哪些服务,以及这些服务是否可能遭受攻击。
Nmap 即网络映射器(Network Mapper),是一款免费的开源工具。它广泛用于网络发现和安全审计。Nmap 的工作原理是向网络中的目标主机发送原始 IP 数据包。根据收到的响应,它可以确定以下几个重要信息:
在开始扫描之前,我们需要确保位于项目目录中。项目目录是存储本次实验所有相关文件的地方。要导航到项目目录,我们在终端中使用 cd
命令。
cd /home/labex/project
现在,我们将对本地 Web 服务器进行 Nmap 服务扫描。本地 Web 服务器在我们自己的机器上运行,我们将使用 Nmap 来查明端口 8000 上运行的是什么服务。
sudo nmap -sV localhost -p 8000
让我们分解这个命令,了解每个部分的作用:
sudo
:用于以管理员权限运行命令。系统中的某些操作需要管理员权限,Nmap 可能需要这些权限才能进行正确的扫描。nmap
:这就是我们一直在讨论的网络映射工具,是执行扫描的主要命令。-sV
:此选项启用版本检测,帮助 Nmap 识别目标端口上运行的具体服务。localhost
:这是我们要扫描的目标,在这种情况下是我们的本地机器。-p 8000
:此选项指定我们要扫描端口 8000。端口就像计算机上的门,不同的服务使用不同的端口进行通信。运行命令后,你应该会看到类似以下的输出:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-01 12:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000094s latency).
PORT STATE SERVICE VERSION
8000/tcp open http Python/3.10 http.server
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.31 seconds
输出显示 Nmap 已检测到端口 8000 上运行着一个 HTTP 服务。具体来说,它已将该服务识别为 Python 3.10 HTTP 服务器。
为了记录扫描结果以便进一步分析,我们将把输出保存到一个文件中。这样,我们以后可以回顾结果,并查找任何潜在的安全问题。
sudo nmap -sV localhost -p 8000 > /home/labex/project/nmap_service_detection.txt
此命令执行与之前相同的 Nmap 扫描,但不是在终端上显示输出,而是将输出重定向到一个名为 nmap_service_detection.txt
的文件中。
现在,让我们查看保存文件的内容,确保结果已保存。我们使用 cat
命令在终端中显示文件的内容。
cat /home/labex/project/nmap_service_detection.txt
你看到的内容应该与之前直接运行 Nmap 命令时看到的输出相匹配。
让我们仔细查看 Nmap 扫描的输出,了解每个部分的含义:
这些信息对于安全评估至关重要。通过了解网络上暴露了哪些服务,我们可以检查它们是否存在已知的漏洞。如果这些服务没有得到妥善保护,攻击者就有可能利用它们。
在这一步中,我们将专注于记录你使用 Nmap 发现的服务信息。文档记录在安全工作领域就像一张地图。它至关重要,因为它能让你记录扫描过程中发现的所有重要细节。这份记录日后可用于分析,查看情况随时间的变化,或满足某些合规性要求。
在专业的安全评估和网络审计中,详细的文档记录起着几个关键作用:
首先,你需要确保位于项目目录中。我们将在此创建并存储文档文件。为此,使用 cd
命令,即“change directory”(更改目录)的缩写。
cd /home/labex/project
现在,我们将创建一个新文件来记录我们的发现。我们将使用 touch
命令。如果文件不存在,touch
将创建一个具有指定名称的空文件。
touch nmap_findings.txt
接下来,我们将为文档文件添加一个描述性标题。这个标题将为我们即将添加的扫描结果提供一些背景信息。我们将使用 echo
命令打印文本,并使用 >>
运算符将其追加到文件中。>>
运算符很重要,因为它将文本添加到文件末尾,而不会覆盖已有的内容。
echo "Nmap has detected the following service running on localhost, port 8000:" >> nmap_findings.txt
现在,我们将把详细的 Nmap 扫描结果添加到文档中。我们将再次运行 Nmap 扫描,并使用 >>
运算符将结果追加到文件中。
nmap -sV localhost -p 8000 >> nmap_findings.txt
最后,让我们查看完成的文档。我们将使用 cat
命令,即“concatenate”(连接)的缩写,来显示文件的内容。
cat nmap_findings.txt
你的文件现在应该包含一个标题和完整的 Nmap 扫描结果,类似于:
Nmap has detected the following service running on localhost, port 8000:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-01 12:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000094s latency).
PORT STATE SERVICE VERSION
8000/tcp open http Python/3.10 http.server
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.31 seconds
在现实场景中记录安全发现时,你应该考虑包含以下几个重要元素:
对于本次实验,我们创建了一个包含扫描结果的简单文档,但在专业环境中,文档通常会更全面。
在本次实验中,你学习了使用 Nmap 进行网络服务发现和文档记录的重要技能。这些技能是全球专业人员进行网络安全评估实践的基础。
关键要点包括搭建基本的 Web 服务器、使用 Nmap 检测正在运行的服务、解读扫描结果以及记录发现。这些技能适用于现实场景,如网络资产盘点、安全评估、系统管理和合规性验证。随着你在网络和安全领域的不断进步,Nmap 将成为一个非常有价值的工具。你可以考虑探索 Nmap 的高级功能,以增强你的网络发现能力。