Containers da segunda fase
Estes contêineres são iniciados dinamicamente com base na entrada do Build User config (Job) fornecida à CLI do purpleteam, especificamente o número de testSessions que você define.
As seguintes configurações são relevantes se você pretende executar o back-end do purpleteam no ambiente local. Na nuvem, tudo isso é feito para você.
Clone este repositório.
Usamos um arquivo .env diretamente no diretório app-slave para teste.
ZAP_API_KEY
Certifique-se de ter atribuído um valor à variável de ambiente ZAP_API_KEY.
A ZAP_API_KEY pode ser o que você escolher, apenas certifique-se de que, além de defini-la para o app-slave, você também a adicione à configuração do projeto app-scanner. O projeto app-scanner requer que a Chave de API do Zap seja configurada para autenticar no Zap em execução no contêiner do Estágio Dois. Para o projeto app-scanner, isso precisa ser definido da seguinte forma:
{ "slave": { "apiKey": <zap-api-key-aqui> } }
HOST_ZAP_LOG4J_PROPERTIES_PATH e ZAP_LOG4J_PROPERTIES_PATH_MOUNT_TARGET
Se/quando você precisar de logs de depuração do Zap, também precisará adicionar as variáveis de ambiente para a configuração de depuração do LOG4J.
Arquivo .env
Se você optar por usar um arquivo .env, adicionar todas essas variáveis de ambiente seria semelhante ao seguinte:
ZAP_API_KEY=<zap-api-key-aqui>
HOST_ZAP_LOG4J_PROPERTIES_PATH=<caminho-absoluto-para/purpleteam-s2-containers/app-slave/log4j.properties>
ZAP_LOG4J_PROPERTIES_PATH_MOUNT_TARGET=/home/zap/.ZAP/log4j.properties
Desde que você tenha estabelecido as variáveis de ambiente discutidas acima:
Para ativar o log de depuração para os contêineres app-slave (Zap) que são executados no ambiente local, descomente o array volumes e o elemento que contém a chave source com a variável de ambiente HOST_ZAP_LOG4J_PROPERTIES_PATH.
Detalhes abaixo para realmente visualizar os logs.
Você pode interagir com o Zap (consultar a interface do Zap) enquanto seus testes estão em execução. Já achamos isso útil no passado para verificar o estado do Zap durante a depuração do app-scanner.
docker stats
docker container ls
Pode ser qualquer porta entre 8080-8091 inclusive, conforme definido no docker-compose.yml.
zap:8080/*
http://zap:8080/zap no contêiner especificado pela porta do host na sua configuração do FoxyProxyPara ativar o log de depuração para os contêineres Selenium que são executados no ambiente local, descomente o array environment e o elemento SE_OPTS=-debug para chrome e/ou firefox.
Detalhes abaixo para realmente visualizar os logs.
O seguinte descreve o que você precisará fazer para visualizar o navegador dentro de qualquer um dos contêineres Selenium executados a partir deste projeto.
-debug. As imagens -debug podem estar comentadas, então basta comentar a imagem usual e descomentar a imagem com -debug anexado ao final5900. Ao especificar uma faixa como porta externa (Ex: 5900-5901), você poderá se conectar via VNC a mais de um contêiner ao mesmo tempo; no exemplo, permitimos a abertura de duas sessões simultaneamente. Se você precisar se conectar via VNC a mais de dois, basta ampliar a faixa de portas externasVocê precisará de um cliente VNC para abrir uma conexão com o servidor VNC dentro do contêiner. Tivemos sucesso com o Remmina Remote Desktop Client no Linux Mint. Instale o Remmina-plugin-vnc via Gerenciador de Software
Execute seu Remmina Remote Desktop Client
Crie novas entradas. Se você pretende se conectar via VNC a alguns contêineres Selenium simultaneamente, pode configurar cada um como o seguinte:
| Chave | Valor |
|---|---|
| Nome | seleniumstandalone_chrome_1 |
| Protocolo | VNC - Virtual Network Computing |
| Na aba Básico | |
| Servidor | 127.0.0.1:5900 |
| Senha | secret |
| Profundidade de cor | True color (24 bit) # Esta foi a única que funcionou para nós |
| Qualidade | Ruim (mais rápida) |
| Chave | Valor |
|---|---|
| Nome | seleniumstandalone_chrome_2 |
| Protocolo | VNC - Virtual Network Computing |
| Na aba Básico | |
| Servidor | 127.0.0.1:5901 |
| Senha | secret |
| Profundidade de cor | True color (24 bit) # Esta foi a única que funcionou para nós |
| Qualidade | Ruim (mais rápida) |
Mais detalhes no github do SeleniumHQ
Assim que os contêineres Selenium estiverem em execução (manter docker stats em execução em um terminal é conveniente para visualizar isso), você pode confirmar qual contêiner Selenium está usando qual porta externa com docker container ls, pois o Docker não tem ideia de quais portas você atribuiu a quais entradas do seu cliente VNC, então o nome de uma determinada entrada do cliente VNC pode não corresponder necessariamente ao contêiner Selenium com o mesmo nome. Por esse motivo, é uma boa ideia confirmar os mapeamentos de porta com docker container ls.
Para correlacionar qual contêiner Selenium está sendo usado para qual Sessão de Teste quando você tem várias Sessões de Teste, pode ser necessário revisar o log do app-scanner em execução. Você também pode precisar garantir que o app-scanner esteja configurado para o nível de log debug para ver algumas ou mais das seguintes mensagens de log:
[app.parallel] processo cucCli com PID "28" foi gerado para sessão de teste com Id "lowPrivUser"
[app.parallel] processo cucCli com PID "34" foi gerado para sessão de teste com Id "adminUser"