Labtainers: 도커 기반 사이버 연구실 프레임워크
Labtainers는 50개 이상의 사이버 실습과 자체 실습을 구축할 수 있는 도구를 포함합니다. 단일 VM 어플라이언스를 가져오거나 Linux 시스템에 설치하면 학생들은 프로비저닝 및 관리 설정이 완료된 상태에서 이 실습과 향후 실습을 진행할 수 있습니다.
- Docker 컨테이너를 통한 일관된 실습 실행 환경 및 자동 프로비저닝
- 적당한 성능의 노트북에서도 가능한 다중 구성 요소 네트워크 토폴로지
- 학생 실습 활동 및 진행 상황에 대한 자동 평가
- 개별화된 실습 과제로 정답 공유 방지
Labtainers는 학생들이 자신의 컴퓨터에 설치된 Linux 배포판 및 패키지와 관계없이 컴퓨터 내에서 완전히 실습을 수행할 수 있도록 제어되고 일관된 실행 환경을 제공합니다. Labtainers는 VM 어플라이언스 또는 Docker가 설치된 모든 Linux에서 실행할 수 있습니다. 또한 Student Guide에 설명된 대로 Azure와 같은 클라우드 기반 VM으로도 사용할 수 있습니다.
설치 및 사용 방법은 Student Guide를, 학생 평가는 Instructor Guide를 참조하십시오. 실습 개발 및 사용자 정의는 Designer Guide에 설명되어 있습니다. 프레임워크에 대한 추가 정보는 Papers를 참조하십시오. Labtainers 웹사이트 및 다운로드(Labtainers가 사전 설치된 VM 어플라이언스 포함)는 https://nps.edu/web/c3o/labtainers에서 확인할 수 있습니다.
배포 생성일: 01/06/2026 12:28
리비전: v1.4.4i
커밋: 4f868e24
브랜치: 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 셸을 시작하는 것이 좋습니다.
2026년 1월 6일
- 설치 스크립트에 들여쓰기로 인해 발생한 버그 수정
2025년 12월 30일
- checkwork 보고서 형식을 세로로 변경; headless용 비디오 가이드 추가; 편의 경로 추가
2025년 10월 15일
- packet-introspection 실습 수정: maxmind 지리 위치 데이터베이스 링크 업데이트 및 레거시 데이터베이스 사용 참고 사항 추가
2025년 4월 24일
- pull request #96에 따라 imodule이 누락된 디렉토리를 올바르게 생성하도록 수정
2024년 11월 22일
- Google Cloud VM 교체, 이번에는 컨테이너 내 systemd 오류로 인함
2024년 9월 23일
- 잘못된 Docker 버전을 사용하던 Google Cloud VM 교체
2024년 9월 10일
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" 사용
- headless labtainers에서 소켓 권한 강제 설정
- headless 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). 탭 완성을 최신 버전만 표시하도록 수정 (이슈 #77)
- X11 경쟁 조건으로 인해 CyberCIEGE 실습 설치 실패 (이슈 #76)
- CyberCIEGE readme에 수집된 로그를 $HOME 디렉토리에 저장하도록 안내 추가 (이슈 #75)
- Radius 실습 checkwork에서 "radiusd not running"이 잘못 보고됨, prestop 스크립트 누락 (이슈 #74)
- MACVLAN_EXT 옵션 사용 시 Labedit이 시작 구성 파일을 손상시킴 (이슈 #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가 edit profile에 발행되었는지 확인 추가, 공격자 http 서버가 홈 디렉토리에서 실행되도록 수정
2022년 12월 19일
- 시스템 호출 추적을 소개하는 strace 실습 추가
- /tmp/.X11-unix 디렉토리에 여러 장치가 있는 경우 X11 DISPLAY 값이 잘못됨
- 인수 없이 python/bash/sh 등을 사용할 때 capinout이 충돌하는 문제 수정
2022년 12월 9일
- Azure VM 생성 스크립트가 Azure Community Gallery의 사전 빌드된 Labtainer VM 이미지를 사용하도록 수정
- 클라우드 VM의 터미널이 시작 시 또는 오른쪽 클릭 시 알 수 없는 이유로 충돌. 터미널 시작/중지로 해결 시도
2022년 12월 5일
- 아티팩트 수집 시 기본 사용자가 아닌 사용자의 디렉토리에서 수정된 파일 포함 (예: bash 기록)
- 웹 평가에서 새로운 "other user" 파일을 표시하도록 수정
- 각 컨테이너의 .local/bin 파일을 아티팩트에 포함하여 웹 평가를 통해 강사가 사용할 수 있도록 함
- 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 함수 이름 수정 (이슈 #63)
2022년 8월 4일
- labedit 프로그램이 잘못된 JDK로 다시 빌드되어 이전 JRE에서 labedit 실행 불가
2022년 7월 18일
- IModule 내에서 Ubuntu20 기반 컨테이너 생성 실패 (이슈 #61)
2022년 3월 23일
- tap 잠금 디렉토리 경로 수정; 네트워크 tap을 사용하는 실습 실패 원인
- plc-traffic netmon 컴퓨터에 새로운 grassmarlin Java 환경에 필요한 openjfx 추가
- chown -R이 docker에서 매우 느리므로 lab 시작 속도 향상을 위해 사용하지 않음
- 컨테이너 /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 도입. 사용 방법은 Student Guide 참조
2022년 1월 3일
- setuid-env 실습 수정: 더 나은 평가 추가, simlab 테스트 및 printenv 자식에서 sighup 방지
- 결과 태그 값이 false인 경우 평가 목표 카운트 지시문에서 제외하도록 수정
- 디버그 옵션으로 시작된 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 옵션을 기본값으로 변경, 누적 grader 사용을 위한 -c 옵션 추가
- refresh_mirror가 로컬 릴리스 날짜를 참조하도록 수정하여 DockerHub의 빈번한 쿼리 방지. 각 쿼리는 이미지 풀로 간주되며 이제 수익화를 시도 중
2021년 9월 30일
- bufoverflow 실습 가이드 및 채점 수정: ASLR이 켜진 상태에서 성공을 기대하지 않음, 실행 여부 평가
- 학생이 결과가 없는 경우 웹 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 구성 필드에서 분리하여 별도 값으로 설정
- IModule 명령이 실습이 시작되기 전에 실행되면 실패
2021년 7월 5일
- DISPLAY 환경 변수 관리 오류로 Docker Desktop에서 GUI 애플리케이션 실패
2021년 7월 1일
- Mac에서 headless 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 기능: 실습 모음을 패키징하고 Labpack을 생성하는 makepack 도구
- ubuntu20 사용 시 /sbin 디렉토리 오류 확인 (무음 오류였음)
- 새로운 network-basics 실습
2021년 5월 5일
- 사용자/그룹 관리를 소개하는 새로운 users 실습 도입
- centos 컨테이너 syslog에서 Apparmor 호스트 메시지 억제
2021년 4월 28일
- 새로운 base2 이미지에 man 페이지 누락. 기본 이미지에서 unminimize를 사용하여 복원
- OSSEC 호스트 기반 IDS 실습 도입
2021년 4월 13일
- X11 소켓이 fixlocal을 통해 Wine을 시작하기 전에 재배치되지 않아 CyberCIEGE 실습 실패
2021년 4월 9일
- 간단한 C++ 프로그램에서 GDB를 사용하는 새로운 gdb-cpp 튜토리얼 실습
- 부동 소수점 예외가 stdin/stdout 미러링을 위한 exec_wrap.sh 사용을 노출함
2021년 4월 7일
- Ubuntu 20으로 이동 시 ldap 실습 실패. nscd의 pwd 캐시 문제로 추적됨. ldap을 Ubuntu 20으로 이동
2021년 3월 23일
- RANDOM으로 매개변수화 시 상한이 포함되지 않음
- RANDOM에 선택적 단계 매개변수 추가 (예: 단어 경계 보장)
- 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 웹 인터페이스가 실습 매뉴얼을 표시하지 못함
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 웹 인터페이스 오류 처리
- 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 파일 편집 처리 수정. 레이아웃 수정 및 사용되지 않는 필드 제거
- ssh2, network2 및 wireshark2와 함께 ubuntu20 base2 기본 구성 추가
- 새 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 repo tarball 사용
- 학생 실습 아티팩트 분석을 위한 grader 웹 기능 테스트
- 전체 smoketest에서 로그 지우기 및 removelab 명령어에서 grader 컨테이너 삭제
2020년 12월 1일
- iptables2 실습 평가가 임의 포트가 nmap에 "알 수 없음"으로 표시되는 것에 의존
- 동기화 디렉토리를 사용하여 smoketest가 실습 시작 전에 시작되지 않도록 지연
- Lab designer UI 요소 통합 시작
2020년 10월 13일
- Mac 및 Windows의 Docker Desktop에서 실행하기 위한 headless 구성
- headless 서버 지원, 클라우드 배포용 cloud-config 파일
- headless 구성 테스트 지원
- mynotify가 부팅 시 rc.local이 실행될 때까지 기다리도록 강제
- mynotify 서비스가 출력을 단일 타임스탬프로 병합하는 기능 개선
- stopgrade 스크립트용 Python3
- SimLab 이제 시스템 ps 대신 docker top 사용
2020년 9월 26일
- stoplab 스크립트 정리: 실습이 아닌 컨테이너 무시
- MySQL db의 공유 제어를 위한 db-access 데이터베이스 접근 제어 실습 추가
2020년 9월 17일
- macs-hash 실습에서 X11 설정으로 인해 Leafpad를 실행할 수 없음
- grader 로깅이 잘못된 로그 파일로 리디렉션됨, 이제 instructor.py의 오류 캡처
- 오류가 있는 경우 grader에서 instructor.log를 호스트 로그 디렉토리로 복사
2020년 8월 28일
- 설치 스크립트가 python3-pip를 사용하도록 수정, 손상된 스크립트(getinfo.py 및 pull-all.py) 수정
- 레지스트리 로직 손상, 테스트 시스템이 테스트 레지스트리를 사용하지 않음, 개발 문서 추가
- OWASP 기반 웹 보안 실습을 위한 juiceshop 및 owasp 기본 파일 추가
- check_nets에서 불필요한 sudo 제거
- 자동 평가를 위한 CHECK_OK 문서 지시문 추가
- check_nets가 iptables 및 라우팅 문제를 수정하도록 변경 (지시된 경우)
2020년 8월 12일
- prestop 스크립트에 타임아웃 추가
- dmz-lab에 퀴즈 및 checkwork 추가
- -r 옵션 없이 dmz-lab을 다시 시작하면 ISP 밖으로의 라우팅이 깨짐
- time_delim 결과에 여러 파일 허용August 6, 2020
- X11 소켓이 없을 때 오류 처리 버그
- 퀴즈 질문에 쉼표가 있을 때 파싱 오류
- iptables2 랩에 퀴즈 및 checkwork 추가
July 28, 2020
- 퀴즈 지원 추가 -- 이는 안내용 퀴즈이며, 평가용 퀴즈가 아닙니다. 설계자 가이드를 참조하세요.
- checkwork 명령어와 함께 사용할 현재 상태 평가 추가
July 21, 2020
- 설계자의 경로에 testsets/bin 추가
- 설계자 가이드 수정 및 IModule 단계에 대한 설명 추가
- 로그 항목에서 정규식을 사용하여 시간 범위를 정의하는 RANGE_REGEX 결과 유형 추가
- 랩 시작 시 X11 소켓이 필요한 경우 존재 여부 확인
- mysql용 기본 이미지 추가
- 결과 파싱에서 mysql 로그 타임스탬프 형식 처리
June 15, 2020
- Bird 오픈 소스 라우터가 포함된 새로운 기본 이미지
- bird-bgp Border Gateway Protocol 랩 추가
- bird-ospf Open Shortest Path First 라우팅 프로토콜 랩 추가
- DNS 변경 처리 개선, 일부 사이트에서 일부 컨테이너의 외부 접속이 차단됨
- 인터넷 접속이 불가능한 환경에서 Labtainers 사용에 대한 강사 가이드 섹션 추가
May 21, 2020
- 모든 저장소를 Docker Hub labtainers 레지스트리로 이동
- 지속적인 소프트웨어 설치를 위해 start.config에 정의된 마운트 지원
- IDA의 지속적 설치를 위해 ida 랩 변경 -- 새 이름은 ida2
- DARPA Cyber Grand Challenge의 200개 이상의 취약한 서비스를 탐구하는 cgc 랩 추가
- 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 라이브러리 기반 트래픽 분석 프로그램 개발을 위한 pcap-lib 랩 추가
March 13, 2020
- 랩 중 생성된 트래픽과 함께 GrassMarlin을 사용하기 위한 plc-traffic 랩 추가
- 선택한 네트워크에서 PCAP을 수집하기 위해 "tap" 컨테이너를 추가하는 기능 도입
- 컨테이너 외부 접속 및 USB 드라이브 시뮬레이션을 위한 dummy_hcd 사용에 대한 GNS3 문서 업데이트
- systemd 사용 대신 faux_init을 사용하도록 kali 템플릿 변경
- 배포판(tar 파일)을 box.com으로 이동
- SimLab에서 netstat 사용 시 DNS 조회를 하지 않도록 변경
February 26, 2020
- labtainer 명령어가 랩을 찾지 못하면 update-labtainer.sh 실행을 사용자에게 제안
- 모든 네트워크 트래픽을 보기 위한 네트워크 탭 구성 요소의 예비 지원 추가
- 인터넷 없이 사용할 VM을 준비하기 위해 랩 이미지를 가져오는 스크립트
- nmap-discovery 랩에 사용자 이름 및 비밀번호 제공
February 18, 2020
- :0을 가정하는 대신 호스트(예: VM)에서 DISPLAY 환경 변수 상속
February 14, 2020
- Ghidra 소프트웨어 리버스 엔지니어링 입문 연습 추가
February 11, 2020
- GNS3 환경 내 컨테이너 원격 접속 설명을 위한 가이드 업데이트
- GNS3 내에서 선택된 구성 요소 및 링크 숨기기
- webtrack 랩 가이드의 그림이 표시되지 않음; nmap-ssh에서도 오타
February 6, 2020
- 컨테이너 원격 관리(예: 파일 푸시) 기능 도입
- USB 드라이브 삽입 시뮬레이션을 위한 GNS3 환경 함수 추가
- Docker 빌드 오류 처리 개선
February 3, 2020
- metasploit 랩에서 피해자의 postgresql 서비스가 실행되지 않음
- IModule 설명서 내용을 Lab Designer 가이드에 병합
- 추가 IModule 지원
January 27, 2020
- IModule(강사 개발 랩)에 대한 초기 지원 도입. 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를 포함하여 random.seed 호환성을 깨뜨리는 오래된 VM 어플라이언스 등)을 위해 python2 계속 지원
- 필요시 python2를 선택하는 rebuild.py에 대한 rebuild 별칭 추가
- CentOS 기반 랩 매뉴얼 페이지가 작동하지 않음; 기본 docker 파일 내에서 mandb 사용
- dmz-lab DMZ 네트워크의 넷마스크가 잘못됨(python3에서 발견); 랩 매뉴얼에서 내부 게이트웨이의 IP 주소도 잘못됨
- ghex가 centos 랩에서 제거됨 -- centos 7에서 더 이상 쉽게 지원되지 않음
- file-deletion 랩은 VM 재부팅 없이 완료되어야 하며, 랩 매뉴얼에 명시
- 컨테이너의 기본 게이트웨이를 비활성화하는 start.config에 NO_GW 스위치 추가
- Metasploit 랩, 권한 모드로 실행 시 호스트 VM 충돌; systemd 활성화 시 su에 긴 지연 발생; 따라서 systemd 없이 실행
랩 매뉴얼에서 데이터베이스 사용 제거, 새 no_gw 스위치 사용하도록 구성
- 라이선스/이용약관을 위한 파일 헤더 업데이트; 통합 라이선스 파일 추가
- 기본적으로 테스트 레지스트리 사용을 위해 publish.py 수정, -d를 사용하여 default_registry 강제 사용
- 각 브랜치에 대해 다른 테스트 레지스트리를 사용하고 릴리스 최종 테스트를 위해 premaster 브랜치를 사용하도록 소스 제어 절차 수정
October 9, 2019
- dmz-lab의 dns 구성 요소에서 dnsmasq 제거. 일부 설치에서 bind가 실패하는 원인이었음
October 8, 2019
- 테스트 레지스트리 설정의 구문 오류; 큰 파일에 대한 랩 디자이너 정보; bigexternal.txt 파일 가져오기
September 30, 2019
- 일부 사용자에게 DockerHub 레지스트리 검색이 다시 실패. json에 대한 html 접두사 무시
September 20, 2019
- onewayhash 평가는 학생이 선택한 파일에서 hmac 작업을 허용해야 함
September 5, 2019
- metasploit 랩 재빌드, metasploit-framework에 버그가 있음. 그리고 "treataslocal" 파일이 svn에서 이동 시 누락됨. metasploit 랩 매뉴얼의 오타 수정
August 30, 2019
- 컨테이너 디렉터리 존재 확인 되돌리기, 항상 존재하지는 않음
August 29, 2019
- 랩 이미지 풀이 docker hub에서 실패, github 또는 curl의 변경 때문? 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
May 2, 2019
- Acl 랩의 bobstuff.txt 권한 수정. fixlocal.sh에서 명시적 chmod 사용
- 학생 가이드 개정: 본문에서 stop 및 -r 옵션 사용 명확히 설명
March 9, 2019
- checkwork 함수가 컨테이너를 재사용하여 학생들이 이전 랩 작업의 아티팩트를 제거하지 못하도록 함
- symkey 랩에 BMP 이미지 형식을 설명하는 부록 추가
February 22, 2019
- vpn 및 vpn2 랩에서 http 서버 시작 실패. 재작업될 때까지 해당 랩에서 자동 평가 제거
January 7, 2019
- gdblesson 자동 평가 수정, 최소한 작동하게 함
January 27, 2019
- routing-basics2 랩 매뉴얼 수정 및 라우팅 수정하여 내부 웹 서버에 대한 외부 접속 활성화
December 29, 2018
- routing-basics2 수정, routing-basics와 동일한 문제 및 게이트웨이 resolv.conf의 잘못된 IP 주소
December 5, 2018
- routing-basics 랩 수정, isp 및 게이트웨이 구성 요소에서 DNS 확인이 손상됨
November 14, 2018
- backups2의 아카이브 머신에서 /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 파생 상품이 waitparam 및 force를 위해 lamp.xtr을 사용하도록 하고 httpd가 완료될 때까지 기다리도록 함
September 7, 2018
- CyberCIEGE를 랩으로 추가
- read_pre.txt 정보를 이미지 풀 전에 표시하고 중단 기회 제공
September 5, 2018
- gradelab 함수에 sakai 대량 다운로드 처리 복원
- 사용하지 않는 강사 스크립트 제거
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를 svn 대신 git 사용하도록 수정
- 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
- fixlocal.sh 스크립트가 waitparam을 전제 조건으로 하는 서비스를 시작하는 경우 waitparam.service를 차단 해제(플래그 디렉터리 생성)해야 한다는 문서 추가
- PLC 애플리케이션 방화벽 및 화이트리스트 연습을 위한 plc-app 랩 추가
July 25, 2018
- 목표 처리에 string_contains 연산자 추가
- formatstring 랩 평가 수정: 유출된 비밀이 항상 표시된 문자열의 끝에 있지 않을 수 있음을 고려
July 24, 2018
- SSH Agent 랩 추가 (ssh-agent)
July 20, 2018
- 오프라인 빌드 지원, 선택적으로 모든 이미지 풀 건너뛰기
- Dockerfile 템플릿에 apt/yum 저장소 복원 복원
- 인증 오류를 피하기 위해 Docker 레지스트리 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 기반 버전으로 대체됨
- 레지스트리의 Labtainer 컨테이너 이미지가 이제 기본 이미지 ID로 태그되고 기본 이미지를 반영하는 레이블을 가짐
- 특정 설치는 보유한 기본 이미지와 일치하는 이미지를 풀하여 사용함
- VM 이미지를 사용하는 경우, 당사 웹사이트의 최신 VM 이미지로 교체하는 것이 좋음
- 새 랩은 최신 기본 이미지를 다운로드하지 않으면 실행되지 않음; 이로 인해 VM에 여러 버전의 큰 기본 이미지(각 500MB 이상)가 저장될 수 있음
- 랩 중지 시 실행 중이던 프로세스에서 아티팩트가 손실됨 -- capinout 프로세스를 제대로 종료하지 못함
June 27, 2018
- Ubuntu systemd 이미지 지원 추가
- labtainer-student/bin에서 SimLab.py의 이전 복사본 제거
- apt 및 yum 소스를 /var/tmp로 이동
- 평가에서 "boolean"과 "count_greater" 사용의 차이점 명확화
- start.config의 Add-HOST를 네트워크의 모든 구성 요소를 포함하도록 확장
- 기존 컨테이너의 복사본을 기반으로 컨테이너를 추가하는 옵션을 new_lab_setup.py에 추가
June 21, 2018
- root에 대한 DISPLAY 환경 설정
- svn status 출력의 빌드 종속성 처리 수정
- radius 랩 추가
- SimLab append 버그 수정
- new_lab_setup.py로 파일 이름 변경 시 적절한 경우 svn 사용
June 19, 2018
- 여러 탭이 있는 터미널 생성 시 start.conf에 정의된 컨테이너 순서 유지
- 설계자 매뉴얼 명확화: 평가 설정 파일의 경로 식별
- 강사에게 이메일 제공 요청 프롬프트 제거
- 버전 번호 확인 시 오류 검사 잘못됨
- 평가 json에 랩 시작 및 재시작의 타임스탬프 포함
- 양방향 인증 및 인증서 생성을 포함하는 SSL 랩 추가
June 14, 2018
- 매개변수화에 진단 추가, 일부 설치가 실패하는 이유 추적
- 컨테이너가 이미 생성된 경우 매개변수화되었는지 확인, 그렇지 않으면 중단하여 손상되거나 반쯤 만들어진 컨테이너 방지
- 프로그램 버전 번호 수정: svn HEAD 사용
June 15, 2018
- xterms에 나타난 일반 텍스트 지침을 pdf 파일로 변환
- 아직 풀되지 않은 이미지의 버전 처리 버그 수정
- 생성되었지만 매개변수화되지 않은 컨테이너 발견 시 사용자에게 "-r" 옵션으로 랩 재시작 요청
- 설계자 유틸리티 추가: rm_svn.py -- 제거된 파일이 이미지 재빌드를 트리거하도록 함
June 13, 2018
- Ubuntu 18 시스템에 xterm 설치
- gnome-terminal 탭 처리의 새 버전에서 발생한 손상 해결
June 11, 2018
- 버전 확인 추가: 이미지와 프레임워크 비교
- 다양한 랩 매뉴얼 명확화
June 2, 2018
- Ubuntu 18에 설치할 때 docker-ce 대신 docker.io 사용
- capinout이 "sudo su" 모니터링 명령어 뒤에 권한 상승되지 않은 사용자 명령어가 올 때 충돌 발생
- routing 및 resolv.conf 설정을 fixlocal.sh 대신 /etc/rc.local로 이동하여 컨테이너 시작/중지 시에도 유지되도록 함
May 31, 2018
- 줄 바꿈 없이 터미널에서 텍스트 줄바꿈을 유발하는 Docker 버그 해결
- 파이프를 고려하도록 COMMAND_COUNT 확장
- 원격 서버로의 백업 및 전체 파티션 백업을 포함하는 백업 랩의 새 버전 생성
- sshlab 지침을 ssh-copy-id 유틸리티를 사용하도록 변경
- CentOS에서 SSH 로그인을 허용하기 위해 parameterize.sh에서 /run/nologin 파일 삭제
May 30, 2018
- new_lab_setup.py 확장: 사용할 기본 이미지 식별 허용
- 중앙 집중식 로깅을 포함하는 centos-log의 새 버전 생성
- 평가 검증이 "time_not_during" 옵션을 수락하지 않음
- Docker 컨테이너에서 Labtainers 관리를 위한 Labtainer Master 통합 시작
May 25, 2018
- 다양한 서비스에서 10초 대기 제거. xinetd 응답을 지연시켜 자동화된 테스트 중단
- snort 랩 채점 수정: 알람에 "CONFIDENTIAL"만 필요하도록 함. 랩에서 사용하지 않는 파일 제거
- 프로그램이 랩 중지 시 실행 중이던 경우 프로그램 종료 시간이 기록되지 않음
May 21, 2018
- retlibc 채점 수정: 중복 목표 제거, 자동 평가 실패 중
- 개별 랩 및 랩 템플릿에서 mynotify.py 복사본 제거, 이미 lab_sys/sbin의 일부이지만 acl 랩 수정 사항이 업데이트되지 않음
May 18, 2018
- exec_wrap에서 신호 메시지 마스킹하여 segv 오류 메시지가 올바르게 표시되도록 함
- capinout이 때때로 stdout을 잃음, cmd 종료 시 명령어 stdout 확인
- formatstring 채점 수정: segmentation fault 메시지 캐치
- SimLab에 type_function 기능 추가: 스크립트의 stdout을 입력 (formatstring simlab 참조)
- SimLab에서 작은따옴표/큰따옴표 결합 제한 제거
- SimLab에 window_wait 지시문 추가: 지정된 제목의 창을 찾을 때까지 일시 중지
- 물리적 세계 터미널의 제목을 상태 반영하도록 plc 랩 수정, 이는 테스트를 더 쉽게 만듦
- bufoverflow 랩 매뉴얼 링크 수정
May 15, 2018
- 회귀 테스트 및 랩 개발을 위한 SimLab 도구 사용에 대한 부록 추가: 랩 수행 시뮬레이션
- SimLab에 wait_net 함수 추가: 선택한 네트워크 연결이 종료될 때까지 일시 중지
- acl 자동 평가를 FILE_REGEX로 변경하여 여러 줄 일치 지원
- xsite 랩에 대한 SimLab 테스트
May 11, 2018
- home.tar에서 발견된 파일을 강제 수집하기 위한 "noskip" 파일 추가, Firefox places.sqlite 검색에 필요
- sqlite 데이터베이스를 추출 전 write ahead buffer와 병합
- symkeylab 랩 매뉴얼 수정
- symkeylab 및 pubkey에 대한 채점 추가
- simlab 도구 개선: include 지원, 창 이름 지정 수정
May 9, 2018
- file-deletion 랩의 매개변수화 수정. 랩 매뉴얼의 오류 수정
- Python 스크립트에서 shell=True 사용을 대체하여 프로세스 감소 및 PID 추적 허용
- backups, pass-crack 및 macs-hash 매뉴얼 정리
May 8, 2018
- 경쟁 조건 처리: gnome-terminal이 xterm 지시 터미널이 명령어를 실행하기 전에 docker 명령어를 실행하지 못하도록 함
- instuctor가 "-d"로 시작한 랩을 중지할 때 오류를 표시하지 않음
- nmap-ssh 채점 변경: 랩의 의도를 더 잘 반영
- olberger가 github에서 제안한 여러 문서 및 스크립트 수정
May 7, 2018
- C 기반 capinout 프로그램을 사용하여 이전 capinout.sh 대신 stdin 및 stdout 캡처. trunk/src-tool/capinout 참조. 모니터링되는 프로그램을 중단하는 ctrl-C 사용 및 telnet/ssh에서 비밀번호 표시와 관련된 제한 제거
- saki bulk_download zip 처리 지원 포함: 별도로 제출된 보고서 추출 및 누락된 제출 요약
- 사용자 제공 이메일이 인쇄 가능한 문자인지 확인하는 검사 추가
- 채점 시 사용자 제공 이메일이 zip 파일 이름과 일치하지 않으면 결과를 채점하되, 표에 cheating을 나타내는 노트 포함. 학생이 이메일 주소에 쓰레기를 입력하는 경우 복구 필요
- telnetlab 채점 변경: tcpdump 출력에서 비밀번호를 찾지 않음 -- capinout 수정으로 서버에 문자 단위 전송이 올바르게 처리됨
- install-docker.sh의 오타 수정 및 해당 스크립트에서 sudo를 사용하여 docker dns 설정 변경
April 26, 2018
- 랩 시작 시 "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" 매뉴얼 페이지 추가
- 학생으로부터 docs 파일 수집을 방해하는 최근 버그 수정
- smoke-tests 수정: 학생별 결과 줄만 비교, 공백 제거April 20, 2018
- denyhosts 서비스가 처음에 시작되지 않아 student_startup.sh로 시작을 이동.
- 모든 faux_init 서비스를 파라미터화 이후로 이동 -- 컨테이너 두 번째 부팅 시 rsyslog가 시작되지 않음.
April 19, 2018
- acl 실습에서 트로이 목마 단계의 성능 평가가 제대로 이루어지지 않음.
- 기본적으로 학생 문서 수집.
- denyhost 실습이 denyhosts(또는 tcp 래퍼?)가 iptables를 수정하는 것을 반영하도록 변경. 또한, denyhosts 서비스가 일부 경우에 시작되지 않음.
- Labtainers 업데이트 시, 아카이브에 있는 파일보다 최신인 파일을 덮어쓰지 않음 -- 학생 실습 보고서 보존.
April 12, 2018
- 실습 목표의 문서화를 추가하고, 강사가 실습을 시작할 때 강사에게 이를 표시.
- 프로그램이 treataslocal에 있을 때 precheck 함수의 올바른 사용, capintout.sh에 전체 프로그램 경로 전달.
- 이미지 빌드 시가 아닌 런타임에 instr_config 파일 복사.
- 자동 평가 디버깅에 관한 Designer Guide 섹션 추가.
- 실습 보고서 파일 이름의 대소문자 오류.
- 불필요한 chown 함수로 인해 instructor.py가 가끔 충돌.
- 실습 자동 테스트 지원 (SimLab 및 smoketest 참조).
- testsets 및 distrib을 trunk 아래로 이동.
April 5, 2018
- Firefox 프로필을 수정하여 "Firefox를 오랫동안 사용하지 않았습니다..." 메시지 제거.
- 레지스트리에서 불필요한 풀 제거 -- 대신 Docker Hub API를 통해 이미지 날짜 가져오기.
March 28, 2018
- 시스템 파일에 "docker cp" 대신 명시적 tar 사용 (Docker는 링크를 따르지 않음.)
- backups 실습 수정: 별도 파일 시스템 사용 및 매뉴얼 업데이트.
March 26, 2018
- 다중 사용자 모드 지원 (Lab Designer User Guide 참조).
- lab_bin 및 lab_sys 파일에 대한 빌드 종속성 제거. 이제 실습 파라미터화 중에 복사됨.
- capinout.sh를 /sbin으로 이동하여 root로 실행 시 찾을 수 있도록 함.
March 21, 2018
- CLONE 추가: 동일한 컨테이너의 여러 인스턴스 허용 (예: 여러 동시 학생이 공유하는 실습).
- kali-test 실습을 macvlan 및 CLONE의 예시로 적용.
- capinout.sh 스크립트를 /sbin에 복사하여 sudo su 후 root가 찾을 수 있도록 함.
March 15, 2018
- 외부 호스트와의 통신을 위한 macvlan 네트워크 지원.
- Kali Linux 베이스 및 Metasploitable 2 이미지 추가 (kali-test 참조).
March 8, 2018
- stop.py 사용 시 실습 이름 불필요.
- 잘못된 네트워크로 인한 오류를 포착하고 사용자에게 수정 방법 안내.
- NPS의 로컬 apt 및 yum 레포지토리 사용 지원 추가.
February 21, 2018
- dmz-lab 추가.
- "checklocal"을 "precheck"로 변경하여 명령 실행 전에 실행됨을 반영.
- inotify 이벤트 보고를 precheck.sh 사용과 분리, inotify 이벤트 목록에 선택적 출력 파일 이름 포함 허용.
- bash 훅을 root 작업으로 확장, 해당 bash_history 플러시.
- start.config 필드의 파라미터화 허용 (예: 무작위 IP 주소).
- systemctl 또는 /etc/init.d를 통해 시작된 서비스 모니터링 지원.
- 시간 구분 한정자 도입: 타임스탬프 로그 파일을 관심 있는 구성 변경으로 구분된 범위로 구성 (dmz-lab 참조).
February 5, 2018
- results.config 파일의 부울 값이 이제 목표 값으로 처리됨.
- 아티팩트 결과 식별을 위한 정규 표현식 지원 추가.
- 대체 Docker 레지스트리 지원 (로컬 테스트 레지스트리 포함).
- 실습 및 실습 매뉴얼의 여러 수정.
- capinout 모니터링 훅이 종료 시 하위 프로세스를 종료하지 않음.
- 아티팩트 수집 전에 모니터링 중인 프로세스 종료.
- labtainer.wireshark를 기본 컨테이너로 추가, Dockerfiles 정리.
January 30, 2018
- snort 실습 추가.
- syslog 등의 로그 파일 타임스탬프를 타임스탬프 결과에 통합.
- 중간 타임스탬프 JSON 결과 파일에서 정의되지 않은 결과 값 제거.
- time_during 목표 평가 작업을 수정하여 타임스탬프를 결과 목표 값에 연결.
January 24, 2018
- 탭 창 사용으로 인해 강사 측이 실패함, 큰따옴표 사용.
- 빌드 종속성 결정 시 _tar 디렉터리의 파일(.tar 제외) 무시.