介绍
Northstar 的支持网站提供帮助页面和允许公开下载的文件。一次异常的归档文件下载表明,内部备份可能被误放在公开文件旁。你是拥有网站维护权限的值班工程师。
你将追踪该请求,将 URL 对应到 Web 服务器内的文件,把备份移至私有存储,并验证支持网站仍正常运行。只需熟悉基本终端操作;本实验会介绍 HTTP 状态码和网站根目录映射。所有数据和流量均为模拟内容。
调查可疑下载
在这一步中,你将追踪一次可疑下载,获取归档文件,并检查其中是否包含内部数据。
环境已准备就绪。Workstation 是客户端终端,当前目录为 /home/labex/project。Web Server 是已连接到网站服务器的维护终端。请按说明切换标签页。Topology 展示二者的关系以及网站当前的可访问状态。
打开 Topology,找到客户端和服务器,然后返回 Workstation。状态仅表示首页是否响应,并不说明私有文件是否已受到保护。

确认正常访问
使用 Workstation。curl 发送 HTTP 请求并输出响应。-sS 隐藏进度信息,但仍显示连接错误。127.0.0.1:8081 是 Workstation 可访问的网站地址。127.0.0.1 表示本机:在 Web Server 中,同一地址指向服务器自身,而不是 Workstation。
curl -sS http://127.0.0.1:8081/
响应中包含 Northstar Support,以及帮助页面和产品指南的链接。公开目录,也称为网站根目录,是服务器通过 URL 提供其内容的文件系统目录。
产品指南是有意公开的。先在不修改任何内容的情况下获取它:
curl -sS http://127.0.0.1:8081/downloads/product-guide.txt
第一行为 Northstar Product Guide。允许公开下载的示例文件 /downloads/public-examples.tar 也必须保持可用,尽管它的名称看起来像一个归档文件。
追踪下载
切换到 Web Server。cat 用于输出文本文件:
cat /var/log/nginx/site-access.log
Nginx 是处理这些请求的 Web 服务器。每行访问日志记录客户端地址、时间、请求、状态码、以字节为单位的响应大小,以及用户代理。GET 用于请求资源;用户代理标识发出请求的软件。200 表示服务器成功返回响应;404 表示未找到请求的资源。网络转发可能影响日志中的客户端地址,因此不能认定它对应某个具体的人。TopologyHealth/1.0 条目是环境拓扑视图自身的健康检查。
查找 /admin 等失败请求,以及随后对 /backups/support-backup.tar 的成功请求。使用 grep 缩小日志范围,它会输出匹配指定文本的行:
grep 'support-backup.tar' /var/log/nginx/site-access.log
匹配行应包含 GET /backups/support-backup.tar 和状态码 200。这表明可能发生了下载,但在断定内部数据泄露前,仍需检查响应。相关行中的稳定字段如下:
... "GET /backups/support-backup.tar HTTP/1.1" 200 10240 ... "ExternalClient/1.0"
地址和时间戳会有所不同。路径、成功响应和归档内容才是关键线索。
确认备份暴露
返回 Workstation。-o 将响应写入指定文件,而不是直接输出:
curl -sS -o /home/labex/project/support-backup.tar http://127.0.0.1:8081/backups/support-backup.tar
tar 用于读取归档文件。-t 列出归档成员,-f 指定归档文件:
tar -tf /home/labex/project/support-backup.tar
你应看到 internal-customers.txt。-x 提取成员;-O 将其内容输出到终端,不创建解压后的文件:
tar -xOf /home/labex/project/support-backup.tar internal-customers.txt
内容以 INTERNAL ONLY 开头,描述模拟客户记录。这确认成功响应中包含内部数据,而不是允许公开的归档文件。
将备份移至私有存储
在这一步中,你将从公开网站移除内部备份,同时保留其内容供维护使用。使用 Web Server 定位公开文件并完成修复。
定位公开文件
切换到 Web Server,读取网站配置:
cat /etc/nginx/conf.d/default.conf
root /srv/site; 将 /backups/support-backup.tar 映射为 /srv/site/backups/support-backup.tar。autoindex off; 禁止列出目录内容,但不会阻止通过已知文件名直接访问。没有链接指向的文件并不等于私有文件。
-l 选项显示详细列表,包括大小、所有者和访问权限。用它检查公开文件:
ls -l /srv/site/backups/support-backup.tar
输出中的路径确认该归档文件位于配置的网站根目录内。
在网站之外保留备份
私有目录 /srv/private-backups 已存在于 /srv/site 之外。你在这个目标容器内拥有维护权限。mv 移动文件并保留其内容:
mv /srv/site/backups/support-backup.tar /srv/private-backups/support-backup.tar
网站无法再通过常规的公开目录映射提供该文件。这样既保留备份供授权维护使用,也避免直接删除它。由于改变的是文件位置,而不是服务器配置,因此无需重新加载 Nginx。
在 Web Server 中确认私有副本仍可读取:
tar -xOf /srv/private-backups/support-backup.tar internal-customers.txt
你应看到相同的内部测试记录。
验证数据保密性与网站可用性
在这一步中,你将测试最终的访问边界,并确认正常的公开资源仍可使用。
返回 Workstation。-o /dev/null 丢弃响应正文,-w 输出指定的响应信息。%{http_code} 选择 HTTP 状态码;\n 添加换行:
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/backups/support-backup.tar
预期结果为 404。这条 curl 命令仍会成功退出:HTTP 错误响应与连接失败不同。停止服务器会导致课程的可用性检查失败。
用同样的方法检查正常页面和允许公开下载的文件:
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/help.html
curl -sS http://127.0.0.1:8081/downloads/product-guide.txt
curl -sS -o /home/labex/project/public-examples.tar http://127.0.0.1:8081/downloads/public-examples.tar
tar -xOf /home/labex/project/public-examples.tar example.txt
页面返回 200。指南以 Northstar Product Guide 开头,示例归档成员包含 Public support examples.。在 Topology 中,Website reachable 仅确认首页正在响应,不代表泄露已修复。最终检查会分别验证数据保密性与网站可用性。
总结
你将公开下载请求追踪到服务器上的文件,把内部数据移出网站根目录,并验证内部文件已无法通过网站下载,同时公开服务仍正常运行。



