
multi-juicer v10.3.0
Hospede e gerencie múltiplas instâncias do Juice Shop para treinamentos de segurança e Capture The Flags
Executar CTFs e Treinamentos de Segurança com o OWASP Juice Shop geralmente é bastante complicado, o Juice Shop simplesmente não foi projetado para ser usado por vários usuários ao mesmo tempo. Instruir todos sobre como iniciar o Juice Shop em sua própria máquina funciona bem, mas consome muito tempo valioso.
O MultiJuicer oferece a capacidade de executar instâncias separadas do Juice Shop para cada participante em um cluster kubernetes central, permitindo realizar eventos sem a necessidade de instâncias locais do Juice Shop.
O que ele faz:
- cria dinamicamente novas instâncias do Juice Shop quando necessário
- roda em um único domínio, vem com um LoadBalancer que envia o tráfego para a instância do Juice Shop do participante
- um pequeno e elegante placar mostrando o progresso de todos os participantes
- uma prática página de administração para gerenciar instâncias
- backup e aplicação automática do progresso dos desafios em caso de reinicializações do contêiner do Juice Shop
- limpeza automática de instâncias antigas e não utilizadas
Para uma descrição detalhada da arquitetura e dos componentes individuais, consulte a Documentação de Arquitetura.
👉 Novo no MultiJuicer? Consulte o passo a passo visual para saber como os participantes se registram, obtêm suas instâncias do JuiceShop e como as pontuações são rastreadas no placar.
Instalação
O MultiJuicer roda em kubernetes, para instalá-lo você precisará do helm
helm install multi-juicer oci://ghcr.io/juice-shop/multi-juicer/helm/multi-juicer
Consulte as notas de produção para obter uma lista de verificação dos valores que provavelmente precisará de configurar antes de utilizar o MultiJuicer em eventos reais.
Para configurar o MultiJuicer com suporte para os desafios relacionados com IA/LLM do JuiceShop v20+, consulte o guia de configuração de IA/LLM
Guias de Instalação para Fornecedores de Cloud / Ambientes específicos
Geralmente, o MultiJuicer funciona em praticamente qualquer cluster kubernetes, mas para facilitar a vida de quem é novo no kubernetes, temos alguns guias sobre como configurar um cluster kubernetes com o MultiJuicer instalado para alguns fornecedores de Cloud específicos.
Personalizar a Configuração
Tem algumas opções sobre como configurar a stack, com alguma opção para personalizar as instâncias do JuiceShop ao seu gosto. Pode encontrar os valores de configuração predefinidos em: helm/multi-juicer/values.yaml
Descarregue e guarde o ficheiro e indique ao helm para usar o seu ficheiro de configuração em vez do predefinido, executando:
helm install -f values.yaml multi-juicer ./multi-juicer/helm/multi-juicer/
Para personalizar o tema das instâncias do JuiceShop e da interface do MultiJuicer (tema, logotipo, desafios habilitados, ...), consulte o guia de personalização do JuiceShop.
Desinstalação
helm delete multi-juicer
FAQ
Quanto recurso de computação o cluster exigirá?
Para ficar do lado seguro, calcule com:
- 1GB de memória e 1CPU de overhead, para o próprio MultiJuicer
- 384MB e 0.1CPU * número de participantes / equipes, para as instâncias individuais do JuiceShop
Os números acima refletem os limites de recursos padrão. Eles podem ser ajustados, veja: Personalizando a Configuração
Quantos usuários o MultiJuicer consegue suportar?
Não há um limite fixo real. (Embora você possa configurar um 😉) O LoadBalancer personalizado, pelo qual todo o tráfego das instâncias individuais flui, pode ser replicado tanto quanto você quiser. Você também pode anexar um Horizontal Pod Autoscaler para escalar automaticamente o LoadBalancer.
Por que um LoadBalancer personalizado?
Existem alguns requisitos especiais que não encontramos facilmente resolvidos com nenhum load balancer pré-construído:
- Restringir o número de usuários de uma implantação apenas aos membros de uma determinada equipe.
- O cookie do load balancer deve ser seguro e não fácil de falsificar para acessar outra instância.
- Lidar com a inicialização de novas instâncias.
Se você tiver ideias incríveis sobre como superar esses problemas sem um load balancer personalizado, por favor nos escreva, adoraríamos ouvir de você!
Por que uma implantação separada do kubernetes para cada equipe?
Existem algumas razões muito boas para isso:
- A capacidade de excluir as instâncias de uma equipe separadamente. Reduzir a escala com segurança, sem remover instâncias de equipes ativas, é realmente complicado com uma implantação escalada. Você só pode escolher a escala desejada, não quais pods manter e quais descartar.
- Para garantir que os pods ainda estejam devidamente associados às equipes após um pod ser recriado. Isso não é um problema com implantação separada e é realmente difícil com implantações escaladas.
- A capacidade de incorporar o nome da equipe no nome da implantação. Isso parece uma razão estúpida, mas torna a depuração MUITO mais fácil, apenas usando
kubectl.
Como gerenciar o JuiceShop facilmente usando kubectl?
Você pode listar todos os JuiceShops com informações relevantes usando o recurso custom-columns do 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 onde veio este projeto
O projeto começou na iteratec, uma empresa alemã de desenvolvimento de software, para executar os seus treinamentos de segurança para os seus próprios desenvolvedores e para os seus clientes. O projeto foi então disponibilizado como open source em 2019 e doado à organização OWASP / ao projeto OWASP Juice Shop em 2023.