
Labtainers v1.4.4n
Labtainers: Dockerベースのサイバーラボフレームワーク
Labtainers: Dockerベースのサイバーラボフレームワーク
Labtainersには50以上のサイバーラボ演習と、独自のラボを構築するためのツールが含まれています。VMアプライアンスを1つインポートするか、Linuxシステムにインストールするだけで、学生はこれらのラボおよび将来のラボ演習に向けたプロビジョニングと管理設定を完了できます。
- Dockerコンテナによる一貫したラボ実行環境と自動プロビジョニング
- そこそこの性能のノートパソコン上でのマルチコンポーネントネットワークトポロジ
- 学生のラボ活動と進捗の自動評価
- 解答の共有を抑制するための個別化されたラボ演習
Labtainersは、学生のコンピュータにインストールされているLinuxディストリビューションやパッケージに関係なく、学生が自分のコンピュータ内だけでラボを完全に実行できる、制御された一貫性のある実行環境を提供します。Labtainersは当方の[VMアプライアンス][vm-appliancee]、またはDockerがインストールされた任意のLinux上で動作します。また、LabtainersはクラウドベースのVMとしても利用可能です。例えば、Student Guideに記載されているようにAzure上で利用できます。
インストールと使用方法についてはStudent Guideを、学生の評価についてはInstructor Guideを参照してください。ラボ演習の開発とカスタマイズについてはDesigner Guideで説明されています。 フレームワークの詳細についてはPapersを参照してください。 Labtainersのウェブサイトおよびダウンロード(LabtainersがプリインストールされたVMアプライアンスを含む)は https://nps.edu/web/c3o/labtainers にあります。
Distribution created: 09/11/2026 11:33
Revision: v1.4.4n
Commit: 9f1012dc
Branch: 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のissueレポートを使用するか、[email protected]までメールしてください。
https://my.nps.edu/web/c3o/support1 も参照してください。
リリースノート
標準のLabtainers配布には、新しいラボの開発に必要なファイルは含まれていません。それらが必要な場合は、labtainer/trunk/setup_scriptsディレクトリから ./update-designer.sh を実行してください。
インストールスクリプトとupdate-designer.shスクリプトは環境変数を設定するため、Labtainersを初めて使用する前にログアウト/ログインするか、新しいbashシェルを起動することをお勧めします。
2026年1月6日
- インデントが原因でインストールスクリプトに混入したバグを修正。
2025年12月30日
- checkworkレポート形式を縦型に変更。ヘッドレス用のビデオガイド。便利なパス。
2025年10月15日
- packet-introspectionラボを改訂し、maxmind地理位置データベースのリンクを更新し、レガシーデータベースの使用について注記。
2025年4月24日
- プルリクエスト#96に従い、imoduleが不足ディレクトリを適切に作成するよう修正
2024年11月22日
- Google Cloud VMを置き換え。今回はコンテナ内のsystemdの障害が原因。
2024年9月23日
- 誤ったDockerバージョンを使用していたGoogle Cloud VMを置き換え
2024年9月10日
- imoduleパス作成時のタイポ
2024年7月26日
- capinoutを修正し、grantpt clib関数を使用しないように変更。これはコンテナから実行するとクラッシュするようになった模様。
2024年7月22日
- Ubuntu22用のベースコンテナと、それをサポートするためのフレームワークの変更を追加。
2024年7月5日
- VMアプライアンスをUbuntu 24に移行
- docker pythonパッケージは壊れたpython httpライブラリを使用しているため、パッケージのダウングレードが必要。
- Ubuntuによるpythonパッケージのロックダウンを回避するため、仮想python環境を使用。
- コンテナとVM間でsystemdを共有できるようにするブートパラメータを追加。
- 更新時に壊れたtarユーティリティからのエラーメッセージをリダイレクト。
- バージョン18 VMにおけるmscパッケージのUbuntu更新による破損(update-ubuntu.shを参照)
- docker-composeコマンドが壊れているため、"docker compose"を使用。
- ヘッドレスLabtainersでソケットパーミッションを強制。
- ヘッドレスLabtainersをUbuntu 24を使用するよう更新
2023年11月27日
- ec2マシン上のubuntu22用にGoogle Cloud Platformオプションを追加。
2023年9月18日
- 以前の修正実装に欠陥があった。
2023年8月8日
- DockerHubイメージのjson形式の変更に対応。Keesに感謝!
2023年4月17日
- 最新のラボバージョンを強制的に使用。例:iptablesではなくiptables2。タブ補完を最新のみ表示するよう修正。(Issue #77)
- X11の競合状態によりCyberCIEGEラボのインストールが失敗していた。(Issue #76)
- CyberCIEGEのreadmeに、収集したログを$HOMEディレクトリに保存するよう学生に指示する注記を追加。(Issue #75)
- Radiusラボのcheckworkが誤って"radiusd not running"と報告。prestopスクリプトが欠落していた。(Issue #74)
- MACVLAN_EXTオプション使用時にLabeditがstart構成ファイルを破損していた。(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ソケット名を使用。 2022年8月9日
- graderのprocessValueMax関数の名前を修正。Issue #63
2022年8月4日
- labeditプログラムが誤ったJDKで再ビルドされ、古いJREでlabeditを実行できなかった
2022年7月18日
- IModule内でUbuntu20ベースのコンテナの作成が失敗していた。Issue #61。
2022年3月23日
- tap lockディレクトリへのパスを修正。ネットワークタップを使用するラボの失敗を引き起こしていた
- plc-traffic netmonコンピュータを更新し、java環境の新しいgrassmarlinに必要なopenjfxを持たせる
- chown -Rを回避してラボ起動を高速化。これはdockerで非常に遅い。
- コンテナの/tmpディレクトリ内のX11リンクの削除を回避するための別の試み。
- webtrackの訪問サイト数のカウントを修正し、live-headersゴールを削除。そのツールはもはや利用できない。 一部のラボマニュアル手順を明確化。
2022年3月2日
- 新しいssh-tunnelラボを追加(GWDに感謝!)
- new_lab_setupで設定されたX11値をlabeditが反映しない不具合を修正
- コンテナをパラメータ化しないオプションを追加
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を導入。使用方法の詳細はStudent Guideを参照。
2022年1月3日
- setuid-envラボを改訂し、より良い評価を追加。simlabテストとprintenv子プロセスでのsighup回避。
- 評価ゴールカウントディレクティブを修正し、結果タグ値がfalseのものを除外。
- デバッグオプションで起動されたgraderでgradelab -aを使用する際にlabnameを必須としない。
- capinout(stdin/stdoutミラーリング)を改訂し、コマンドプロセス子の孤児化を処理。ドキュメントとエラー処理を改善。
- ラボ初回実行時にプルされるdockerイメージのプログレスバー表示を追加。
- コンテナ初期化の進捗に関するユーザフィードバック。
- pcap-libラボに自動評価に必要なnotifyファイルが欠落していた。Lab Manualから不要なステップを削除。
2021年11月23日
- テストVMでubuntuのポップアップエラーを無効化。
- 異なるDISPLAY変数形式の処理を修正。
2021年10月22日
- tcpipラボガイドを改訂し、syn-flood攻撃の成功は不可能であることを注記。その自動評価を修正し、SimLabスクリプトを追加。
- アーティファクトファイルの拡張子をzipからlabに変更し、GUIファイルマネージャを混乱させるためのプリアンブルを追加。学生がzipを開いて中身を提出していた。
- gradelabの-rオプションをデフォルトにし、graderの累積使用のための-cオプションを追加。
- 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コマンドのタブ補完。
- MPIを使用した新しい並列コンピューティングラボ ``parallel''。
2021年8月3日
- コンテナが別のコンテナのパラメータ化完了までパラメータ化を遅延させるための"WAIT_FOR"構成オプションを追加。
- 結果解析でのMariadbログ形式のサポート
- MacおよびWindowsでのDocker Desktop使用のサポートを削除。その製品は当方でサポートするには不安定すぎる。
- ユーザが"which"などの組み込みbashコマンドを使用した際のstderrメッセージを抑制。
- makepack/labpackプログラムのバグ修正。
2021年7月19日
- DNSプロトコルと構成を紹介するDNSラボを追加。
- VirtualBoxアプライアンスイメージを改訂し、正しい更新スクリプトで起動するように。
- resolv.confのnameserverパラメータをlab_gw構成フィールドから分離し、独自の値に。
- ラボが1つも起動される前にIModuleコマンドを実行すると失敗していた。
2021年7月5日
- DISPLAY環境変数管理のエラーにより、Docker Desktop上のGUIアプリケーションが壊れていた。
2021年7月1日
- ヘッドレスLabtainersのMacパッケージインストールをサポート。
- 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機能、およびLabpackを作成するmakepackツール。
- ubuntu20使用時の/sbinディレクトリのエラーチェック -- サイレントに致命的となっていた。
- 新しいnetwork-basicsラボ
2021年5月5日
- ユーザ/グループ管理を紹介する新しいusersラボを導入
- centosコンテナのsyslogでApparmorホストメッセージを抑制
2021年4月28日
- 新しいbase2イメージにmanページが欠落していた。ベースイメージでunminimizeを使用して復元。
- OSSECホストベースIDSラボを導入。
2021年4月13日
- fixlocal経由でWineを起動する前にX11ソケットが再配置されなかったため、CyberCIEGEラボが失敗。
2021年4月9日
- 単純なC++プログラムでGDBを使用するための新しいgdb-cppチュートリアルラボ。
- 浮動小数点例外により、stdin/stdoutミラーリングのためのexec_wrap.shの使用が露見していた。
2021年4月7日
- ldapラボがUbuntu 20に移行した際に失敗。問題はpwdのnscdキャッシュの問題に起因。ldapをUbuntu 20に移行
2021年3月23日
- RANDOMでのパラメータ化に上限が含まれていなかった。
- RANDOMにオプションのstepパラメータを追加。例:単語境界を確保するため。
- db-accessラボ:データベースコンピュータにmysql-workbenchを追加。
- cデータ構造の境界を超えたメモリ参照を例示する新しいoverrunラボ。
- 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で新しいグローバルラボ構成パネルにレジストリ設定を追加。
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バグ修正。
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関数が失敗していた。
- Instructor Guideを更新し、ホストコンピュータ上の学生zipファイルの管理について説明。
2020年12月4日
- tarの配布をGitHubリリースアーティファクトに移行
- 別個のdesigner tarファイルを廃止し、gitリポジトリのtarballを使用。
- 学生ラボアーティファクトの分析のためのgrader web機能のテスト
- 完全なsmoketestからログをクリアし、removelabコマンドでgraderコンテナを削除。
2020年12月1日
- iptables2ラボの評価が、ランダムポートがnmapにとって「未知」であることに依存していた。
- 同期ディレクトリを使用し、ラボ起動前にsmoketestが開始されるのを遅延。
- Lab designer UI要素の統合を開始。
2020年10月13日
- MacおよびWindows上のDocker Desktopで実行するためのヘッドレス構成
- ヘッドレスサーバサポート、クラウドデプロイ用のcloud-configファイル
- ヘッドレス構成のテストサポート
- 起動時にrc.localが実行されるまでmynotifyを強制的に待機
- mynotifyサービスの出力を単一のタイムスタンプにマージする機能を改善
- stopgradeスクリプトをPython3に
- SimLabがsystem psではなくdocker topを使用するように
2020年9月26日
- stoplabスクリプトを整理し、非ラボコンテナを無視するように
- mysqlデータベースの制御された共有のためのdb-accessデータベースアクセス制御ラボを追加。
2020年9月17日
- X11設定のため、macs-hashラボがLeafpadを実行できなかった。
- Graderログが誤ったログファイルにリダイレクトされていた。instructor.pyからのエラーを捕捉するように
- エラーがある場合、graderからホストのlogsディレクトリにinstructor.logをコピー。
2020年8月28日
- インストールスクリプトを修正し、python3-pipを使用するようにし、壊れたスクリプト(getinfo.pyとpull-all.py)を修正
- レジストリロジックが壊れており、テストシステムがテストレジストリを使用していなかった。開発ドキュメントを追加。
- OWASPベースのwebセキュリティラボ用にjuiceshopとowaspのベースファイルを追加
- check_netsから不要なsudoを削除
- 自動評価用のCHECK_OKドキュメントディレクティブを追加
- check_netsを変更し、指示があればiptablesとルーティングの問題を修正するように。
2020年8月12日
- prestopスクリプトにタイムアウトを追加
- dmz-labにquizとcheckworkを追加
- -rオプションなしでdmz-labを再起動すると、ISPからのルーティングが壊れた。
- time_delim結果に複数のファイルを許可。2020年8月6日
- X11ソケットが存在しない場合のエラー処理のバグ
- クイズの問題文のカンマがパースエラーを引き起こしていた
- iptables2ラボにクイズとcheckworkを追加
2020年7月28日
- クイズサポートを追加 -- これらはガイダンスクイズであり、評価クイズではない。デザイナーガイドを参照。
- checkworkコマンドで使用する現在状態の評価を追加。
2020年7月21日
- testsets/binをデザイナーのパスに追加
- デザイナーガイドの修正とIModuleステップの説明。
- ログエントリに対する正規表現を用いた時間範囲を定義するためのRANGE_REGEX結果タイプを追加。
- ラボ起動時に必要であればX11ソケットが存在することを確認。
- mysql用のベースイメージを追加
- 結果解析でmysqlのログタイムスタンプ形式を処理。
2020年6月15日
- Birdオープンソースルーターを含む新しいベースイメージ
- bird-bgp Border Gateway Protocolラボを追加。
- bird-ospf Open Shortest Path Firstルーティングプロトコルを追加。
- DNS変更の処理を改善、一部のサイトで一部のコンテナからの外部アクセスがブロックされていた。
- インターネットアクセスのない環境でLabtainersを使用する方法についてインストラクターガイドにセクションを追加。
2020年5月21日
- すべてのリポジトリをDocker Hubのlabtainersレジストリに移動
- 永続的なソフトウェアインストールを可能にするため、start.configで定義されたマウントをサポート
- idaラボをIDAの永続インストールを使用するように変更 -- 新しい名前はida2
- DARPA Cyber Grand Challengeの200以上の脆弱なサービスを探索するためのcgcラボを追加
- SimLabにtype_stringコマンドを追加
- NetFlowネットワークトラフィック分析を使用するためのnetflowラボを追加
- bufoverflowおよびformatstringラボの64ビット版を追加
2020年4月9日
- ファイル選択にワイルドカードが使用された場合、GraderがCONTAINSおよびFILE_REGX条件の評価に失敗していた。
- symlabラボでhexeditを使用するためのヒントを含めた。
- 設定ファイルに期待される回答を公開することを避けるため、自動評価にhash_equal演算子とhash-goals.pyを追加。
- pcap-libラボの自動評価。
2020年4月7日
- ログが$LABTAINER_DIR/logsに移動された
- Jenkinsを使用した再ビルドとテストを可能にするその他のクリーンアップ、ビルド用の一意の一時ディレクトリの使用を含む
- ビルドサポート関数をlabutilsからbuild.pyに移動
- トラフィック分析プログラムのPCAPライブラリベースの開発のためのpcap-libラボを追加
2020年3月13日
- ラボ中に生成されたトラフィックでGrassMarlinを使用するためのplc-trafficラボを追加。
- 選択したネットワークからPCAPを収集するための「tap」コンテナを追加する機能を導入。
- コンテナへの外部アクセス、およびダミーUSBドライブをシミュレートするためのdummy_hcdの使用についてGNS3ドキュメントを更新。
- kaliテンプレートをsystemdを使用しようとするのではなくfaux_initを使用するように変更。
- ディストリビューション(tarファイル)をbox.comに移動
- SimLabのnetstatの使用をDNSルックアップを行わないように変更。
2020年2月26日
- labtainerコマンドがラボを見つけられない場合、ユーザーにupdate-labtainer.shの実行を提案
- すべてのネットワークトラフィックを表示するためのネットワークタップコンポーネントの予備サポートを追加。
- インターネットなしで使用されるVMを準備するためにラボイメージを取得するスクリプト。
- nmap-discoveryラボのユーザー名とパスワードを提供。
2020年2月18日
- :0を仮定するのではなく、ホスト(例:VM)からDISPLAY環境変数を継承。
2020年2月14日
- Ghidraソフトウェアリバースエンジニアリング入門演習を追加。
2020年2月11日
- GNS3環境内のコンテナへのリモートアクセスを説明するようにガイドを更新
- GNS3内の選択したコンポーネントとリンクを非表示。
- webtrackラボガイドの図が表示されなかった;これとnmap-sshのタイポ
2020年2月6日
- コンテナをリモートで管理する機能を導入、例:ファイルのプッシュ。
- USBドライブの挿入をシミュレートするGNS3環境機能を追加。
- Dockerビルドエラーの処理を改善。
2020年2月3日
- metasploitラボで、postgresqlサービスが被害者上で実行されていなかった。
- IModuleマニュアルの内容をLab Designerガイドに統合。
- さらなるIModuleサポート。
2020年1月27日
- IModules(インストラクターが開発したラボ)の初期サポートを導入。docs/imodules.pdfを参照。
- update-labtainer内の壊れたLABTAINER_DIR環境変数を修正
- ACLラボのaccounting.txtファイルのアクセスモードを修正(rw-r-rになっていた)。fixlocal.shで明示的なchmodを使用。
2020年1月14日
- フレームワークとgradelabをPython3に移植(既存のPython2ラボは変更されない)
- 後方互換のrandom.seedオプションを使用
- 非互換のrandintをハックして古い値を返す
- python3を欠くプラットフォーム(またはrandom.seed互換性を壊すpython 3.5.2を含む古いVMアプライアンスなど)向けにpython2のサポートを継続。
- 必要に応じてpython2を選択するrebuild.pyのrebuildエイリアスを追加。
- Centosベースのラボのmanpageが失敗していた;ベースdockerファイル内でmandbを使用
- dmz-labのDMZネットワークのネットマスクが間違っていた(python3で検出);ラボマニュアルの内部ゲートウェイのIPアドレスも同様
- ghexをcentosラボから削除 -- centos 7ではもはや簡単にサポートされない
- file-deletionラボはVMを再起動せずに完了する必要がある、これをラボマニュアルに記載。
- コンテナのデフォルトゲートウェイを無効にするNO_GWスイッチをstart.configに追加。
- Metasploitラボ、特権で実行するとホストVMがクラッシュする;systemdが有効な場合suで長い遅延が発生する;そのためsystemdなしで実行。 ラボマニュアルからデータベースの使用を削除、新しいno_gwスイッチを使用するように設定
- ライセンス/条項のためにファイルヘッダーを更新;統合ライセンスファイルを追加。
- publish.pyを変更してデフォルトでテストレジストリを使用するようにし、-dでdefault_registryの使用を強制
- ソース管理手順を改訂して各ブランチに異なるテストレジストリを使用し、リリースの最終テストにpremasterブランチを使用。
2019年10月9日
- dmz-labのdnsコンポーネントからdnsmasqを削除。一部のインストールでbindが失敗する原因となっていた。
2019年10月8日
- テストレジストリ設定の構文エラー;大きなファイルに関するラボデザイナー情報;bigexternal.txtファイルの取得
2019年9月30日
- DockerHubレジストリの取得が一部のユーザーで再び失敗。jsonへのhtmlプレフィックスを無視。
2019年9月20日
- onewayhashの評価は、学生が選択したファイルに対するhmac操作を許可すべき。
2019年9月5日
- metasploitラボを再ビルド、metasploit-frameworkがバグを示した。また、ラボの「treataslocal」ファイルがsvnからの移動で漏れていた。metasploitラボマニュアルのタイポを修正。
2019年8月30日
- コンテナディレクトリの存在テストを元に戻す、それらは常に存在するわけではない。
2019年8月29日
- docker hubからのラボイメージのプルがgithubまたはcurlの変更により失敗。cloudflareへのリダイレクトをキャッチ。GNS3サポートの追加。dmz-lab dnssecの修正。
2019年7月11日
- CentOS6コンテナの自動評価、firefoxメモリ問題の修正、start.configファイルでの任意のdocker create引数のサポート。
2019年6月6日
- Centos6ベースを導入、ただし自動評価のサポートはまだ
2019年5月23日
- setuid-envの自動評価がフィールドセパレータのタイポにより失敗。
2019年5月8日
- Capabilitiesラボマニュアルの修正
2019年5月2日
- Aclラボのbobstuff.txtパーミッションの修正。fixlocal.shで明示的なchmodを使用
- マニュアル本文でのstopと-rオプションの使用を明確にするために学生ガイドを改訂。
2019年3月9日
- checkwork機能がコンテナを再利用していたため、学生が以前のラボ作業からアーティファクトを排除できなかった。
- symkeyラボにBMP画像形式を説明する付録を追加。
2019年2月22日
- vpnおよびvpn2ラボでhttpサーバーが起動に失敗。再作業されるまでこれらのラボから自動評価を削除。
2019年1月7日
- gdblesson自動評価を少なくとも動作するように修正。
2019年1月27日
- routing-basics2のラボマニュアルを修正し、内部Webサーバーへの外部アクセスを可能にするようにルーティングを修正。
2018年12月29日
- routing-basics2を修正、routing-basicsと同じ問題、さらにゲートウェイのresolv.confのIPアドレスが間違っていた
2018年12月5日
- routing-basicsラボを修正、ispおよびgatwayコンポーネントでのDNS解決が壊れていた。
2018年11月14日
- backups2のアーカイブマシンから/run/nologinを削除 -- このnologin問題には一般的な解決策が必要
2018年11月5日
- file-integrityラボのデフォルトaid.confを、ファイル変更時刻ではなくメタデータ変更を追跡するように変更
2018年10月22日
- macs-hashラボのverydodgy.comの解決がラボ再起動時に失敗
- notify_cb.shが欠落している場合にNotify機能が失敗
2018年10月12日
- ファイルサイズにulimitを設定、1Gに制限
2018年10月10日
- パラメータ化されたファイルの収集を強制
- leafpadとghexをcentos-xtraベースラインに明示的に含め、依存イメージを再ビルド。
2018年9月28日
- ACLラボの共有ファイルのアクセスモードを修正
- pass-crackの問題を明確化
- ラボ開始より古いファイルを無視するようにアーティファクト収集を変更。
- 量子コンピューティングアルゴリズムラボを追加
2018年9月12日
- setuid-envの評価構文エラーを修正
- iptables2のサンプルファイアウォールルールの構文エラーを修正
- centosラボを再ビルド、lamp派生物をwaitparamにlamp.xtrを使用するように移動し、httpdがそれが終了するのを待つように強制。
2018年9月7日
- CyberCIEGEをラボとして追加
- イメージのプル前にread_pre.txt情報を表示し、中止する機会を提供。
2018年9月5日
- sakai一括ダウンロード処理をgradelab機能に復元。
- 未使用のインストラクタースクリプトを削除。
2018年9月4日
- ネットワークインターフェースごとに複数のIPアドレスを許可
- Wine用のベースイメージを追加
- GRFICS仮想ICSシミュレーションを追加
2018年8月23日
- GrassMarlinラボ(ICSネットワークディスカバリ)を追加
2018年8月23日
- GrassMarlinラボ(ICSネットワークディスカバリ)を追加
2018年8月21日
- AWS認証問題に関する別の修正(DockerHubはAWSを使用)。
- new_lab_setup.pyをsvnではなくgitを使用するように修正。
- plc-forensicsラボを基本ラボと上級ラボ(plc-forensics-adv)に分割
2018年8月17日
- 権威リポジトリとしてgit & GitHubに移行。
2018年8月15日
- plc-forensicsラボ評価をより一般的になるように変更;Labtainer上のwiresharkを反映するようにラボマニュアルを改訂。
2018年8月15日
- 学生が自分のラボ作業の自動評価結果を表示できる「checkwork」コマンドを追加。
- iptables2およびiptables-icsラボにiptablesパケットドロップのログ記録を含める。
- goal.configからis_trueとis_falseの廃止されたインスタンスを削除
- 「NOT foo」を処理するようにブール評価を修正、より多くのオペランドを期待していた。
2018年8月9日
- results.configファイルでのパラメータ置換をサポート
- results.config用のTIME_DELIM結果タイプを追加
- iptablesラボを作り直し、隠されたnmapコマンドを削除、カスタムサービスを導入
2018年8月7日
- labtainer-studentディレクトリの学生ガイドへのリンクを追加
- VMデスクトップ上の学生ガイドへのリンクを追加
- シャットダウン時の長い遅延を避けるためのiptables-icsの修正;および回帰テストの修正
- 学生がVMブラウザを使用してアーティファクトzipファイルをインストラクターに転送することを提案する注記をガイドに追加。
2018年8月1日
- 自動評価に汎用Dockerイメージを使用;ラボごとに「instructor」イメージを作成するのを停止。
2018年7月30日
- fixlocal.shスクリプトがwaitparamを前提とするサービスを開始する場合、 waitparam.serviceのブロックを解除する(フラグディレクトリを作成することによる)必要性を文書化。
- PLCアプリケーションファイアウォールとホワイトリスト演習のためのplc-appラボを追加。
2018年7月25日
- goals処理にstring_contains演算子を追加
- 漏洩した秘密が常に表示文字列の末尾にあるとは限らないことを考慮するようにformatstringラボの評価を変更。
2018年7月24日
- SSH Agentラボ(ssh-agent)を追加
2018年7月20日
- オフラインビルドをサポート、オプションですべてのイメージプルをスキップ
- Dockerfileテンプレートへのapt/yumリポジトリ復元を復元。
- 認証エラーを避けるためにDockerレジストリblob取得からのリダイレクトURLを処理(curl --locationに依存しない)。
2018年7月12日
- ラボシャットダウン前に選択したコンポーネントでデザイナー指定のスクリプトを実行できるprestop機能を追加。
- sslラボのホスト命名を修正、自動評価を壊していた。
- 内部ネットワークからのDNS解決を許可するようにdmz-labの初期状態を修正。
- FILE\REGEX処理が複数行検索を適切に処理していなかった。
- 新しく再ビルドされたイメージから導出されたフレームワークバージョンのデフォルト値が間違っていた。
2018年7月10日
- LDAPラボを追加
- systemdベースのUbuntuイメージへの移行を完了、未使用ファイルを削除
- 並行性のためにlab_sys tarファイルをコンテナごとのtmpディレクトリに移動。
2018年7月6日
- すべてのUbuntuベースイメージをsystemdベースのバージョンに置き換え
- レジストリ内のLabtainerコンテナイメージがベースイメージIDでタグ付けされ、ベースイメージを反映するラベルを持つようになった。
- 特定のインストールは、それが持つベースイメージと一致するイメージをプルして使用する。
- VMイメージを使用している場合、当社のウェブサイトから新しいVMイメージに置き換えることを検討してください。
- 新しいラボは新しいベースイメージをダウンロードしないと実行されない;これによりVMが複数のバージョンの大きなベースイメージ(各500 MB超)を保存する可能性がある。
- ラボ停止時に実行中だったプロセスからのアーティファクトが失われていた -- capinoutプロセスを適切に強制終了していなかった。
2018年6月27日
- Ubuntu systemdイメージのサポートを追加
- labtainer-student/binからSimLab.pyの古いコピーを削除
- aptおよびyumソースを/var/tmpに移動
- 評価での「boolean」と「count_greater」の使用の違いを明確化
- start.configのAdd-HOSTを拡張してネットワーク上のすべてのコンポーネントを含める。
- new_lab_setup.pyに既存のコンテナのコピーに基づいてコンテナを追加するオプションを追加。
2018年6月21日
- root用にDISPLAY環境変数を設定
- svn status出力のビルド依存関係処理の修正
- radiusラボを追加
- SimLab appendのバグを修正
- 適切な場合、new_lab_setup.pyでファイル名を変更するためにsvnを使用
2018年6月19日
- 複数のタブでターミナルを作成する際にstart.confで定義されたコンテナの順序を保持
- 評価設定ファイルへのパスを特定するためにデザイナーマニュアルを明確化。
- インストラクターにメールを提供するよう促すプロンプトを削除
- バージョン番号をテストする際のエラーチェックの失敗
- 評価jsonにラボ開始とやり直しのタイムスタンプを含める
- 双方向認証と証明書の作成を含むSSLラボを追加。
2018年6月14日
- パラメータ化に診断を追加、一部のインストールがそれで失敗する理由を追跡。
- コンテナが既に作成されている場合、それがパラメータ化されていることを確認、そうでなければ破損または不完全なコンテナを避けるために中止。
- プログラムバージョン番号をsvn HEADを使用するように修正
2018年6月15日
- xtermに表示されたプレーンテキストの指示をpdfファイルに変換。
- まだプルされていないイメージのバージョン処理のバグを修正。
- 作成されたがパラメータ化されていないコンテナの発生を検出し、 ユーザーに「-r」オプションでラボを再起動するよう促す。
- デザイナーユーティリティを追加:rm_svn.py、削除されたファイルがイメージ再ビルドをトリガーするように。
2018年6月13日
- Ubuntu 18システムにxtermをインストール
- 新しいバージョンのgnome-terminalタブ処理の破損を回避
2018年6月11日
- イメージをフレームワークと比較するバージョンチェックを追加。
- さまざまなラボマニュアルを明確化
2018年6月2日
- Ubuntu 18にインストールする場合、docker-ceではなくdocker.ioを使用
- capinoutは「sudo su」監視コマンドの後に非昇格ユーザーコマンドが続く場合にクラッシュを引き起こした。
- ルーティングとresolv.conf設定をfixlocal.shではなく/etc/rc.localに移動し、 コンテナの開始/停止を通じて永続化するように。
2018年5月31日
- 改行なしでターミナルでテキストが折り返される原因となるDockerバグを回避。
- COMMAND_COUNTを拡張してパイプを考慮
- リモートサーバーへのバックアップとパーティション全体のバックアップを含む新しいバージョンのbackupsラボを作成。
- sshlabの指示をssh-copy-idユーティリティを使用するように変更
- CentOSでsshログインを許可するためにparameterize.shから/run/nologinファイルを削除
2018年5月30日
- new_lab_setup.pyを拡張して使用するベースイメージの識別を許可
- 集中ログを含む新しいバージョンのcentos-logを作成。
- 評価検証が「time_not_during」オプションを受け入れていなかった。
- DockerコンテナからLabtainersを管理するためのLabtainer Masterの統合を開始。
2018年5月25日
- さまざまなサービスから10秒のスリープを削除。xinetdの応答を遅延させ、自動テストを壊していた。
- snortラボの評価を修正してアラームに「CONFIDENTIAL」のみを要求するように。ラボから未使用ファイルを削除。
- ラボ停止時にプログラムが実行中だった場合、プログラムの終了時刻が記録されていなかった。
2018年5月21日
- retlibc評価を修正して重複したゴールを削除、自動評価が失敗していた
- 個々のラボとラボテンプレートからmynotify.pyのコピーを削除、それは lab_sys/sbinの一部となっているが、aclラボのために行われた修正を反映するように更新されていなかった。
2018年5月18日
- exec_wrapからのシグナルメッセージをマスクしてsegvエラーメッセージが正しく見えるように。
- capinoutが時々stdoutを失っていた、cmdの死時にコマンドstdoutをチェック。
- formatstringの評価を修正してセグメンテーションフォルトメッセージをキャッチ。
- SimLabにtype_function機能を追加してスクリプトのstdoutをタイプ(formatstring simlabを参照)。
- シングル/ダブルクォートの組み合わせに関するSimLabの制限を削除。
- SimLabにwindow_waitディレクティブを追加して、指定されたタイトルのウィンドウが見つかるまで一時停止。
- plcラボを変更して物理世界ターミナルのタイトルを変更してステータスを反映、 これによりテストも容易になる。
- bufoverflowラボマニュアルのリンクを修正。
2018年5月15日
- 回帰テストとラボ開発のためにラボのユーザーパフォーマンスをシミュレートするSimLabツールの使用に関する付録を追加。
- SimLabにwait_net関数を追加して選択したネットワーク接続が終了するまで一時停止。
- acl自動評価を複数行マッチングにFILE_REGEXを使用するように変更。
- xsiteラボのSimLabテスト。
2018年5月11日
- home.tarに見つかるファイルの収集を強制する「noskip」ファイルを追加、Firefoxのplaces.sqliteを取得するために必要。
- 抽出前にsqliteデータベースをwrite ahead bufferとマージ。
- symkeylabのラボマニュアルの修正
- symkeylabとpubkeyの評価追加
- simlabツールの改善:includeのサポート、ウィンドウ命名の修正。
2018年5月9日
- file-deletionラボのパラメータ化を修正。そのラボマニュアルのエラーを修正。
- プロセスを削減しPIDの追跡を可能にするためにpythonスクリプトでのshell=Trueの使用を置き換え
- backups、pass-crack、macs-hashのマニュアルをクリーンアップ。
2018年5月8日
- gnome-terminalがxterm指示ターミナルがそのコマンドを実行する前にdockerコマンドを実行するのを防ぐための競合状態を処理。
- インストラクターが「-d」で開始されたラボを停止したときにエラーを表示しない。
- nmap-sshの評価をラボの意図をよりよく反映するように変更。
- githubのolbergerによって提案されたいくつかのドキュメントとスクリプトの修正。
2018年5月7日
- stdinとstdoutをキャプチャするために古いcapinout.shではなくCベースのcapinoutプログラムを使用。trunk/src-tool/capinoutを参照。ctrl-Cを使用して監視プログラムを中断することに関連する制限と、telnetおよびsshでのパスワードの表示を削除。
- saki bulk_download zip処理のサポートを含めて、個別に提出されたレポートを抽出し、欠落した提出を要約。
- ユーザー提供のメールが印刷可能な文字であることを確認するチェックを追加。
- 評価中、ユーザー提供のメールがzipファイル名と一致しない場合、結果の評価に進むが、テーブルに不正を反映する注記を含める。学生がメールアドレスにゴミを入力した場合から回復するために必要。
- telnetlab評価をパスワードのためにtcpdump出力を見ないように変更 -- capinout修正によりサーバーへの正しい1文字ずつの送信が可能になる。
- install-docker.shのタイポを修正し、そのスクリプトでdocker dns設定を変更するためにsudoを使用。
2018年4月26日
- ラボを開始するために「labtainer」を、停止するために「stoplab」を使用するように移行。
- labtainerコマンドに--versionオプションを追加。
- log_tsおよびlog_range結果タイプ、およびtime_not_duringゴール演算子を追加。centos-logおよびsys-log評価をこれらの機能を使用するように刷新。
- labsys.tarを/tmpではなく/var/tmpに配置、時々展開前に削除されていた
- VMの再起動後にrootとしてXアプリケーションを実行すると失敗する。
- CentOSベースのラボに「User Command」manページを追加
- 学生からのdocsファイルの収集を妨げていた最近のバグを修正
- smoke-testsを変更して学生固有の結果行のみを比較、空白を除外2018年4月20日
- denyhostsサービスが初回起動に失敗するため、起動をstudent_startup.shに移動しました。
- すべてのfaux_initサービスをパラメータ化の後に移動しました -- コンテナの2回目の起動時にrsyslogが起動に失敗していました。 2018年4月19日
- aclラボがトロイの木馬ステップのパフォーマンスを適切に評価できませんでした。
- デフォルトで学生のドキュメントを収集するようにしました。
- denyhostsラボを、denyhosts(またはtcp wrappers?)がiptablesを変更するようになったことを反映するように変更しました。また、denyhostsサービスが起動に失敗する場合がありました。
- Labtainersを更新する際、アーカイブ内のファイルより新しいファイルを上書きしないようにしました -- 学生のラボレポートを保持します。
2018年4月12日
- ラボの目標の目的に関するドキュメントを追加し、インストラクターがラボを開始する際にインストラクター向けに表示するようにしました。
- プログラムがtreataslocalにある場合のprecheck関数の使用を修正し、capintout.shに完全なプログラムパスを渡すようにしました。
- instr_configファイルをイメージビルド時ではなく実行時にコピーするようにしました。
- 自動評価のデバッグに関するDesigner Guideのセクションを追加しました。
- ラボレポートのファイル名の大文字小文字が誤っていました。
- 不要なchown関数によりinstructor.pyが時々クラッシュしていました。
- ラボの自動テストのサポート(SimLabとsmoketestを参照)。
- testsetsとdistribをtrunk配下に移動しました
2018年4月5日
- Firefoxプロファイルを修正し、「しばらくFirefoxを使用していません...」というメッセージを削除しました。
- レジストリからの不要なプルを削除しました -- 代わりにdocker hub API経由でイメージの日付を取得します。
2018年3月28日
- システムファイルには「docker cp」ではなく明示的なtarを使用しました(Dockerは リンクを辿りません。)
- backupsラボを修正し、別のファイルシステムを使用するようにしてマニュアルを更新しました。
2018年3月26日
- マルチユーザーモードのサポート(Lab Designer User Guideを参照)。
- lab_binおよびlab_sysファイルへのビルド依存を削除しました。これらはラボの パラメータ化時にコピーされるようになりました。
- capinout.shを/sbinに移動し、rootとして実行した際に見つけられるようにしました。
2018年3月21日
- CLONEを追加し、同じコンテナの複数インスタンスを許可しました。例えば、 複数の同時学生が共有するラボなどです。
- kali-testラボを適応させ、macvlanとCLONEの例を提供しました。
- capinout.shスクリプトを/sbinにコピーし、sudo su後にrootが見つけられるようにしました。
2018年3月15日
- 外部ホストとの通信用にmacvlanネットワークをサポートしました。
- Kali linuxベースとMetasploitable 2イメージを追加しました(kali-testを参照)。
2018年3月8日
- stop.pyを使用する際にlabnameを必須としないようにしました。
- はぐれネットワークによるエラーを捕捉し、修正方法をユーザーに助言するようにしました。
- NPSでのローカルaptおよびyumリポジトリの使用をサポートしました。
2018年2月21日
- dmz-labを追加しました。
- 「checklocal」を「precheck」に変更し、コマンドの前に実行されることを反映しました。
- inotifyイベントレポートをprecheck.shの使用から分離し、inotify イベントリストにオプションの出力ファイル名を含められるようにしました。
- bashフックをroot操作に拡張し、そのbash_historyをフラッシュするようにしました。
- start.configフィールドのパラメータ化を許可しました。例えば、ランダムなIPアドレスのために。
- systemctlまたは/etc/init.d経由で開始されたサービスの監視をサポートしました。
- タイムスタンプ付きログファイルを、関心のある設定変更によって区切られた範囲に 整理するための時間区切り修飾子を導入しました(dmz-labを参照)。
2018年2月5日
- results.configファイルからのブール値が目標値として扱われるようになりました。
- 成果物の結果を識別するための正規表現サポートを追加しました。
- 代替のDockerレジストリのサポート。テスト用のローカルテストレジストリを含みます。
- ラボとラボマニュアルへの軽微な修正。
- capinout監視フックが終了時に子プロセスを強制終了していませんでした。
- 成果物を収集する前に監視対象プロセスを強制終了するようにしました。
- labtainer.wiresharkをベースラインコンテナとして追加し、dockerfileを整理しました。
2018年1月30日
- snortラボを追加しました。
- ログファイルのタイムスタンプ(例えばsyslogからのもの)をタイムスタンプ付き結果に統合しました。
- 中間のタイムスタンプ付きjson結果ファイルから未定義の結果値を削除しました。
- time_during目標評価操作を変更し、タイムスタンプを結果の目標値に 関連付けるようにしました。
2018年1月24日
- タブ付きウィンドウの使用によりインストラクター側が失敗していました。二重引用符の使用。
- ビルド依存関係を決定する際、_tarディレクトリ内のファイル(.tar以外)を 無視するようにしました。