Volver a actualizaciones
Nuevo releaseSep 12, 2026

Labtainers v1.4.4n

Labtainers: Un marco de laboratorio cibernético basado en Docker

Compartir

Labtainers: Un framework de laboratorio cibernético basado en Docker

Labtainers incluye más de 50 ejercicios de laboratorio cibernético y herramientas para crear los tuyos propios. Importa una única VM appliance o instálalo en un sistema Linux y tus estudiantes habrán terminado con el aprovisionamiento y la configuración administrativa, para estos y futuros ejercicios de laboratorio.

  • Entornos de ejecución de laboratorio consistentes y aprovisionamiento automatizado mediante contenedores Docker
  • Topologías de red multicomponente en un portátil de rendimiento modesto
  • Evaluación automatizada de la actividad y el progreso del estudiante en el laboratorio
  • Ejercicios de laboratorio individualizados para desalentar el intercambio de soluciones

Labtainers proporciona entornos de ejecución controlados y consistentes en los que los estudiantes realizan los laboratorios completamente dentro de los confines de su computadora, independientemente de la distribución de Linux y los paquetes instalados en la computadora del estudiante. Labtainers se ejecuta en nuestra [VM appliance][vm-appliancee], o en cualquier Linux con Docker instalado. Y Labtainers está disponible como VMs basadas en la nube, por ejemplo, en Azure como se describe en la Student Guide.

Consulta la Student Guide para la instalación y el uso, y la Instructor Guide para la evaluación de los estudiantes. El desarrollo y la personalización de ejercicios de laboratorio se describen en la Designer Guide. Consulta los Papers para obtener información adicional sobre el framework. El sitio web de Labtainers, y las descargas (incluidas las VM appliances con Labtainers preinstalado) están en https://nps.edu/web/c3o/labtainers.

Distribution created: 09/11/2026 11:33
Revision: v1.4.4n
Commit: 9f1012dc
Branch: master

Content

Distribution and Use

Guide to directories

Support

Release notes

Distribution and Use

Please see the licensing and distribution information in the docs/license.md file.

