网络安全 01:学习路线与本地实验准备

学网络安全,可以从你熟悉的开发过程开始:一个接口为什么能被访问,某个用户为什么能读到一条数据,一段外部输入为什么会改变程序行为。每次练习都留下四样东西:预期边界、实际证据、修复方法、回归结果。

这个系列提供可重复的小实验。首轮只用本机 Docker 和虚构数据;网络服务映射到 127.0.0.1:18080。不需要准备公网服务器,也不要求先安装一整套工具发行版。

一、按什么顺序学习

顺序 笔记 这次要掌握 完成标志
01 本篇:准备环境 资产、边界、风险与验证 能启动、测试、关闭实验
02 网络与 HTTP IP、端口、DNS、HTTP、TLS 能解释一次请求和一次失败
03 Linux 权限 用户、组、文件与目录权限 能复现拒绝读取,再用最小权限恢复
04 Web 漏洞与修复 身份、对象越权、参数化查询、日志 能对比漏洞版与修复版,并说明原因
补充 WiFi 与家庭网络 无线网络、访客隔离、暴露面 画出自己网络的设备和访问边界

建议每次安排一个实验,而不是一次背完术语。先自己预测结果,再执行命令,最后对照解释。本文后的复习题不依赖付费平台。

二、先建立四个概念

资产是你要保护的东西,例如机器人日志、设备配置、账户或控制接口。威胁是可能造成损害的行为或事件。漏洞是让这种事件更容易发生的缺陷。风险还取决于缺陷是否能被触达,以及损害有多大。

例如:一台机器人把控制 API 开在局域网,接口没有鉴权。端口开放描述的是可达性;缺少鉴权是访问边界的缺陷;如果网络中的其它设备能发运动指令,才进一步形成具体风险。不能仅凭“发现开放端口”便判断已经被入侵。

三个常用目标也可以落到实际问题上:

  • 机密性:未授权的人能否读到数据?
  • 完整性:数据或指令能否被不当修改?
  • 可用性:正常使用是否会被中断?

本轮练习重点是前两项,并观察日志。涉及故障、流量或扫描的后续实验仍以自己拥有或明确获准的目标为范围。

三、准备一次性实验环境

前提:已安装并启动 Docker,能运行 docker compose version。以下命令在本仓库根目录执行;macOS 可以使用 Docker Desktop,Linux 使用 Docker Engine。Linux 权限练习在容器里完成。

./bin/site.sh security-build
./bin/site.sh security-test
./bin/site.sh security-up
curl -i http://127.0.0.1:18080/health

预期:测试显示 Ran 7 tests 和 OK;HTTP 返回 200,JSON 中 ok 为 true。第一次 build 需要下载基础镜像;镜像建好后 test 无需联网,也不会发布端口。

实验服务有两个虚构用户和两条订单。用于教学的固定 token 是 training-alice、training-bob,不是密码存储或登录系统的生产范例。实验没有主机目录挂载,文件练习只写容器的 /tmp,关闭容器后会丢弃。

# 看日志,不显示 Authorization token
./bin/site.sh security-logs

# 完成后关闭本项目的实验服务
./bin/site.sh security-down

源码与说明集中在仓库 docker/security-lab/。Docker 将容器端口映射到宿主回环地址;不要把 127.0.0.1:18080:8080 改成面向外部的绑定。回环绑定的意义及旧版 Docker 的限制见 Docker 端口发布文档。

常见启动问题

现象 排查方向
Cannot connect to Docker daemon 启动 Docker,再检查当前 context
镜像不存在 先执行 security-build
18080 已被占用 用 docker ps、macOS 的 lsof -nP -iTCP:18080 -sTCP:LISTEN 确认占用者;不要直接结束未知进程
Connection refused 检查 docker compose -f docker/security-lab/compose.yaml ps 和 security-logs
下载失败 检查镜像仓库连接;不要把没建成的镜像当成实验失败

四、每次练习用这份记录模板

实验编号 / 日期:
环境版本:Docker、Python、镜像 ID
目标范围:本机哪个容器、哪个路径
问题与预测:正常情况和异常情况应该发生什么
操作:精确命令,凭据使用占位符
证据:状态码、响应字段、时间、对应日志
根因:哪一道边界缺失,或哪一个假设错误
修复:代码/权限/配置的最小变化
回归:合法用例仍成功,越界用例已失败
清理:服务是否停止,临时文件是否删除
仍不确定的地方:

学习时尽量记录响应中与结论有关的字段,而不是堆满屏幕截图。报告中“看到 HTTP 403”是一条证据;“所有访问控制都安全”是远大于这条证据的结论。

五、后续怎样扩展

完成这四篇后,再逐项补充 TLS 与证书、会话与 Cookie、浏览器 XSS/CSRF、依赖与镜像供应链、抓包与事件响应。可以用 OWASP WSTG 作为测试主题索引,每次选择一个主题建立自己的最小实验。不要把整份测试指南一次性当作待执行脚本。

本系列当前已提供的是 HTTP、权限、对象访问与 SQL 的小实验;尚未提供完整渗透测试环境或真实事件响应演练。

六、完成清单

  • [ ] 我能区分“端口可达”“身份认证”“对象授权”。
  • [ ] 我能独立启动实验,确认七项测试通过,再正常关闭。
  • [ ] 我能用自己的话写出一条风险,而不只写漏洞名称。
  • [ ] 我已经为下一篇建立一份实验记录。

下一篇:网络安全 02:看懂一次网络与 HTTP 请求。返回网络安全分类。

知识共享许可协议