
Um framework baseado em microsserviços para o estudo de técnicas de Segurança de Redes e Testes de Penetração.

Docker Security Playground é uma aplicação que permite:
O fluxo de instalação sugerido para o DSP é usando uma VM Kali:
Aqui estão os passos para instalar o DSP em uma VM Kali. Siga passos semelhantes para outras distribuições Linux, mas certifique-se de instalar todos os requisitos.
sudo apt update && sudo apt install -y docker.io docker-compose nodejs npm git
Nota (problema de chave do Kali 2025).
Se você tiver o seguinte problema durante a instalação:
Fetched 34.0 kB in 1s (58.4 kB/s) Warning: Failed to fetch http://http.kali.org/kali/dists/kali-rolling/InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ED65462EC8D5E4C5 Warning: Some index files failed to download. They have been ignored, or old ones used instead.Você precisa adicionar a chave ausente:
wget https://http.kali.org/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_2025.1_all.deb sudo dpkg -i kali-archive-keyring_2025.1_all.deb rm kali-archive-keyring_2025.1_all.deb
sudo systemctl enable docker
sudo groupadd docker
sudo usermod -aG docker $USER
docker ps
Além disso, verifique se o docker compose está funcionando:
docker compose --version # ou docker-compose --version para versões mais antigas
Verifique também a instalação do npm e nodejs:
node -v
npm -v
É possível executar o DSP em um host M1 habilitando o Rosetta, mas recomendo fortemente criar uma VM Kali com UTM ou Vmware Fusion, seguir os passos de instalação anteriores e instalar o pacote binfmt-misc para executar imagens x86 em arquitetura ARM.
sudo apt install binfmt-support qemu-user-static
Reinicie a máquina.
Em seguida, use o container Tonisiigi para registrar todos os interpretadores para as diferentes arquiteturas:
docker run --privileged --rm tonistiigi/binfmt --install amd64
Verifique se as imagens docker podem ser executadas na sua máquina:
docker run --rm -it --platform linux/amd64 ubuntu uname -m
git clone https://github.com/DockerSecurityPlayground/DSP.git
cd DSP
npm install
Quando a instalação estiver concluída, você pode iniciar o DSP:
npm start
O DSP será executado em "http://localhost:18181".
Nota sobre o uso do Wireshark no Kali: sugiro usar o navegador Chromium, pois o container do Wireshark usa alguns codecs que não são suportados pelo Firefox no Kali. Você pode iniciar o Chromium apenas digitando "chromium" no terminal.
O primeiro passo será instalar todas as pastas necessárias na máquina atual.
Você também pode automatizar esta etapa de instalação usando a variável de ambiente:
export DSP_AUTOINSTALL=1 && npm start
Se você quiser usar o navegador do seu host, pode expor na interface 0.0.0.0. Se quiser expor em outra interface, altere a variável de ambiente DSP_IFACE:
export DSP_IFACE="0.0.0.0"
Agora você pode usar o DSP em interface remota.
Se algo der errado, você pode redefinir o DSP para as configurações de fábrica usando o seguinte comando:
npm run uninstall
Isso irá deletar tudo, e você pode começar o DSP a partir da etapa de instalação.
DSP_Repo contém laboratórios oficiais do DSP. Contribua com o DSP criando novos Laboratórios DSP.
Durante a instalação você pode criar um ambiente local que não tem vínculo com git, ou pode associar um repositório pessoal à aplicação. Isso é muito útil se você quiser compartilhar seu trabalho com outras pessoas. O Repositório DSP deve ter vários requisitos, então criei um Template de Repositório DSP base que você pode usar para criar seu repositório pessoal. Portanto, a maneira mais fácil de compartilhar laboratórios é a seguinte:
É importante que todas as imagens que você usa estejam disponíveis para outros usuários, então:
Se você precisar de uma "maneira privada" de compartilhar laboratórios, deve compartilhar o repositório por outros meios; no momento, não há suporte para compartilhar repositórios privados.
No DSP você pode gerenciar vários repositórios de usuários (aba Repositórios).
Se você tiver um problema, use a seção de Issues.
Para executar um teste:
mocha test/<test-nodejs-file.js>
Os testes usam o método helper.start() para inicializar o ambiente de teste:
Se você tiver o seguinte erro durante a instalação:
[2020-12-14T10:18:21.854Z] INFO: DockerSecurityPlayground/1536 on vagrant: [DOCKER ACTIONS - DOWNLOAD IMAGE]
events.js:174
throw er; // Unhandled 'error' event
^
Error: connect EACCES /var/run/docker.sock
at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1107:14)
Emitted 'error' event at:
at Socket.socketErrorListener (_http_client.js:401:9)
at Socket.emit (events.js:198:13)
at emitErrorNT (internal/streams/destroy.js:91:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
at process._tickCallback (internal/process/next_tick.js:63:19)
Verifique 2 coisas:
dockerPara testar:
docker ps
NÃO USE SUDO se você estiver executando o DSP com usuário normal. Se você tiver o seguinte erro:
vagrant@vagrant:~/git/DockerSecurityPlayground$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json: dial unix /var/run/docker.sock: connect: permission denied
Você precisa adicionar seu usuário ao grupo docker: https://docs.docker.com/engine/install/linux-postinstall/
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
Faça logout e login. Agora você precisa limpar o DSP:
npm run uninstall
E agora tudo deve funcionar.
Erro ECONNRESET no MacOS:
events.js:183
throw er; // Unhandled 'error' event
^
Error: read ECONNRESET
at _errnoException (util.js:992:11)
at TCP.onread (net.js:618:25)
No Mac parece que há algum problema com alguns pacotes node, então para resolver isso execute:
MacBook-Pro:DockerSecurityPlayground gaetanoperrone$ npm install [email protected] --save-dev --save-exact
Outras informações aqui: http://gitlab.comics.unina.it/NS-Thesis/DockerSecurityPlayground_1/wikis/docker-operation-errors
git checkout -b minha-nova-funcionalidadegit commit -am 'Adiciona alguma funcionalidade'git push origin minha-nova-funcionalidadeUse as Issues para perguntar tudo o que quiser!
Agradecimentos a Giuseppe Criscuolo e Alessandro Placido Luise pelo design do logotipo.
Acesse CHANGELOG.md para ver todas as alterações de versão.
Se você usar o Docker Security Playground para sua atividade de pesquisa, cite o seguinte artigo publicado pelo IEEE (Institute of Electrical and Electronics Engineers): https://ieeexplore.ieee.org/document/8169747
@INPROCEEDINGS{8169747,
author={Perrone, G. and Romano, S. P.},
booktitle={2017 Principles, Systems and Applications of IP Telecommunications (IPTComm)},
title={The Docker Security Playground: A hands-on approach to the study of network security},
year={2017},
volume={},
number={},
pages={1-8},
keywords={Security;Communication networks;Tools;Containers;Virtualization;Standards},
doi={10.1109/IPTCOMM.2017.8169747}}
Este projeto está sob a licença MIT.
![]() gx1 🐛 💻 🖋 🎨 📖 🚧 📆 | ![]() Simon Pietro Romano 🎨 📖 📆 | ![]() catuhub 🐛 💻 🎨 📖 🚧 📆 | ![]() Giuseppe Di Terlizzi 💻 | ![]() Alessandro 📖 📹 🖋 | ![]() Roberto 💻 🖋 🚇 | ![]() the-licato 🚇 |
![]() Gabriele Previtera 💻 📢 |