Guide to directories

  • scripts/labtainers-student -- the work directory for running and testing student labs. You must be in that directory to run student labs.

  • scripts/labtainers-instructor -- the work directory for running and testing automated assessment and viewing student results.

  • labs -- Files specific to each of the labs

  • setup_scripts -- scripts for installing Labtainers and Docker and updating Labtainers

  • docs -- latex source for the labdesigner.pdf, and other documentation.

  • UI -- Labtainers lab editor source code (Java).

  • headless-lite -- scripts for managing Docker Workstation and cloud instances of Labtainers (systems that do not have native X11 servers.)

  • scripts/designer -- Tools for building new labs and managing base Docker images.

  • config -- system-wide configuration settings (these are not the lab-specific configuration settings.

  • distrib -- distribution support scripts, e.g., for publishing labs to the Docker hub.

  • testsets -- Test procedures and expected results. (Per-lab drivers for SimLab are not distributed).

  • pkg-mirrors -- utility scripts for internal NPS package mirroring to reduce external package pulling during tests and distribution.

Support

Use the GitHub issue reports, or email me at [email protected]

Also see https://my.nps.edu/web/c3o/support1

Release notes

The standard Labtainers distribution does not include files required for development of new labs. For those, run ./update-designer.sh from the labtainer/trunk/setup_scripts directory.

The installation script and the update-designer.sh script set environment variables, so you may want to logout/login, or start a new bash shell before using Labtainers the first time.

Jauary 6, 2026

  • Fixed bug introduced into installation script due to indents.

December 30, 2025

  • Modified checkwork report format to be vertical; video guide for headless; convenience paths

October 15, 2025

  • Revised packet-introspection lab to update link for maxmind geo location database and note use of legacy database.

April 24, 2025

  • Fixed imodule to properly create missing directories per pull request #96

November 22, 2024

  • Replaced google cloud VM, this time due to a failure of systemd within containers.

September 23, 2024

  • Replaced google cloud VM, which was using the wrong Docker version

September 10, 2024

  • Typo in creation of imodule path

July 26, 2024

  • Modify capinout to not use grantpt clib function, which now seems to crash when run from a container.

July 22, 2024

  • Add a base container for Ubuntu22 and changes to framework to support that.

July 5, 2024

  • Migrate to Ubuntu 24 as the VM appliance
  • The docker pyhton package uses a broken python http library, requires package downgrade.
  • Use virtual python environment to avoid Ubuntu lockdown of python packages.
  • Add boot parameter to allow sharing systemd between containers and the VM.
  • Redirect error messages from broken tar utility on updates.
  • Ubuntu update breakage for msc packages (see update-ubuntu.sh) for version 18 VMs
  • The docker-compose command is broken, use "docker compose"
  • Force socket permissions in headless labtainers.
  • Update headless Labtainers to use Ubuntu 24

November 27, 2023

  • Add Google Cloud Platform option for ubuntu22 on ec2 machine.

September 18, 2023

  • Previous fix implementation was flawed.

August 8, 2023

  • Handle change to DockerHub image json format. Thanks Kees!

April 17, 2023

  • Force use latest lab version, e.g., iptables2 intead of iptables. Fix tab completion to only display latest. (Issue #77)
  • CyberCIEGE lab installation was failing due to X11 race condition. (Issue #76)
  • Note in CyberCIEGE readme to direct students to save collected logs in $HOME directory. (Issue #75)
  • Radius lab checkwork was incorrectly reporting "radiusd not running", missing prestop script. (Issue #74)
  • Labedit corrupted the start configuration file when the MACVLAN_EXT option was used. (Issue #73)

February 1, 2023

  • Bash history for non-default users was not being saved. January 26, 2023
  • Modified powershell scripts for gcloud to use the selected zone to qualify VM names. January 4, 2023
  • Containers using systemd were failing on newer systemd present in Ubuntu 22
  • Add --zone parameter to google cloud scripts, with value derived from the set_defaults script. December 21, 2022
  • Fix xforge results criteria to not expect pathname, and add check to see if POST issued to edit profile. And fix attacker http server to run from the home directory. December 19, 2022
  • Add strace lab to introduce system call tracing.
  • X11 DISPLAY value was incorrect if multiple devices in the /tmp/.X11-unix directory.
  • Use of python/bash/sh/etc with no arguments was causing capinout to crash. December 9, 2022
  • Modify Azure vm creation script to use a prebuilt Labtainer VM image from the Azure Community Gallery.
  • Terminals on cloud VMs crash for unknown reasons during startup or right click on the terminal. Attempt to address by start/stop of a terminal. December 5, 2022
  • When collecting artifacts, include modified files from directories of non-default users, e.g., their bash histories.
  • Alter web assessment to display the new "other user" files.
  • Include files from .local/bin on each container in artifacts. Intended to make these available to instructor via web assesment.
  • In the ACL lab, include th /shared_data/bob/fun file in the results for reference by the instructor.
  • Catch use of "sh" or "bash" from command line and skip when parsing for given command, e.g., as done with "time" or "sudo".
  • In the tcpip lab, could not ssh into the server during subsequent lab sessions, the /run/sshd directory was not being remade. November 16, 2022
  • Fix path to Snort Manual in snort lab.
  • In ossec manual,fix path to manage_agents October 12, 2022
  • Google cloud remove background operator from gnome-terminal command, still crashes on right click but seems stable after running a newterm.sh. October 10, 2022
  • Fix Google cloud newterm.sh; expand that boot disk to 30G. September 20, 2022
  • Note user id and password for TCP/IP lab in the lab manual. August 30, 2022
  • Use the X11 socket name when setting DISPLAY from a container's .profile August 9, 2022
  • Fix name of processValueMax function in grader. Issue #63

August 4, 2022

  • The labedit program was rebuilt with the wrong JDK, preventing older JREs from running labedit

July 18, 2022

  • Creation of Ubuntu20-based containers was failing within IModules. Issue #61.

March 23, 2022

  • Fix path to tap lock directory; was causing failure of labs using network taps
  • Update plc-traffic netmon computer to have openjfx needed for new grassmarlin in java environment
  • Speed up lab startup by avoiding chown -R, which is very slow in docker.
  • Another shot at avoiding deletion of the X11 link in container /tmp directory.
  • Fix webtrack counting of sites visited and remove live-headers goal, that tool is no longer available. Clarified some lab manual steps.

March 2, 2022

  • Add new ssh-tunnel lab (thanks GWD!)
  • Fix labedit failure to reflect X11 value set by new_lab_setup
  • Add option to not parameterize a container

February 23, 2022

  • labedit was corrupting start.config after addition of new containers
  • Incorrect path to student guide in the student README file; dynamically change for cloud configs
  • Incorrect extension to update-labtainer.sh
  • Msc guide enahancements
  • Update the ghidra lab to include version 10.1.2 of Ghidra

February 15, 2022

  • Revert Azure cloud support to provision for each student. Azure discourages sharing resources.

January 24, 2022

  • Azure cloud now uses image stored in an Azure blob instead of provisioning for each student.
  • Added support for Google Cloud.

January 19, 2022

  • Introduce Labtainers on the Azure cloud. See the Student Guide for details on how to use this.

January 3, 2022

  • Revise setuid-env lab to add better assessment; simlab testing and avoid sighup in the printenv child.
  • Fix assessment goal count directive to exclude result tag values of false.
  • Do not require labname when using gradelab -a with a grader started with the debug option.
  • Revise capinout (stdin/stdout mirroring) to handle orphaning of command process children, improved documentation and error handling.
  • Added display of progress bars of docker images being pulled when a lab is first run.
  • User feedback on progress of container initialization.
  • The pcap-lib lab was missing a notify file needed for automated assessment; Remove extraneous step from Lab Manual.

November 23, 2021

  • Disable ubuntu popup errors on test VM.
  • Fix handling of different DISPLAY variable formats.

October 22, 2021

  • Revise the tcpip lab guide to note a successful syn-flood attack is not possible. Fix its automated assessment and add SimLab scripts.
  • Change artifact file extension from zip to lab, and add a preamble to confuse GUI file managers. Students were opening the zip and submitting its guts.
  • Make the -r option to gradelab the default, add a -c option for cumulative use of grader.
  • Modify refresh_mirror to refer to the local release date to avoid frequent queries of DockerHub. Each such query counts as an image pull, and they are now trying to monetize those.

September 30, 2021

  • Change bufoverflow lab guide and grading to not expect success with ASLR turned on, assess whether it was run.
  • Error handling for web grader for cases where student lacks results.
  • Print warning when deprecated lab is run.
  • Change formatstring grading to remove unused "_leaked_secret" description and clarify value of leaked_no_scanf.
  • Also change formatstring grading to allow any name for the vulnerable executable.

September 29, 2021

  • Gradelab error handling, reduce instances of crashes due to bad zip files.
  • Limit stdout artifact files to 1MB

September 17, 2021

  • Ghidra lab guide had wrong IP address, was not remade from source.

September 14, 2021

  • Example labs for LDAP and Mariadb using SSL. Intended as templates for new labs.
  • Handle Mariadb log format
  • Add per-container parameters to limit CPU use or pin container to CPU set.
  • Labpack creation now available via a GUI (makepackui).
  • Tab completion for the labtainer, labpack and gradelab commands.
  • New parallel computing lab ``parallel'' using MPI.

August 3, 2021

  • Add a "WAIT_FOR" configuration option to cause a container to delay parameterization until another container completes its parameterization.
  • Support for Mariadb log formats in results parsing
  • Remove support for Mac and Windows use of Docker Desktop. That product is too unstable for us to support.
  • Supress stderr messages when user uses built-in bash commands such as "which".
  • Bug fixes to makepack/labpack programs.

July 19, 2021

  • Add a DNS lab to introduce the DNS protocol and configuration.
  • Revised VirtualBox appliance image to start with the correct update script.
  • Split resolv.conf nameserver parameter out of the lab_gw configuration field into its own value.
  • IModule command failed if run before any labs had been started.

July 5, 2021

  • Errors in DISPLAY env variable management broke GUI applications on Docker Desktop.

July 1, 2021

  • Support Mac package installation of headless Labtainers.
  • The routing-basics lab automated assessment failed due to lack of treataslocal files
  • Correct typos and incorrect addresses in routing-basics lab, and fix automated assessment.
  • Assessment of pcapanalysis was failing.

June 10, 2021

  • All lab manual PDFs are now in the github repo
  • Convert vpnlab and vpnlab2 instructions to PDF lab manuals.

May 25, 2021

  • Add searchable keywords to each lab. See "labtainer -h" for usage.
  • Expand routing-basics lab and lab manual
  • Remove routing-basics2 lab, it is now redundant.
  • sudo on some containers failed because hostnames remove underscores, leading to mismatch with the hosts file. Fix with extra entry in the hosts file with container name sans underscore.
  • New Labpack feature to package a collection of labs, and makepack tool to create Labpacks.
  • Error check for /sbin directory when using ubuntu20 -- would be silently fatal.
  • New network-basics lab

May 5, 2021

  • Introduce a new users lab to introduce user/group management
  • Surpress Apparmor host messages in centos container syslogs

April 28, 2021

  • New base2 images lacked man pages. Used unminimize to restore them in the base image.
  • Introduce a OSSEC host-based IDS lab.

April 13, 2021

  • CyberCIEGE lab failed because X11 socket was not relocated prior to starting Wine via fixlocal.

April 9, 2021

  • New gdb-cpp tutorial lab for using GDB on a simple C++ program.
  • Floating point exceptions were revealing use of exec_wrap.sh for stdin/stdout mirroring.

April 7, 2021

  • ldap lab failed when moved to Ubuntu 20. Problem traced to problem with nscd cache of pwd. Move ldap to Ubuntu 20

March 23, 2021

  • Parameterizing with RANDOM did not include the upper bound.
  • Add optional step parameter to RANDOM, e.g., to ensure word boundaries.
  • db-access lab: add mysql-workbench to database computer.
  • New overrun lab to illustrate memory references beyond bounds of c data structures.
  • New printf lab to introduce memory references made by the printf function.

March 19, 2021

  • gradelab ignore makdirs error, problem with Windows rmtree on shared folders.
  • gradelab handle spaces in student zip file names.
  • gradelab handle zip file names from Moodle, including build downloads.

March 12, 2021

  • labedit UI: Remove old wireshark image from list of base images.
  • labedit UI: Increase some font sizes.
  • grader web interface failed to display lab manuals if the manual name does not follow naming conventions.

March 11, 2021

  • labedit UI add registry setting in new global lab configuration panel.

March 10, 2021

  • labedit UI fixes to not build if syntax error in lab
  • labedit UI "Lab running" indicator fix to reflect current lab.

March 8, 2021

  • Deprecate use of HOST_HOME_XFER, all labs use directory per the labtainer.config file.
  • Add documentation comment to start.config for REGISTRY and BASE_REGISTRY

March 5, 2021

  • Error handling on gradelab web interface when missing results.
  • labedit addition of precheck, msc bug fixes.

February 26, 2021

  • The dmz-example lab had errors in routing and setup of dnsmasq on some components.

February 18, 2021

  • UI was rebuilding images because it was updating file times without cause
  • Clean up UI code to remove some redundant data copies.

February 14, 2021

  • Add local build option to UI
  • Create empty faux_init for centos6 bases.

February 11, 2021

  • Fix UI handling of editing files. Revise layout and eliminate unused fields.
  • Add ubuntu20 base2 base configuration along with ssh2, network2 and wireshark2
  • The new wireshark solves the prolem of black/noise windows.
  • Map /tmp/.X11-unix to /var/tmp and create a link. Needed for ubuntu20 (was deleting /tmp?) and may fix others.

February 4, 2021

  • Add SIZE option to results artifacts
  • Simplify wireshark-intro assessment and parameterization and add PDF lab manual.
  • Provide parameter list values to pregrade.sh script as environment variables
  • enable X11 on the grader
  • put update-designer.sh into users path.

January 19, 2021

  • Change management of README date/rev to update file in source repo.
  • Introduce GUI for creating/editing labs -- see labedit command.

December 21, 2020

  • The gradelab function failed when zip files were copied from a VirtualBox shared folder.
  • Update Instructor Guide to describe management of student zip files on host computers.

December 4, 2020

  • Transition distribution of tar to GitHub releaese artifacts
  • Eliminate separate designer tar file, use git repo tarball.
  • Testing of grader web functions for analysis of student lab artifacts
  • Clear logs from full smoketest and delete grader container in removelab command.

December 1, 2020

  • The iptables2 lab assessment relied on random ports being "unknown" to nmap.
  • Use a sync diretory to delay smoketests from starting prior to lab startup.
  • Begin integrating Lab designer UI elements.

October 13, 2020

  • Headless configuraions for running on Docker Desktop on Macs & Windows
  • Headless server support, cloud-config file for cloud deployments
  • Testing support for headless configurations
  • Force mynotify to wait until rc.local runs on boot
  • Improve mynotify service ability to merge output into single timestamp
  • Python3 for stopgrade script
  • SimLab now uses docker top rather than system ps

September 26, 2020

  • Clean up the stoplab scripts to ignore non-lab containers
  • Add db-access database access control lab for controlles sharing of a mysql db.

September 17, 2020

  • The macs-hash lab was unable to run Leafpad due to the X11 setting.
  • Grader logging was being redirected to the wrong log file, now captures errors from instructor.py
  • Copy instructor.log from grader to the host logs directory if there is an error.

August 28, 2020

  • Fix install script to use python3-pip and fix broken scripts: getinfo.py and pull-all.py
  • Registry logic was broken, test systems were not using the test registry, add development documentation.
  • Add juiceshop and owasp base files for OWASP-based web security labs
  • Remove unnecessary sudos from check_nets
  • Add CHECK_OK documentation directive for automated assessment
  • Change check_nets to fix iptables and routing issues if so directed.

August 12, 2020

  • Add timeout to prestop scripts
  • Add quiz and checkwork to dmz-lab
  • Restarting the dmz-lab without -r option broke routing out of the ISP.
  • Allow multiple files for time_delim results.6 de agosto de 2020
  • Error en el manejo de errores cuando falta el socket X11
  • Las comas en las preguntas del cuestionario provocaban errores de análisis
  • Añadir cuestionario y checkwork al laboratorio iptables2

28 de julio de 2020

  • Añadir soporte de cuestionarios -- estos son cuestionarios de orientación, no cuestionarios de evaluación. Consulte la guía del diseñador.
  • Añadir evaluación del estado actual para su uso con el comando checkwork.

21 de julio de 2020

  • Añadir testsets/bin a la ruta del diseñador
  • Correcciones y explicaciones de la guía del diseñador para los pasos de IModule.
  • Añadir el tipo de resultado RANGE_REGEX para definir rangos de tiempo usando expresiones regulares en las entradas de registro.
  • Comprobar que el socket X11 existe si es necesario al iniciar un laboratorio.
  • Añadir imagen base para mysql
  • Manejar los formatos de marca de tiempo de los registros de mysql en el análisis de resultados.

15 de junio de 2020

  • Nueva imagen base que contiene el enrutador de código abierto Bird
  • Añadir el laboratorio bird-bgp de Border Gateway Protocol.
  • Añadir bird-ospf, protocolo de enrutamiento Open Shortest Path First.
  • Mejorar el manejo de cambios de DNS, el acceso externo desde algunos contenedores estaba bloqueado en algunos sitios.
  • Añadir una sección a la Guía del Instructor sobre el uso de Labtainers en entornos sin acceso a Internet.

21 de mayo de 2020

  • Mover todos los repositorios al registro labtainers de Docker Hub
  • Soportar montajes definidos en start.config para permitir instalaciones de software persistentes
  • Cambiar el laboratorio ida para usar una instalación persistente de IDA -- el nuevo nombre es ida2
  • Añadir el laboratorio cgc para la exploración de más de 200 servicios vulnerables del DARPA Cyber Grand Challenge
  • Añadir el comando type_string a SimLab
  • Añadir el laboratorio netflow para el uso del análisis de tráfico de red NetFlow
  • Añadir versiones de 64 bits de los laboratorios bufoverflow y formatstring

9 de abril de 2020

  • El evaluador falló en la evaluación de las condiciones CONTAINS y FILE_REGX cuando se usaban comodines para la selección de archivos.
  • Incluir sugerencias para usar hexedit en el laboratorio symlab.
  • Añadir el operador hash_equal y hash-goals.py a la evaluación automatizada para evitar publicar las respuestas esperadas en los archivos de configuración.
  • Evaluación automatizada para el laboratorio pcap-lib.

7 de abril de 2020

  • Los registros se han movido a $LABTAINER_DIR/logs
  • Otras tareas de limpieza para permitir reconstrucciones y pruebas usando Jenkins, incluido el uso de directorios temporales únicos para las compilaciones
  • Mover las funciones de soporte de compilación de labutils a build.py
  • Añadir el laboratorio pcap-lib para el desarrollo basado en la biblioteca PCAP de programas de análisis de tráfico

13 de marzo de 2020

  • Añadir el laboratorio plc-traffic para el uso de GrassMarlin con el tráfico generado durante el laboratorio.
  • Introducir la capacidad de añadir contenedores "tap" para recopilar PCAPs de redes seleccionadas.
  • Actualizar la documentación de GNS3 para el acceso externo a los contenedores y el uso de dummy_hcd para simular unidades USB.
  • Cambiar la plantilla de kali para usar faux_init en lugar de intentar usar systemd.
  • Mover distribuciones (archivos tar) a box.com
  • Cambiar el uso de netstat en SimLab para que no haga una búsqueda de dns.

26 de febrero de 2020

  • Si el comando labtainer no encuentra el laboratorio, sugerir al usuario que ejecute update-labtainer.sh
  • Añadir soporte preliminar para un componente de tap de red para ver todo el tráfico de red.
  • Script para obtener las imágenes de los laboratorios y preparar VMs que se usarán sin internet.
  • Proporcionar nombre de usuario y contraseña para el laboratorio nmap-discovery.

18 de febrero de 2020

  • Heredar la variable de entorno DISPLAY del host (p. ej., VM) en lugar de asumir :0

14 de febrero de 2020

  • Añadir ejercicio de introducción a la ingeniería inversa de software con Ghidra.

11 de febrero de 2020

  • Actualizar las guías para describir el acceso remoto a los contenedores dentro de entornos GNS3
  • Ocultar componentes y enlaces seleccionados dentro de GNS3.
  • Las figuras en la guía del laboratorio webtrack no eran visibles; errores tipográficos en esta y en nmap-ssh

6 de febrero de 2020

  • Introducir una función para gestionar contenedores de forma remota, p. ej., enviar archivos.
  • Añadir una función de entorno GNS3 para simular la inserción de una unidad USB.
  • Mejorar el manejo de errores de compilación de Docker.

3 de febrero de 2020

  • En el laboratorio metasploit, el servicio postgresql no se estaba ejecutando en la víctima.
  • Fusionar el contenido del manual de IModule en la guía del Diseñador de Laboratorios.
  • Más soporte para IModule.

27 de enero de 2020

  • Introducir soporte inicial para IModules (laboratorios desarrollados por instructores). Consulte docs/imodules.pdf.
  • Corregir la variable de entorno LABTAINER_DIR rota dentro de update-labtainer
  • Corregir el modo de acceso del archivo accounting.txt en el laboratorio ACL (había pasado a rw-r-r). Usar chmod explícito en fixlocal.sh.

14 de enero de 2020

  • Portar el framework y gradelab a Python3 (los laboratorios existentes en Python2 no cambiarán)
    • Usar opciones de random.seed compatibles hacia atrás
    • Hackear randint no compatible para devolver los valores antiguos
    • Seguir dando soporte a python2 para plataformas que carecen de python3 (o aquellas como la antigua aplicación VM que incluye python 3.5.2, que rompe la compatibilidad de random.seed).
    • Añadir el alias rebuild para rebuild.py que seleccionará python2 si es necesario.
  • Las páginas de manual de los laboratorios basados en Centos estaban fallando; usar mandb dentro del archivo docker base
  • La máscara de red de dmz-lab para la red DMZ era incorrecta (detectado por python3); al igual que la dirección IP de la puerta de enlace interna en el manual del laboratorio
  • ghex eliminado de los laboratorios centos -- ya no es fácilmente soportado por centos 7
  • El laboratorio file-deletion debe completarse sin reiniciar la VM, tenga esto en cuenta en el Manual del Laboratorio.
  • Añadir el interruptor NO_GW a start.config para deshabilitar las puertas de enlace predeterminadas en los contenedores.
  • Laboratorio Metasploit, bloquea la VM host si se ejecuta como privilegiado; largos retrasos en su si systemd está habilitado; por lo que se ejecuta sin systemd. Eliminar el uso de la base de datos del manual del laboratorio, configurar para usar el nuevo interruptor no_gw
  • Actualizar los encabezados de los archivos para licencias/términos; añadir un archivo de licencia consolidado.
  • Modificar publish.py para que use por defecto el registro de pruebas, usar -d para forzar el uso de default_registry
  • Revisar los procedimientos de control de código fuente para usar un registro de pruebas diferente para cada rama, y usar una rama premaster para las pruebas finales de una versión.

9 de octubre de 2019

  • Eliminar dnsmasq del componente dns en el dmz-lab. Estaba provocando que bind fallara en algunas instalaciones.

8 de octubre de 2019

  • Error de sintaxis en la configuración del registro de pruebas; información del diseñador de laboratorios sobre archivos grandes; obtener archivos bigexternal.txt

30 de septiembre de 2019

  • La recuperación del registro de DockerHub vuelve a fallar para algunos usuarios. Ignorar el prefijo html en json.

20 de septiembre de 2019

  • La evaluación de onewayhash debería permitir operaciones hmac sobre el archivo que elija el estudiante.

5 de septiembre de 2019

  • Reconstruir el laboratorio metasploit, metasploit-framework mostraba un error. Y el archivo "treataslocal" de los laboratorios quedó fuera de la migración desde svn. Corregir un error tipográfico en el manual del laboratorio metasploit.

30 de agosto de 2019

  • Revertir la comprobación de la existencia de los directorios de contenedores, no siempre existen.

29 de agosto de 2019

  • Las descargas de imágenes de laboratorio desde docker hub fallaron debido a un cambio en github o curl? Capturar la redirección a cloudflare. Adición del soporte de GNS3. Corrección del dnssec de dmz-lab.

11 de julio de 2019

  • Evaluación automatizada para contenedores CentOS6, corrección del problema de memoria de firefox, soporte para argumentos arbitrarios de docker create en el archivo start.config.

6 de junio de 2019

  • Introducir una base Centos6, pero aún sin soporte para evaluación automatizada

23 de mayo de 2019

  • La evaluación automatizada de setuid-env falló debido a errores tipográficos en los separadores de campo.

8 de mayo de 2019

  • Correcciones al manual del laboratorio Capabilities

2 de mayo de 2019

  • Corrección del laboratorio Acl para los permisos de bobstuff.txt. Usar chmod explícito en fixlocal.sh
  • Revisar la guía del estudiante para aclarar el uso de la opción stop y -r en el cuerpo del manual.

9 de marzo de 2019

  • La función checkwork estaba reutilizando contenedores, impidiendo así que los estudiantes eliminaran los artefactos del trabajo de laboratorio anterior.
  • Añadir un apéndice al laboratorio symkey para describir el formato de imagen BMP.

22 de febrero de 2019

  • El servidor http no se iniciaba en los laboratorios vpn y vpn2. Evaluación automatizada eliminada de esos laboratorios hasta que se reelaboren.

7 de enero de 2019

  • Corregir la evaluación automatizada de gdblesson para que al menos sea operativa.

27 de enero de 2019

  • Corregir el manual del laboratorio routing-basics2 y corregir el enrutamiento para permitir el acceso externo al servidor web interno.

29 de diciembre de 2018

  • Corregir routing-basics2, los mismos problemas que routing-basics, más una dirección ip incorrecta en el resolv.conf de la puerta de enlace

5 de diciembre de 2018

  • Corregir el laboratorio routing-basics, la resolución dns en los componentes isp y gatway estaba rota.

14 de noviembre de 2018

  • Eliminar /run/nologin de la máquina de archivo en backups2 -- se necesita una solución general para este problema de nologin

5 de noviembre de 2018

  • Cambiar el aid.conf predeterminado del laboratorio file-integrity para rastrear cambios de metadatos en lugar de tiempos de modificación de archivos

22 de octubre de 2018

  • La resolución de verydodgy.com en el laboratorio macs-hash falló al reiniciar el laboratorio
  • La función de notificación falló si falta notify_cb.sh

12 de octubre de 2018

  • Establecer ulimit en el tamaño de archivo, límite de 1G

10 de octubre de 2018

  • Forzar la recopilación de archivos parametrizados
  • Incluir explícitamente leafpad y ghex en la línea base centos-xtra y reconstruir las imágenes dependientes.

28 de septiembre de 2018

  • Corregir los modos de acceso del archivo compartido en el laboratorio ACL
  • Aclarar la pregunta en pass-crack
  • Modificar la recopilación de artefactos para ignorar archivos más antiguos que el inicio del laboratorio.
  • Añadir laboratorio de algoritmos de computación cuántica

12 de septiembre de 2018

  • Corregir errores de sintaxis en la calificación de setuid-env
  • Corregir error de sintaxis en las reglas de firewall de ejemplo de iptables2
  • Reconstruir los laboratorios centos, mover los derivados de lamp para usar lamp.xtr para waitparam y forzar que httpd espere a que eso termine.

7 de septiembre de 2018

  • Añadir CyberCIEGE como laboratorio
  • Visualización de información de read_pre.txt antes de la descarga de imágenes, y oportunidad de cancelar.

5 de septiembre de 2018

  • Restaurar el procesamiento de descarga masiva de sakai a la función gradelab.
  • Eliminar scripts de instructor no utilizados.

4 de septiembre de 2018

  • Permitir múltiples direcciones IP por interfaz de red
  • Añadir imagen base para Wine
  • Añadir la simulación virtual de ICS GRFICS

23 de agosto de 2018

  • Añadir el laboratorio GrassMarlin (descubrimiento de red ICS)

23 de agosto de 2018

  • Añadir el laboratorio GrassMarlin (descubrimiento de red ICS)

21 de agosto de 2018

  • Otra corrección en torno a problemas de autenticación de AWS (DockerHub usa AWS).
  • Corregir new_lab_setup.py para usar git en lugar de svn.
  • Dividir el laboratorio plc-forensics en un laboratorio básico y uno avanzado (plc-forensics-adv)

17 de agosto de 2018

  • Transición a git y GitHub como repositorio autoritativo.

15 de agosto de 2018

  • Modificar la evaluación del laboratorio plc-forensics para que sea más general; revisar el manual del laboratorio para reflejar wireshark en el Labtainer.

15 de agosto de 2018

  • Añadir el comando "checkwork" que permite a los estudiantes ver los resultados de la evaluación automatizada de su trabajo de laboratorio.
  • Incluir el registro de las caídas de paquetes de iptables en el laboratorio iptables2 y en el iptables-ics.
  • Eliminar instancias obsoletas de is_true e is_false de goal.config
  • Corregir la evaluación booleana para manejar "NOT foo", esperaba más operandos.

9 de agosto de 2018

  • Soportar el reemplazo de parámetros en los archivos results.config
  • Añadir el tipo de resultado TIME_DELIM para results.config
  • Reelaborar el laboratorio iptables, eliminar comandos nmap ocultos, introducir un servicio personalizado

7 de agosto de 2018

  • Añadir enlace a la guía del estudiante en el directorio labtainer-student
  • Añadir enlace a la guía del estudiante en los escritorios de la VM
  • Correcciones a iptables-ics para evitar largos retrasos al apagar; y correcciones a las pruebas de regresión
  • Añadir una nota a las guías sugiriendo al estudiante el uso del navegador de la VM para transferir el archivo zip de artefactos al instructor.

1 de agosto de 2018

  • Usar una imagen Docker genérica para la evaluación automatizada; dejar de crear imágenes "instructor" por laboratorio.

30 de julio de 2018

  • Documentar la necesidad de desbloquear el waitparam.service (creando el directorio flag) si un script fixlocal.sh va a iniciar un servicio para el cual waitparam es un requisito previo.
  • Añadir el laboratorio plc-app para el ejercicio de firewall de aplicaciones PLC y listas blancas.

25 de julio de 2018

  • Añadir el operador string_contains al procesamiento de objetivos
  • Modificar la evaluación del laboratorio formatstring para tener en cuenta que el secreto filtrado no siempre está al final de la cadena mostrada.

24 de julio de 2018

  • Añadir el laboratorio SSH Agent (ssh-agent)

20 de julio de 2018

  • Soportar la compilación sin conexión, opcionalmente omitir toda la descarga de imágenes
  • Restaurar la restauración del repositorio apt/yum en las plantillas de Dockerfile.
  • Manejar las URL de redirección de la recuperación de blobs del registro de Docker para evitar errores de autenticación (No depender de curl --location).

12 de julio de 2018

  • Añadir la función prestop para permitir la ejecución de scripts especificados por el diseñador en componentes seleccionados antes del apagado del laboratorio.
  • Corregir el nombrado del host en el laboratorio ssl, estaba rompiendo la evaluación automatizada.
  • Corregir el estado inicial de dmz-lab para permitir resoluciones DNS desde la red interna.
  • El procesamiento de FILE\REGEX no manejaba correctamente las búsquedas multilínea.
  • La versión del framework derivada de imágenes recién reconstruidas tenía un valor predeterminado incorrecto.

10 de julio de 2018

  • Añadir un laboratorio LDAP
  • Completar la transición a imágenes Ubuntu basadas en systemd, eliminar archivos no utilizados
  • Mover el archivo tar lab_sys al directorio tmp por contenedor para la concurrencia.

6 de julio de 2018

  • Todas las imágenes base de Ubuntu reemplazadas por versiones basadas en systemd
  • Las imágenes de contenedor de Labtainer en el registro ahora están etiquetadas con el ID de la imagen base y tienen etiquetas que reflejan la imagen base.
  • Una instalación dada descargará y usará imágenes que sean consistentes con las imágenes base que posee.
  • Si está usando una imagen de VM, es posible que desee reemplazarla con una imagen de VM más reciente de nuestro sitio web.
  • Los nuevos laboratorios no se ejecutarán sin descargar imágenes base más recientes; lo que puede llevar a que su VM almacene múltiples versiones de grandes imágenes base (> 500 MB cada una).
  • Se estaban perdiendo artefactos de procesos que se estaban ejecutando cuando se detuvo el laboratorio -- no se estaban matando correctamente los procesos capinout.

27 de junio de 2018

  • Añadir soporte para imágenes Ubuntu systemd
  • Eliminar la copia antigua de SimLab.py de labtainer-student/bin
  • Mover las fuentes de apt y yum a /var/tmp
  • Aclarar las diferencias entre el uso de "boolean" y "count_greater" en las evaluaciones
  • Ampliar Add-HOST en start.config para incluir todos los componentes de una red.
  • Añadir opción a new_lab_setup.py para añadir un contenedor basado en una copia de un contenedor existente.

21 de junio de 2018

  • Establecer la variable de entorno DISPLAY para root
  • Corrección en el manejo de dependencias de compilación de la salida de svn status
  • Añadir laboratorio radius
  • Error en el append de SimLab corregido
  • Usar svn, cuando sea apropiado, para cambiar nombres de archivos con new_lab_setup.py

19 de junio de 2018

  • Mantener el orden de los contenedores definidos en start.conf al crear una terminal con múltiples pestañas
  • Aclarar el manual del diseñador para identificar la ruta a los archivos de configuración de evaluación.
  • Eliminar la solicitud al instructor de proporcionar correo electrónico
  • Comprobación de errores fallida al probar el número de versión
  • Incluir marcas de tiempo de los inicios y reinicios de laboratorio en el json de evaluación
  • Añadir un laboratorio SSL que incluye autenticación bidireccional y creación de certificados.

14 de junio de 2018

  • Añadir diagnósticos a la parametrización, rastrear por qué algunas instalaciones parecen fallar en eso.
  • Si un contenedor ya está creado, asegurarse de que esté parametrizado, de lo contrario abortar para evitar contenedores corruptos o a medio hacer.
  • Corregir el número de versión del programa para usar svn HEAD

15 de junio de 2018

  • Convertir las instrucciones en texto plano que aparecían en xterms en un archivo pdf.
  • Corregir error en el manejo de versiones de imágenes que aún no se han descargado.
  • Detectar la aparición de un contenedor que fue creado, pero no parametrizado, y solicitar al usuario que reinicie el laboratorio con la opción "-r".
  • Añadir utilidad para el diseñador: rm_svn.py para que los archivos eliminados provoquen una reconstrucción de la imagen.

13 de junio de 2018

  • Instalar xterm en sistemas Ubuntu 18
  • Solucionar el fallo en las nuevas versiones del manejo de pestañas de gnome-terminal

11 de junio de 2018

  • Añadir comprobación de versión para comparar las imágenes con el framework.
  • Aclarar varios manuales de laboratorio

2 de junio de 2018

  • Al instalar en Ubuntu 18, usar docker.io en lugar de docker-ce
  • El capinout provocaba un fallo cuando a un comando monitorizado "sudo su" le sigue un comando de usuario no elevado.
  • Mover la configuración de routing y resolv.conf a /etc/rc.local en lugar de fixlocal.sh para que persistan entre el inicio/parada de los contenedores.

31 de mayo de 2018

  • Solucionar un error de Docker que provocaba que el texto se ajustara en una terminal sin un salto de línea.
  • Ampliar COMMAND_COUNT para tener en cuenta las tuberías
  • Crear una nueva versión del laboratorio backups que incluye copias de seguridad a un servidor remoto y hace copia de seguridad de una partición completa.
  • Modificar las instrucciones de sshlab para usar la utilidad ssh-copy-id
  • Eliminar el archivo /run/nologin de parameterize.sh para permitir el inicio de sesión ssh en CentOS

30 de mayo de 2018

  • Ampliar new_lab_setup.py para permitir la identificación de la imagen base a usar
  • Crear una nueva versión de centos-log que incluye registro centralizado.
  • La validación de la evaluación no aceptaba la opción "time_not_during".
  • Comenzar a integrar Labtainer Master para gestionar Labtainers desde un contenedor Docker.

25 de mayo de 2018

  • Eliminar las esperas de 10 segundos de varios servicios. Estaba retrasando las respuestas de xinetd, rompiendo las pruebas automatizadas.
  • Corregir la calificación del laboratorio snort para que solo requiera "CONFIDENTIAL" en la alarma. Eliminar archivos no utilizados del laboratorio.
  • Los tiempos de finalización del programa no se registraban si el programa se estaba ejecutando cuando se detuvo el laboratorio.

21 de mayo de 2018

  • Corregir la calificación de retlibc para eliminar el objetivo duplicado, estaba fallando la evaluación automatizada
  • Eliminar las copias de mynotify.py de los laboratorios individuales y de la plantilla de laboratorio, ha sido parte de lab_sys/sbin, pero no se había actualizado para reflejar las correcciones hechas para el laboratorio acl.

18 de mayo de 2018

  • Enmascarar el mensaje de señal de exec_wrap para que el mensaje de error de segv se vea correcto.
  • El capinout a veces perdía stdout, comprobar el stdout del comando al morir el cmd.
  • Corregir la calificación de formatstring para capturar el mensaje de fallo de segmentación.
  • Añadir la función type_function a SimLab para escribir el stdout de un script (ver formatstring simlab).
  • Eliminar la limitación de SimLab sobre la combinación de comillas simples/dobles.
  • Añadir la directiva window_wait a SimLab para pausar hasta que se pueda encontrar la ventana con el título dado.
  • Modificar el laboratorio plc para alterar los títulos en la terminal del mundo físico para reflejar el estado, esto también facilita las pruebas.
  • Corregir el enlace del manual del laboratorio bufoverflow.

15 de mayo de 2018

  • Añadir un apéndice sobre el uso de la herramienta SimLab para simular la realización de laboratorios por parte del usuario para pruebas de regresión y desarrollo de laboratorios.
  • Añadir la función wait_net a SimLab para pausar hasta que terminen las conexiones de red seleccionadas.
  • Cambiar la evaluación automatizada de acl para usar FILE_REGEX para la coincidencia multilínea.
  • Prueba de SimLab para el laboratorio xsite.

11 de mayo de 2018

  • Añadir el archivo "noskip" para forzar la recopilación de archivos que de otro modo se encuentran en home.tar, necesario para recuperar el places.sqlite de Firefox.
  • Fusionar la base de datos sqlite con el búfer de escritura anticipada antes de extraer.
  • Correcciones al manual del laboratorio para symkeylab
  • Adiciones de calificación para symkeylab y pubkey
  • Mejoras a la herramienta simlab: soporte de include, corrección del nombrado de ventanas.

9 de mayo de 2018

  • Corregir la parametrización del laboratorio file-deletion. Corregir el error en su manual de laboratorio.
  • Reemplazar el uso de shell=True en los scripts de python para reducir procesos y permitir el seguimiento de PIDs
  • Limpiar los manuales de backups, pass-crack y macs-hash.

8 de mayo de 2018

  • Manejar la condición de carrera para evitar que gnome-terminal ejecute su comando docker antes de que una terminal de instrucciones xterm ejecute su comando.
  • No mostrar errores cuando el instructor detiene un laboratorio iniciado con "-d".
  • Cambiar la calificación de nmap-ssh para reflejar mejor la intención del laboratorio.
  • Varias correcciones de documentación y scripts sugeridas por olberger en github.

7 de mayo de 2018

  • Usar el programa capinout basado en C en lugar del antiguo capinout.sh para capturar stdin y stdout. Ver trunk/src-tool/capinout. Elimina las limitaciones asociadas con el uso de ctrl-C para interrumpir programas monitorizados y la visualización de contraseñas en telnet y ssh.
  • Incluir soporte para el procesamiento del zip bulk_download de saki para extraer informes enviados por separado, y resume los envíos faltantes.
  • Añadir comprobaciones al correo electrónico proporcionado por el usuario para asegurar que son caracteres imprimibles.
  • Durante la calificación, si el correo electrónico proporcionado por el usuario no coincide con el nombre del archivo zip, proceder a calificar los resultados, pero incluir una nota en la tabla que refleje trampa. Necesario para recuperarse de casos en los que el estudiante introduce basura como dirección de correo electrónico.
  • Cambiar la calificación de telnetlab para no buscar contraseñas en la salida de tcpdump -- la corrección de capinout conduce a una transmisión correcta carácter a carácter al servidor.
  • Corregir error tipográfico en install-docker.sh y usar sudo para alterar la configuración de dns de docker en ese script.

26 de abril de 2018

  • Transición al uso de "labtainer" para iniciar el laboratorio, y "stoplab" para detenerlo.
  • Añadir la opción --version al comando labtainer.
  • Añadir los tipos de resultado log_ts y log_range, y los operadores de objetivo time_not_during. Renovar la calificación de centos-log y sys-log para usar estas características.
  • Poner labsys.tar en /var/tmp en lugar de /tmp, a veces se eliminaba antes de expandirse
  • La ejecución de aplicaciones X como root falla tras reiniciar la VM.
  • Añadir páginas de manual de "User Command" a los laboratorios basados en CentOS
  • Corregir un error reciente que impedía la recopilación de archivos de documentación de los estudiantes
  • Modificar las pruebas de humo para comparar solo la línea de resultado específica del estudiante, sin espacios en blanco20 de abril de 2018
  • El servicio denyhosts falla al iniciarse la primera vez, se movió el inicio a student_startup.sh.
  • Mover todos los servicios faux_init hasta después de la parametrización -- rsyslog fallaba al iniciarse en el segundo arranque del contenedor. 19 de abril de 2018
  • El laboratorio acl no evaluaba correctamente el rendimiento del paso del caballo de Troya.
  • Recopilar documentos de los estudiantes por defecto.
  • El laboratorio denyhost cambió para reflejar que denyhosts (¿o tcp wrappers?) ahora modifica iptables. Además, el servicio denyhosts fallaba al iniciarse en algunas ocasiones.
  • Al actualizar Labtainers, no sobrescribir archivos que sean más recientes que los del archivo -- preservar los informes de laboratorio de los estudiantes.

12 de abril de 2018

  • Añadir documentación para el propósito de los objetivos del laboratorio, y mostrarla al instructor cuando el instructor inicia un laboratorio.
  • Corregir el uso de la función precheck cuando el programa está en treataslocal, pasar capintout.sh la ruta completa del programa.
  • Copiar los archivos instr_config en tiempo de ejecución en lugar de durante la construcción de la imagen.
  • Añadir sección de la Guía del Diseñador sobre depuración de la evaluación automatizada.
  • Uso incorrecto de mayúsculas en los nombres de archivo de los informes de laboratorio.
  • La función chown innecesaria hacía que instructor.py fallara a veces.
  • Soporte para pruebas automatizadas de laboratorios (ver SimLab y smoketest).
  • Mover testsets y distrib bajo trunk

5 de abril de 2018

  • Revisar el perfil de Firefox para eliminar el mensaje "you've not use firefox in a while...".
  • Eliminar pulls innecesarios del registro -- obtener las fechas de las imágenes a través de la API de docker hub en su lugar.

28 de marzo de 2018

  • Usar tar explícito en lugar de "docker cp" para archivos del sistema (Docker no sigue enlaces.)
  • Corregir el laboratorio de copias de seguridad para usar un sistema de archivos separado y actualizar el manual.

26 de marzo de 2018

  • Soporte para modos multiusuario (ver Lab Designer User Guide).
  • Eliminada la dependencia de construcción de los archivos lab_bin y lab_sys. Ahora se copian durante la parametrización del laboratorio.
  • Mover capinout.sh a /sbin para que se pueda encontrar al ejecutarse como root.

21 de marzo de 2018

  • Añadir CLONE para permitir múltiples instancias del mismo contenedor, p. ej., para laboratorios compartidos por múltiples estudiantes concurrentes.
  • Adaptar el laboratorio kali-test para proporcionar un ejemplo de macvlan y CLONE
  • Copiar el script capinout.sh a /sbin para que root pueda encontrarlo después de un sudo su.

15 de marzo de 2018

  • Soporte para redes macvlan para comunicaciones con hosts externos
  • Añadir una base de Kali linux, y una imagen de Metasploitable 2 (ver kali-test)

8 de marzo de 2018

  • No requerir labname al usar stop.py
  • Capturar errores causados por redes perdidas y aconsejar al usuario sobre una solución
  • Añadir soporte para el uso de repositorios locales de apt y yum en NPS

21 de febrero de 2018

  • Añadir dmz-lab
  • Cambiar "checklocal" a "precheck", reflejando que se ejecuta antes del comando.
  • Desacoplar el reporte de eventos de inotify del uso de precheck.sh, permitir que las listas de eventos de inotify incluyan un nombre de archivo de salida opcional.
  • Extender el hook de bash a operaciones de root, vaciar ese bash_history.
  • Permitir la parametrización de campos de start.config, p. ej., para direcciones IP aleatorias
  • Soporte para la monitorización de servicios iniciados vía systemctl o /etc/init.d
  • Introducir calificadores de delimitador de tiempo para organizar un archivo de registro con marca de tiempo en rangos delimitados por algún cambio de configuración de interés (ver dmz-lab)

5 de febrero de 2018

  • Los valores booleanos de los archivos results.config ahora se tratan como valores de objetivo
  • Añadir soporte de expresiones regulares para identificar resultados de artefactos.
  • Soporte para registros Docker alternativos, incluyendo un registro de prueba local para pruebas
  • Correcciones varias a laboratorios y manuales de laboratorio
  • El hook de monitorización capinout no mataba los procesos hijos al salir.
  • Matar los procesos monitorizados antes de recopilar artefactos
  • Añadir labtainer.wireshark como contenedor base, limpiar los dockerfiles

30 de enero de 2018

  • Añadir laboratorio snort
  • Integrar marcas de tiempo de archivos de registro, p. ej., de syslogs, en resultados con marca de tiempo.
  • Eliminar valores de resultado indefinidos de los archivos json de resultados intermedios con marca de tiempo.
  • Alterar la operación de evaluación de objetivo time_during para asociar marcas de tiempo con el valor de objetivo resultante.

24 de enero de 2018

  • El uso de ventanas con pestañas hacía que el lado del instructor fallara, uso de comillas dobles.
  • Ignorar archivos en directorios _tar (distintos de .tar) al determinar las dependencias de construcción.

Categorías