Labtainers:一个基于Docker的网络实验室框架
Labtainers:基于 Docker 的网络实验框架 ============================================== Labtainers 包含 50 多个网络实验练习和用于构建自定义实验的工具。导入单个 [VM 设备][vm-appliance] 或在 Linux 系统上安装,学生即可完成配置和管理设置,适用于当前及未来的实验练习。 * 通过 Docker 容器实现一致的实验执行环境和自动化配置 * 在性能适中的笔记本电脑上实现多组件网络拓扑 * 自动评估学生的实验活动和进度 * 个性化实验练习,防止学生共享答案 Labtainers 提供受控且一致的执行环境,学生完全在自己的计算机范围内完成实验,不受学生计算机上安装的 Linux 发行版和软件包的影响。Labtainers 可在我们的 [VM 设备][vm-appliancee] 上运行,也可在任何安装了 Docker 的 Linux 上运行。此外,Labtainers 还可作为基于云的 VM 使用,例如在 Azure 上,详见 [学生指南][student-guide]。 安装和使用请参阅 [学生指南][student-guide],学生评估请参阅 [教师指南][instructor-guide]。开发和自定义实验练习请参阅 [设计者指南][designer-guide]。 有关该框架的更多信息,请参阅 [论文][Papers]。 Labtainers 网站及下载(包括预装 Labtainers 的 VM 设备)位于 <https://nps.edu/web/c3o/labtainers>。 [vm-appliance]: https://nps.edu/web/c3o/virtual-machine-images [student-guide]: https://raw.githubusercontent.com/mfthomps/labtainers/master/docs/student/labtainer-student.pdf [instructor-guide]: https://raw.githubusercontent.com/mfthomps/labtainers/master/docs/instructor/labtainer-instructor.pdf [designer-guide]: https://raw.githubusercontent.com/mfthomps/labtainers/master/docs/labdesigner/labdesigner.pdf [Papers]: https://nps.edu/web/c3o/labtainers#papers 发行版创建时间:09/11/2026 11:33 </br> 修订版本:v1.4.4n </br> 提交:9f1012dc </br> 分支:master </br> ## 内容 [分发与使用](#distribution-and-use) [目录指南](#guide-to-directories) [支持](#support) [发行说明](#release-notes) ## 分发与使用 请参阅 [docs/license.md 文件](https://github.com/mfthomps/labtainers/blob/master/docs/license.md) 中的许可和分发信息。 ## 目录指南 * scripts/labtainers-student -- 用于运行和 测试学生实验的工作目录。你必须在该目录下才能运行 学生实验。 * scripts/labtainers-instructor -- 用于 运行和测试自动评估以及查看学生 结果的工作目录。 * labs -- 每个实验特有的文件 * setup\_scripts -- 用于安装 Labtainers 和 Docker 以及更新 Labtainers 的脚本 * docs -- labdesigner.pdf 的 latex 源文件及其他文档。 * UI -- Labtainers 实验编辑器源代码(Java)。 * headless-lite -- 用于管理 Docker Workstation 和 Labtainers 云实例(没有原生 X11 服务器的系统)的脚本。 * scripts/designer -- 用于构建新实验和管理基础 Docker 镜像的工具。 * config -- 系统级配置设置(这些不是 实验特定的配置设置)。 * distrib -- 分发支持脚本,例如用于将实验发布到 Docker hub。 * testsets -- 测试过程和预期结果。(SimLab 的每个实验的驱动程序不 分发)。 * pkg-mirrors -- 用于内部 NPS 软件包镜像的实用脚本,以减少测试和分发期间的外部 软件包拉取。 ## 支持 请使用 GitHub 问题报告,或发送电子邮件至 [email protected] 另请参阅 <https://my.nps.edu/web/c3o/support1> ## 发行说明 标准 Labtainers 发行版不包含开发 新实验所需的文件。如需这些文件,请从 labtainer/trunk/setup\_scripts 目录运行 ./update-designer.sh。 安装脚本和 update-designer.sh 脚本会设置环境变量, 因此你可能需要注销/登录,或在首次使用 Labtainers 之前 启动一个新的 bash shell。 2026 年 1 月 6 日 - 修复了因缩进导致安装脚本中引入的 bug。 2025 年 12 月 30 日 - 将 checkwork 报告格式修改为垂直显示;无头模式的视频指南;便捷路径 2025 年 10 月 15 日 - 修订 packet-introspection 实验,更新 maxmind 地理位置数据库的链接,并注明使用旧版数据库。 2025 年 4 月 24 日 - 修复 imodule,使其根据 pull request #96 正确创建缺失的目录 2024 年 11 月 22 日 - 替换了 google cloud VM,这次是因为容器内 systemd 故障。 2024 年 9 月 23 日 - 替换了 google cloud VM,其使用了错误的 Docker 版本 2024 年 9 月 10 日 - 创建 imodule 路径时的拼写错误 2024 年 7 月 26 日 - 修改 capinout,不再使用 grantpt clib 函数,该函数现在从容器中运行时似乎会崩溃。 2024 年 7 月 22 日 - 添加 Ubuntu22 的基础容器,并对框架进行更改以支持它。 2024 年 7 月 5 日 - 迁移到 Ubuntu 24 作为 VM 设备 - docker python 包使用了损坏的 python http 库,需要降级软件包。 - 使用虚拟 python 环境以避免 Ubuntu 对 python 软件包的锁定。 - 添加启动参数以允许在容器和 VM 之间共享 systemd。 - 重定向更新时损坏的 tar 工具产生的错误消息。 - Ubuntu 更新导致 msc 软件包损坏(参见 update-ubuntu.sh),针对版本 18 VM - docker-compose 命令已损坏,请使用 "docker compose" - 在无头 labtainers 中强制设置 socket 权限。 - 更新无头 Labtainers 以使用 Ubuntu 24 2023 年 11 月 27 日 - 为 ec2 机器上的 ubuntu22 添加 Google Cloud Platform 选项。 2023 年 9 月 18 日 - 之前的修复实现存在缺陷。 2023 年 8 月 8 日 - 处理 DockerHub 镜像 json 格式的变更。感谢 Kees! 2023 年 4 月 17 日 - 强制使用最新的实验版本,例如使用 iptables2 而非 iptables。修复 tab 补全以仅显示最新版本。(Issue #77) - CyberCIEGE 实验安装因 X11 竞态条件而失败。(Issue #76) - 在 CyberCIEGE readme 中注明,引导学生将收集的日志保存到 $HOME 目录。(Issue #75) - Radius 实验 checkwork 错误地报告 "radiusd not running",缺少 prestop 脚本。(Issue #74) - 当使用 MACVLAN\_EXT 选项时,Labedit 损坏了启动配置文件。(Issue #73) 2023 年 2 月 1 日 - 非默认用户的 Bash 历史记录未被保存。 2023 年 1 月 26 日 - 修改 gcloud 的 powershell 脚本,使用所选区域来限定 VM 名称。 2023 年 1 月 4 日 - 使用 systemd 的容器在 Ubuntu 22 中较新的 systemd 上失败 - 为 google cloud 脚本添加 --zone 参数,其值从 set\_defaults 脚本派生。 2022 年 12 月 21 日 - 修复 xforge 结果标准,不再期望路径名,并添加检查以查看是否发出了 POST 来编辑配置文件。并修复攻击者 http 服务器以从主目录运行。 2022 年 12 月 19 日 - 添加 strace 实验以介绍系统调用跟踪。 - 如果 /tmp/.X11-unix 目录中有多个设备,X11 DISPLAY 值不正确。 - 使用不带参数的 python/bash/sh/etc 会导致 capinout 崩溃。 2022 年 12 月 9 日 - 修改 Azure vm 创建脚本,使用来自 Azure Community Gallery 的预构建 Labtainer VM 镜像。 - 云 VM 上的终端在启动期间或右键单击终端时因未知原因崩溃。尝试 通过启动/停止终端来解决。 2022 年 12 月 5 日 - 收集工件时,包含来自非默认用户目录的已修改文件,例如他们的 bash 历史记录。 - 修改 web 评估以显示新的 "其他用户" 文件。 - 在工件中包含每个容器上 .local/bin 中的文件。旨在使这些文件可通过 web 评估供教师使用。 - 在 ACL 实验中,将 /shared\_data/bob/fun 文件包含在结果中,供教师参考。 - 捕获命令行中 "sh" 或 "bash" 的使用,并在解析给定命令时跳过,例如对 "time" 或 "sudo" 所做的那样。 - 在 tcpip 实验中,在后续实验会话期间无法 ssh 到服务器,/run/sshd 目录未被重新创建。 2022 年 11 月 16 日 - 修复 snort 实验中 Snort 手册的路径。 - 在 ossec 手册中,修复 manage\_agents 的路径 2022 年 10 月 12 日 - Google cloud 从 gnome-terminal 命令中移除后台操作符,右键单击时仍会崩溃 但在运行 newterm.sh 后似乎稳定了。 2022 年 10 月 10 日 - 修复 Google cloud newterm.sh;将该启动磁盘扩展到 30G。 2022 年 9 月 20 日 - 在实验手册中注明 TCP/IP 实验的用户 ID 和密码。 2022 年 8 月 30 日 - 从容器的 .profile 设置 DISPLAY 时使用 X11 socket 名称 2022 年 8 月 9 日 - 修复 grader 中 processValueMax 函数的名称。Issue #63 2022 年 8 月 4 日 - labedit 程序使用错误的 JDK 重新构建,导致较旧的 JRE 无法运行 labedit 2022 年 7 月 18 日 - 在 IModules 中创建基于 Ubuntu20 的容器失败。Issue #61。 2022 年 3 月 23 日 - 修复 tap 锁目录的路径;此前导致使用网络 tap 的实验失败 - 更新 plc-traffic netmon 计算机,使其具有 java 环境中新 grassmarlin 所需的 openjfx - 通过避免 chown -R 来加速实验启动,这在 docker 中非常慢。 - 再次尝试避免删除容器 /tmp 目录中的 X11 链接。 - 修复 webtrack 对访问站点的计数,并移除 live-headers 目标,该工具已不再可用。 澄清了一些实验手册步骤。 2022 年 3 月 2 日 - 添加新的 ssh-tunnel 实验(感谢 GWD!) - 修复 labedit 未能反映 new\_lab\_setup 设置的 X11 值 - 添加不参数化容器的选项 2022 年 2 月 23 日 - 在添加新容器后,labedit 损坏了 start.config - 学生 README 文件中学生指南的路径不正确;为云配置动态更改 - update-labtainer.sh 的扩展名不正确 - Msc 指南增强 - 更新 ghidra 实验以包含 Ghidra 10.1.2 版本 2022 年 2 月 15 日 - 将 Azure 云支持恢复为为每个学生进行配置。Azure 不鼓励共享资源。 2022 年 1 月 24 日 - Azure 云现在使用存储在 Azure blob 中的镜像,而不是为每个学生进行配置。 - 添加对 Google Cloud 的支持。 2022 年 1 月 19 日 - 在 Azure 云上引入 Labtainers。有关如何使用它的详细信息,请参阅学生指南。 2022 年 1 月 3 日 - 修订 setuid-env 实验以添加更好的评估;simlab 测试并避免 printenv 子进程中的 sighup。 - 修复评估目标计数指令,以排除结果标签值为 false 的情况。 - 当使用带有 debug 选项启动的 grader 运行 gradelab -a 时,不要求 labname。 - 修订 capinout(stdin/stdout 镜像)以处理命令进程子进程的孤儿化,改进文档 和错误处理。 - 添加首次运行实验时正在拉取的 docker 镜像的进度条显示。 - 向用户反馈容器初始化进度。 - pcap-lib 实验缺少自动评估所需的 notify 文件;从实验手册中移除多余步骤。 2021 年 11 月 23 日 - 在测试 VM 上禁用 ubuntu 弹出错误。 - 修复不同 DISPLAY 变量格式的处理。 2021 年 10 月 22 日 - 修订 tcpip 实验指南,注明成功的 syn-flood 攻击是不可能的。修复其自动评估并添加 SimLab 脚本。 - 将工件文件扩展名从 zip 更改为 lab,并添加前导内容以迷惑 GUI 文件管理器。学生此前会打开 zip 并提交其内容。 - 将 gradelab 的 -r 选项设为默认,添加 -c 选项用于 grader 的累积使用。 - 修改 refresh\_mirror 以引用本地发布日期,避免频繁查询 DockerHub。每次此类查询都算作一次镜像拉取, 而他们现在正试图将其货币化。 2021 年 9 月 30 日 - 更改 bufoverflow 实验指南和评分,不再期望在开启 ASLR 时成功,评估其是否运行过。 - web grader 在缺少学生结果时的错误处理。 - 运行已弃用实验时打印警告。 - 更改 formatstring 评分,移除未使用的 "\_leaked\_secret" 描述并澄清 leaked\_no\_scanf 的值。 - 同时更改 formatstring 评分,允许易受攻击的可执行文件使用任意名称。 2021 年 9 月 29 日 - Gradelab 错误处理,减少因损坏的 zip 文件导致的崩溃实例。 - 将 stdout 工件文件限制为 1MB 2021 年 9 月 17 日 - Ghidra 实验指南中的 IP 地址错误,未从源重新制作。 2021 年 9 月 14 日 - 使用 SSL 的 LDAP 和 Mariadb 示例实验。旨在作为新实验的模板。 - 处理 Mariadb 日志格式 - 添加每个容器的参数以限制 CPU 使用或将容器固定到 CPU 集。 - Labpack 创建现在可通过 GUI(makepackui)使用。 - labtainer、labpack 和 gradelab 命令的 Tab 补全。 - 使用 MPI 的新并行计算实验 ``parallel''。 2021 年 8 月 3 日 - 添加 "WAIT\_FOR" 配置选项,使容器延迟参数化,直到 另一个容器完成其参数化。 - 在结果解析中支持 Mariadb 日志格式 - 移除对 Mac 和 Windows 使用 Docker Desktop 的支持。该产品太不稳定,我们无法支持。 - 当用户使用内置 bash 命令(如 "which")时抑制 stderr 消息。 - makepack/labpack 程序的 bug 修复。 2021 年 7 月 19 日 - 添加 DNS 实验以介绍 DNS 协议和配置。 - 修订 VirtualBox 设备镜像,使其以正确的更新脚本启动。 - 将 resolv.conf nameserver 参数从 lab\_gw 配置字段中拆分出来,作为独立值。 - 如果在任何实验启动之前运行,IModule 命令会失败。 2021 年 7 月 5 日 - DISPLAY 环境变量管理中的错误破坏了 Docker Desktop 上的 GUI 应用程序。 2021 年 7 月 1 日 - 支持 Mac 软件包安装无头 Labtainers。 - routing-basics 实验自动评估因缺少 treataslocal 文件而失败 - 更正 routing-basics 实验中的拼写错误和错误地址,并修复自动评估。 - pcapanalysis 的评估失败。 2021 年 6 月 10 日 - 所有实验手册 PDF 现在都在 github 仓库中 - 将 vpnlab 和 vpnlab2 说明转换为 PDF 实验手册。 2021 年 5 月 25 日 - 为每个实验添加可搜索的关键词。用法请参见 "labtainer -h"。 - 扩展 routing-basics 实验和实验手册 - 移除 routing-basics2 实验,它现在是多余的。 - 某些容器上的 sudo 失败,因为主机名移除了下划线,导致与 hosts 文件不匹配。通过在 hosts 文件中添加一个不含下划线的容器名称条目来修复。 - 新的 Labpack 功能,用于打包实验集合,以及 makepack 工具用于创建 Labpacks。 - 使用 ubuntu20 时对 /sbin 目录进行错误检查——否则会静默致命。 - 新的 network-basics 实验 2021 年 5 月 5 日 - 引入新的 users 实验以介绍用户/组管理 - 在 centos 容器 syslogs 中抑制 Apparmor 主机消息 2021 年 4 月 28 日 - 新的 base2 镜像缺少 man 页面。使用 unminimize 在基础镜像中恢复它们。 - 引入 OSSEC 基于主机的 IDS 实验。 2021 年 4 月 13 日 - CyberCIEGE 实验失败,因为在通过 fixlocal 启动 Wine 之前未重新定位 X11 socket。 2021 年 4 月 9 日 - 新的 gdb-cpp 教程实验,用于在简单的 C++ 程序上使用 GDB。 - 浮点异常暴露了 exec\_wrap.sh 用于 stdin/stdout 镜像的使用。 2021 年 4 月 7 日 - ldap 实验在迁移到 Ubuntu 20 时失败。问题追溯到 nscd 缓存 pwd 的问题。将 ldap 迁移到 Ubuntu 20 2021 年 3 月 23 日 - 使用 RANDOM 进行参数化时未包含上限。 - 为 RANDOM 添加可选的 step 参数,例如用于确保单词边界。 - db-access 实验:将 mysql-workbench 添加到数据库计算机。 - 新的 overrun 实验,用于说明超出 c 数据结构边界的内存引用。 - 新的 printf 实验,用于介绍 printf 函数进行的内存引用。 2021 年 3 月 19 日 - gradelab 忽略 makdirs 错误,这是 Windows 在共享文件夹上 rmtree 的问题。 - gradelab 处理学生 zip 文件名中的空格。 - gradelab 处理来自 Moodle 的 zip 文件名,包括构建下载。 2021 年 3 月 12 日 - labedit UI:从基础镜像列表中移除旧的 wireshark 镜像。 - labedit UI:增大一些字体大小。 - 如果手册名称不遵循命名约定,grader web 界面无法显示实验手册。 2021 年 3 月 11 日 - labedit UI 在新的全局实验配置面板中添加 registry 设置。 2021 年 3 月 10 日 - labedit UI 修复:如果实验中有语法错误则不构建 - labedit UI "Lab running" 指示器修复以反映当前实验。 2021 年 3 月 8 日 - 弃用 HOST\_HOME\_XFER,所有实验使用 labtainer.config 文件中的目录。 - 为 start.config 添加关于 REGISTRY 和 BASE\_REGISTRY 的文档注释 2021 年 3 月 5 日 - gradelab web 界面在缺少结果时的错误处理。 - labedit 添加 precheck,msc bug 修复。 2021 年 2 月 26 日 - dmz-example 实验在某些组件上的路由和 dnsmasq 设置中存在错误。 2021 年 2 月 18 日 - UI 因无故更新文件时间而重新构建镜像 - 清理 UI 代码以移除一些冗余的数据副本。 2021 年 2 月 14 日 - 为 UI 添加本地构建选项 - 为 centos6 基础创建空的 faux\_init。 2021 年 2 月 11 日 - 修复 UI 对编辑文件的处理。修订布局并消除未使用的字段。 - 添加 ubuntu20 base2 基础配置以及 ssh2、network2 和 wireshark2 - 新的 wireshark 解决了黑屏/噪点窗口的问题。 - 将 /tmp/.X11-unix 映射到 /var/tmp 并创建链接。ubuntu20 需要(此前删除了 /tmp?)并可能修复其他问题。 2021 年 2 月 4 日 - 为结果工件添加 SIZE 选项 - 简化 wireshark-intro 评估和参数化,并添加 PDF 实验手册。 - 将参数列表值作为环境变量提供给 pregrade.sh 脚本 - 在 grader 上启用 X11 - 将 update-designer.sh 放入用户路径。 2021 年 1 月 19 日 - 更改 README 日期/修订的管理,以更新源仓库中的文件。 - 引入用于创建/编辑实验的 GUI——参见 labedit 命令。 2020 年 12 月 21 日 - 当从 VirtualBox 共享文件夹复制 zip 文件时,gradelab 函数失败。 - 更新教师指南以描述主机上学生 zip 文件的管理。 2020 年 12 月 4 日 - 将 tar 的分发过渡到 GitHub release 工件 - 消除单独的 designer tar 文件,使用 git 仓库 tarball。 - 测试 grader web 功能以分析学生实验工件 - 从完整 smoketest 中清除日志,并在 removelab 命令中删除 grader 容器。 2020 年 12 月 1 日 - iptables2 实验评估依赖于随机端口对 nmap 是 "unknown" 的。 - 使用同步目录延迟 smoketest 在实验启动之前开始。 - 开始集成 Lab designer UI 元素。 2020 年 10 月 13 日 - 用于在 Mac 和 Windows 上的 Docker Desktop 上运行的无头配置 - 无头服务器支持,用于云部署的 cloud-config 文件 - 无头配置的测试支持 - 强制 mynotify 等待启动时 rc.local 运行 - 改进 mynotify 服务将输出合并为单个时间戳的能力 - stopgrade 脚本使用 Python3 - SimLab 现在使用 docker top 而非系统 ps 2020 年 9 月 26 日 - 清理 stoplab 脚本以忽略非实验容器 - 添加 db-access 数据库访问控制实验,用于受控共享 mysql 数据库。 2020 年 9 月 17 日 - macs-hash 实验因 X11 设置而无法运行 Leafpad。 - Grader 日志被重定向到错误的日志文件,现在捕获来自 instructor.py 的错误 - 如果有错误,将 instructor.log 从 grader 复制到主机日志目录。 2020 年 8 月 28 日 - 修复安装脚本以使用 python3-pip 并修复损坏的脚本:getinfo.py 和 pull-all.py - Registry 逻辑损坏,测试系统未使用测试 registry,添加开发文档。 - 为基于 OWASP 的 web 安全实验添加 juiceshop 和 owasp 基础文件 - 从 check\_nets 中移除不必要的 sudos - 为自动评估添加 CHECK\_OK 文档指令 - 更改 check\_nets 以在指示时修复 iptables 和路由问题。 2020 年 8 月 12 日 - 为 prestop 脚本添加超时 - 为 dmz-lab 添加 quiz 和 checkwork - 不使用 -r 选项重新启动 dmz-lab 会破坏 ISP 的路由。 - 允许 time\_delim 结果使用多个文件。August 6, 2020 - 当 X11 socket 缺失时错误处理中的 bug - quiz 问题中的逗号导致解析错误 - 将 quiz 和 checkwork 添加到 iptables2 实验 July 28, 2020 - 添加 quiz 支持——这些是指导性测验,而非评估性测验。请参阅设计者指南。 - 添加当前状态评估,供 checkwork 命令使用。 July 21, 2020 - 将 testsets/bin 添加到设计者的路径中 - 设计者指南更正以及 IModule 步骤的说明。 - 添加 RANGE\_REGEX 结果类型,用于通过对日志条目使用正则表达式来定义时间范围。 - 在启动实验时,如果需要 X11 socket,则检查其是否存在。 - 添加 mysql 的基础镜像 - 在结果解析中处理 mysql 日志时间戳格式。 June 15, 2020 - 包含 Bird 开源路由器的新基础镜像 - 添加 bird-bgp 边界网关协议实验。 - 添加 bird-ospf 开放最短路径优先路由协议。 - 改进 DNS 变更的处理,某些站点中来自部分容器的外部访问曾被阻止。 - 在讲师指南中添加关于在缺乏互联网访问的环境中使用 Labtainers 的章节。 May 21, 2020 - 将所有仓库移至 Docker Hub labtainers registry - 支持在 start.config 中定义的挂载,以允许持久化软件安装 - 将 ida 实验改为使用 IDA 的持久化安装——新名称为 ida2 - 添加 cgc 实验,用于探索来自 DARPA Cyber Grand Challenge 的 200 多个易受攻击的服务 - 向 SimLab 添加 type\_string 命令 - 添加 netflow 实验,用于 NetFlow 网络流量分析 - 添加 bufoverflow 和 formatstring 实验的 64 位版本 April 9, 2020 - 当使用通配符进行文件选择时,评分器对 CONTAINS 和 FILE\_REGX 条件的评估失败。 - 在 symlab 实验中包含使用 hexedit 的提示。 - 向自动评估添加 hash\_equal 运算符和 hash-goals.py,以避免在配置文件中发布预期答案。 - pcap-lib 实验的自动评估。 April 7, 2020 - 日志已移至 $LABTAINER\_DIR/logs - 其他清理工作,以允许使用 Jenkins 进行重建和测试,包括为构建使用唯一的临时目录 - 将构建支持函数从 labutils 移至 build.py - 添加 pcap-lib 实验,用于基于 PCAP 库开发流量分析程序 March 13, 2020 - 添加 plc-traffic 实验,用于将 GrassMarlin 与实验期间生成的流量配合使用。 - 引入添加“tap”容器的能力,以从选定网络收集 PCAP。 - 更新 GNS3 文档,涉及容器的外部访问,以及使用 dummy\_hcd 模拟 USB 驱动器。 - 将 kali 模板改为使用 faux\_init,而不是尝试使用 systemd。 - 将发行版(tar 文件)移至 box.com - 更改 SimLab 对 netstat 的使用,使其不进行 DNS 查找。 February 26, 2020 - 如果 labtainer 命令未找到实验,建议用户运行 update-labtainer.sh - 添加对网络 tap 组件的初步支持,以查看所有网络流量。 - 用于获取实验镜像以准备将在无互联网环境下使用的 VM 的脚本。 - 为 nmap-discovery 实验提供用户名和密码。 February 18, 2020 - 从主机(例如 VM)继承 DISPLAY 环境变量,而不是假定为 :0 February 14, 2020 - 添加 Ghidra 软件逆向工程入门练习。 February 11, 2020 - 更新指南,描述在 GNS3 环境中对容器的远程访问 - 在 GNS3 中隐藏选定的组件和链接。 - webtrack 实验指南中的图不可见;此指南和 nmap-ssh 中存在拼写错误 February 6, 2020 - 引入远程管理容器的功能,例如推送文件。 - 添加 GNS3 环境功能,以模拟插入 USB 驱动器。 - 改进 Docker 构建错误的处理。 February 3, 2020 - 在 metasploit 实验中,受害机上的 postgresql 服务未运行。 - 将 IModule 手册内容合并到 Lab Designer 指南中。 - 更多 IModule 支持。 January 27, 2020 - 引入对 IModules(讲师开发的实验)的初步支持。请参阅 docs/imodules.pdf。 - 修复 update-labtainer 中损坏的 LABTAINER\_DIR 环境变量 - 修复 ACL 实验中 accounting.txt 文件的访问模式(已变为 rw-r-r)。在 fixlocal.sh 中使用显式 chmod。 January 14, 2020 - 将框架和 gradelab 移植到 Python3(现有 Python2 实验不会更改) - 使用向后兼容的 random.seed 选项 - 修改不兼容的 randint 以返回旧值 - 继续为缺乏 python3 的平台(或那些包含 python 3.5.2 的较旧 VM 设备,这会破坏 random.seed 兼容性)支持 python2。 - 为 rebuild.py 添加 rebuild 别名,以便在需要时选择 python2。 - 基于 Centos 的实验的 manpages 失败;在基础 docker 文件中使用 mandb - dmz-lab 中 DMZ 网络的 netmask 错误(被 python3 捕获);实验手册中内部网关的 IP 地址也错误 - 从 centos 实验中移除 ghex——centos 7 不再容易支持 - file-deletion 实验必须在不重启 VM 的情况下完成,请在实验手册中注明这一点。 - 向 start.config 添加 NO\_GW 开关,以禁用容器上的默认网关。 - Metasploit 实验,如果以特权运行会导致主机 VM 崩溃;如果启用 systemd,su 会出现长时间延迟;因此在不使用 systemd 的情况下运行。 从实验手册中移除数据库的使用,配置为使用新的 no\_gw 开关 - 更新文件头以用于许可/条款;添加合并的许可证文件。 - 修改 publish.py,使其默认使用测试 registry,使用 -d 强制使用 default\_registry - 修订源代码控制流程,为每个分支使用不同的测试 registry,并使用 premaster 分支进行发布的最终测试。 October 9, 2019 - 从 dmz-lab 的 dns 组件中移除 dnsmasq。它在某些安装中导致 bind 失败。 October 8, 2019 - 测试 registry 设置中的语法错误;关于大文件的实验设计者信息;获取 bigexternal.txt 文件 September 30, 2019 - 对某些用户而言,DockerHub registry 检索再次失败。忽略 json 的 html 前缀。 September 20, 2019 - onewayhash 的评估应允许对学生选择的文件进行 hmac 操作。 September 5, 2019 - 重建 metasploit 实验,metasploit-framework 表现出一个 bug。并且实验的“treataslocal”文件在从 svn 迁移时被遗漏。修复 metasploit 实验手册中的类型。 August 30, 2019 - 回退对容器目录是否存在的测试,它们并不总是存在。 August 29, 2019 - 由于 github 或 curl 的变更,从 docker hub 拉取实验镜像失败?捕获到 cloudflare 的重定向。 添加 GNS3 支持。修复 dmz-lab dnssec。 July 11, 2019 - CentOS6 容器的自动评估,修复 firefox 内存问题,支持在 start.config 文件中使用任意 docker create 参数。 June 6, 2019 - 引入 Centos6 基础镜像,但尚不支持自动评估 May 23, 2019 - 由于字段分隔符中的拼写错误,setuid-env 的自动评估失败。 May 8, 2019 - 对 Capabilities 实验手册的更正 May 2, 2019 - Acl 实验修复 bobstuff.txt 权限。在 fixlocal.sh 中使用显式 chmod - 修订学生指南,以阐明手册正文中 stop 和 -r 选项的使用。 March 9, 2019 - checkwork 函数复用了容器,从而阻止学生消除先前实验工作留下的痕迹。 - 向 symkey 实验添加附录,以描述 BMP 图像格式。 February 22, 2019 - http 服务器在 vpn 和 vpn2 实验中未能启动。在这些实验重做之前,已移除自动评估。 January 7, 2019 - 修复 gdblesson 自动评估,使其至少可以运行。 January 27, 2019 - 修复 routing-basics2 的实验手册,并修复路由以启用对内部 web 服务器的外部访问。 December 29, 2018 - 修复 routing-basics2,与 routing-basics 存在相同问题,另外网关 resolv.conf 中有一个错误的 IP 地址 December 5, 2018 - 修复 routing-basics 实验,isp 和 gatway 组件上的 DNS 解析曾损坏。 November 14, 2018 - 从 backups2 中的 archive 机器移除 /run/nologin——需要针对此 nologin 问题的通用解决方案 November, 5, 2018 - 将 file-integrity 实验默认的 aid.conf 改为跟踪元数据变更,而不是文件修改时间 October 22, 2018 - macs-hash 实验在实验重启时对 verydodgy.com 的解析失败 - 如果缺少 notify_cb.sh,notify 函数会失败 October 12, 2018 - 设置文件大小的 ulimit,限制为 1G October 10, 2018 - 强制收集参数化文件 - 在 centos-xtra 基线中显式包含 leafpad 和 ghex,并重建依赖镜像。 September 28, 2018 - 修复 ACL 实验中共享文件的访问模式 - 澄清 pass-crack 中的问题 - 修改工件收集,以忽略早于实验开始时间的文件。 - 添加量子计算算法实验 September 12, 2018 - 修复 setuid-env 评分语法错误 - 修复 iptables2 示例防火墙规则中的语法错误 - 重建 centos 实验,将 lamp 衍生项改为使用 lamp.xtr 进行 waitparam,并强制 httpd 等待其完成。 September 7, 2018 - 添加 CyberCIEGE 作为实验 - 在拉取镜像之前显示 read\_pre.txt 信息,并提供退出机会。 September 5, 2018 - 将 sakai 批量下载处理恢复到 gradelab 函数中。 - 移除未使用的讲师脚本。 September 4, 2018 - 允许每个网络接口有多个 IP 地址 - 添加 Wine 的基础镜像 - 添加 GRFICS 虚拟 ICS 仿真 August 23, 2018 - 添加 GrassMarlin 实验(ICS 网络发现) August 23, 2018 - 添加 GrassMarlin 实验(ICS 网络发现) August 21, 2018 - 针对 AWS 身份验证问题的另一项修复(DockerHub 使用 AWS)。 - 修复 new\_lab\_setup.py,使其使用 git 而不是 svn。 - 将 plc-forensics 实验拆分为基础实验和高级实验(plc-forensics-adv) August 17, 2018 - 过渡到使用 git 和 GitHub 作为权威仓库。 August 15, 2018 - 修改 plc-forensics 实验评估,使其更通用;修订实验手册,以反映 Labtainer 上的 wireshark。 August 15, 2018 - 添加“checkwork”命令,允许学生查看其实验工作的自动评估结果。 - 在 iptables2 和 iptables-ics 实验中包含 iptables 数据包丢弃的日志记录。 - 从 goal.config 中移除已过时的 is\_true 和 is\_false 实例 - 修复布尔求值以处理“NOT foo”,它此前期望更多操作数。 August 9, 2018 - 支持 results.config 文件中的参数替换 - 为 results.config 添加 TIME\_DELIM 结果类型 - 重做 iptables 实验,移除隐藏的 nmap 命令,引入自定义服务 August 7, 2018 - 在 labtainer-student 目录中添加学生指南链接 - 在 VM 桌面上添加学生指南链接 - 修复 iptables-ics,以避免关闭时长时间延迟;并修复回归测试 - 在指南中添加说明,建议学生使用 VM 浏览器将工件 zip 文件传输给讲师。 August 1, 2018 - 使用通用 Docker 镜像进行自动评估;停止为每个实验创建“instructor”镜像。 July 30, 2018 - 记录需要解除对 waitparam.service 的阻塞(通过创建 flag 目录), 如果 fixlocal.sh 脚本要启动一个以 waitparam 为前提条件的服务。 - 添加 plc-app 实验,用于 PLC 应用防火墙和白名单练习。 July 25, 2018 - 向 goals 处理添加 string\_contains 运算符 - 修改 formatstring 实验的评估,以考虑泄露的 secret 并不总是在显示字符串末尾的情况。 July 24, 2018 - 添加 SSH Agent 实验(ssh-agent) July 20, 2018 - 支持离线构建,可选跳过所有镜像拉取 - 将 apt/yum 仓库恢复恢复到 Dockerfile 模板中。 - 处理来自 Docker registry blob 检索的重定向 URL,以避免身份验证错误(不要依赖 curl --location)。 July 12, 2018 - 添加 prestop 功能,允许在实验关闭前在选定组件上执行设计者指定的脚本。 - 更正 ssl 实验中的主机命名,它曾破坏自动评估。 - 修复 dmz-lab 初始状态,以允许来自内部网络的 DNS 解析。 - FILE\REGEX 处理未能正确处理多行搜索。 - 从新重建镜像派生的框架版本具有不正确的默认值。 July 10, 2018 - 添加 LDAP 实验 - 完成向基于 systemd 的 Ubuntu 镜像的过渡,移除未使用的文件 - 将 lab\_sys tar 文件移至每个容器的 tmp 目录,以实现并发。 July 6, 2018 - 所有 Ubuntu 基础镜像已替换为基于 systemd 的版本 - registry 中的 Labtainer 容器镜像现在标记有基础镜像 ID,并具有反映基础镜像的标签。 - 给定安装将拉取并使用与其拥有的基础镜像一致的镜像。 - 如果您使用的是 VM 镜像,您可能希望用我们网站上更新的 VM 镜像替换它。 - 新实验在不下载更新的基础镜像的情况下将无法运行;这可能导致您的 VM 存储多个版本的大型基础镜像(每个 > 500 MB)。 - 实验停止时正在运行的进程的工件曾丢失——未能正确终止 capinout 进程。 June 27, 2018 - 添加对 Ubuntu systemd 镜像的支持 - 从 labtainer-student/bin 移除旧的 SimLab.py 副本 - 将 apt 和 yum 源移至 /var/tmp --- [Read more](https://github.com/mfthomps/labtainers)