Volver a actualizaciones
Nuevo releaseAug 12, 2026

multi-juicer v10.3.0

Aloja y gestiona múltiples instancias de Juice Shop para entrenamientos de seguridad y Capture The Flags.

Compartir

MultiJuicer, plataforma Juice Shop multiusuario

Ejecutar CTFs y formaciones de seguridad con OWASP Juice Shop suele ser bastante complicado; Juice Shop simplemente no está pensado para ser usado por varios usuarios a la vez. Enseñar a todo el mundo cómo iniciar Juice Shop en su propia máquina funciona bien, pero consume demasiado tiempo valioso.

MultiJuicer te ofrece la posibilidad de ejecutar instancias separadas de Juice Shop para cada participante en un clúster central de kubernetes, para organizar eventos sin necesidad de instancias locales de Juice Shop.

Qué hace:

  • crea dinámicamente nuevas instancias de Juice Shop cuando es necesario
  • se ejecuta en un único dominio y viene con un LoadBalancer que envía el tráfico a la instancia de Juice Shop del participante
  • una pequeña y práctica tabla de clasificación que muestra el progreso de todos los participantes
  • una práctica página de administración para gestionar las instancias
  • copia de seguridad y aplicación automática del progreso de los retos en caso de que se reinicien los contenedores de Juice Shop
  • limpieza automática de instancias antiguas y sin usar

MultiJuicer, diagrama de arquitectura de alto nivel

Para una descripción detallada de la arquitectura y de los componentes individuales, consulta la Documentación de arquitectura.

👉 ¿Eres nuevo en MultiJuicer? Consulta el recorrido visual para ver cómo se registran los participantes, cómo obtienen sus instancias de JuiceShop y cómo se registran las puntuaciones en el marcador.

Instalación

MultiJuicer se ejecuta en kubernetes; para instalarlo necesitarás helm

helm install multi-juicer oci://ghcr.io/juice-shop/multi-juicer/helm/multi-juicer

Consulta las notas de producción para obtener una lista de verificación de los valores que probablemente necesitarás configurar antes de usar MultiJuicer en eventos reales.

Para configurar MultiJuicer con soporte para los desafíos relacionados con IA/LLM de JuiceShop v20+, consulta la guía de configuración de IA/LLM

Guías de instalación para proveedores de nube / entornos específicos

Por lo general, MultiJuicer funciona en prácticamente cualquier clúster de kubernetes, pero para facilitar las cosas a cualquiera que sea nuevo en kubernetes, tenemos algunas guías sobre cómo configurar un clúster de kubernetes con MultiJuicer instalado para algunos proveedores de nube específicos.

Personalización de la configuración

Tienes algunas opciones sobre cómo configurar el stack, con alguna opción para personalizar las instancias de JuiceShop a tu gusto. Puedes encontrar los valores de configuración predeterminados en: helm/multi-juicer/values.yaml

Descarga y guarda el archivo e indica a helm que use tu archivo de configuración en lugar del predeterminado ejecutando:

helm install -f values.yaml multi-juicer ./multi-juicer/helm/multi-juicer/

Para personalizar el tema de las instancias de JuiceShop y la interfaz de MultiJuicer (tema, logotipo, desafíos habilitados, ...), consulte la guía de personalización de JuiceShop.

Desinstalación

helm delete multi-juicer

FAQ

¿Cuántos recursos de cómputo requerirá el clúster?

Para ir sobre seguro, calcula con:

  • 1 GB de memoria y 1 CPU de sobrecarga, para MultiJuicer en sí
  • 384 MB y 0.1 CPU * número de participantes / equipos, para las instancias individuales de JuiceShop

Las cifras anteriores reflejan los límites de recursos predeterminados. Estos se pueden ajustar; consulta: Personalizar la configuración

¿Cuántos usuarios puede manejar MultiJuicer?

No hay un límite fijo real. (Aunque puedes configurar uno 😉) El LoadBalancer personalizado, a través del cual fluye todo el tráfico de las instancias individuales, se puede replicar tanto como quieras. También puedes adjuntar un Horizontal Pod Autoscaler para escalar automáticamente el LoadBalancer.

¿Por qué un LoadBalancer personalizado?

Hay algunos requisitos especiales que no encontramos que se resolvieran fácilmente con ningún balanceador de carga preconstruido:

  • Restringir el número de usuarios de un despliegue solo a los miembros de un equipo determinado.
  • La cookie del balanceador de carga debe ser segura y no fácil de falsificar para acceder a otra instancia.
  • Gestionar el inicio de nuevas instancias.

Si tienes ideas geniales sobre cómo superar estos problemas sin un balanceador de carga personalizado, escríbenos, ¡nos encantaría saber de ti!

¿Por qué un despliegue de kubernetes separado para cada equipo?

Hay algunas razones bastante buenas para esto:

  • La capacidad de eliminar las instancias de un equipo por separado. Reducir la escala de forma segura, sin eliminar las instancias de equipos activos, es realmente complicado con un despliegue escalado. Solo puedes elegir la escala deseada, no qué pods conservar y cuáles descartar.
  • Para garantizar que los pods sigan estando correctamente asociados con los equipos después de que se recree un pod. Esto no es un problema con despliegues separados y es realmente difícil con despliegues escalados.
  • La capacidad de incluir el nombre del equipo en el nombre del despliegue. Parece una razón tonta, pero hace la depuración MUCHÍSIMO más fácil, simplemente usando kubectl.

¿Cómo gestionar JuiceShop fácilmente usando kubectl?

Puedes listar todos los JuiceShops con la información relevante usando la función custom-columns de kubectl.

$ kubectl get -l app.kubernetes.io/name=juice-shop -o custom-columns="TEAM:metadata.labels.team,SOLVED-CHALLENGES:metadata.annotations.multi-juicer\.owasp-juice\.shop/challengesSolved,LAST-REQUEST:metadata.annotations.multi-juicer\.owasp-juice\.shop/lastRequestReadable" deployments
TEAM         SOLVED-CHALLENGES   LAST-REQUEST
foobar       3                   Wed May 4 2042 18:14:22 GMT+0000 (Coordinated Universal Time)
team-42      0                   Wed May 4 2042 18:14:30 GMT+0000 (Coordinated Universal Time)
the-empire   0                   Wed May 4 2042 18:14:46 GMT+0000 (Coordinated Universal Time)

De dónde surgió este proyecto

El proyecto comenzó en iteratec, una empresa alemana de desarrollo de software, para impartir sus formaciones de seguridad a sus propios desarrolladores y a sus clientes. El proyecto se publicó como código abierto en 2019 y se donó a la organización OWASP / al proyecto OWASP Juice Shop en 2023.

¡Habla con nosotros!

Categorías