
Un framework basado en microservicios para el estudio de Seguridad de Redes y técnicas de Pruebas de Penetración.

Docker Security Playground es una aplicación que te permite:
El flujo de trabajo de instalación recomendado para DSP es usando una máquina virtual Kali:
Aquí los pasos para instalar DSP en una máquina virtual Kali. Sigue pasos similares para otras distribuciones de Linux, pero asegúrate de instalar todos los requisitos.
sudo apt update && sudo apt install -y docker.io docker-compose nodejs npm git
Nota (problema con el keyring de Kali 2025).
Si tienes el siguiente problema durante la instalación:
Fetched 34.0 kB in 1s (58.4 kB/s) Error: no se pudo obtener http://http.kali.org/kali/dists/kali-rolling/InRelease Las siguientes firmas no se pudieron verificar porque la clave pública no está disponible: NO_PUBKEY ED65462EC8D5E4C5 Warning: Some index files failed to download. They have been ignored, or old ones used instead.Necesitas añadir la clave faltante:
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
También, verifica que docker compose funcione:
docker compose --version # o docker-compose --version para versiones antiguas
También verifica la instalación de npm y Node.js:
node -v
npm -v
Es posible ejecutar DSP en un host M1 habilitando Rosetta, pero recomiendo crear una máquina virtual Kali con UTM o VMware Fusion, seguir los pasos de instalación anteriores e instalar el paquete binfmt-misc para ejecutar imágenes x86 en arquitectura ARM.
sudo apt install binfmt-support qemu-user-static
Reinicia la máquina.
Luego, usa el contenedor de Tonisiigi para registrar todos los intérpretes para las diferentes arquitecturas:
docker run --privileged --rm tonistiigi/binfmt --install amd64
Verifica que las imágenes de Docker puedan ejecutarse en tu máquina:
docker run --rm -it --platform linux/amd64 ubuntu uname -m
git clone https://github.com/DockerSecurityPlayground/DSP.git
cd DSP
npm install
Cuando la instalación se haya completado, puedes iniciar DSP:
npm start
DSP se ejecutará en "http://localhost:18181" .
Nota para usar Wireshark en Kali: sugiero usar el navegador Chromium, ya que el contenedor de Wireshark usa algunos códecs que no son compatibles con Firefox en Kali. Puedes iniciar Chromium simplemente escribiendo "chromium" en la terminal.
El primer paso será instalar todas las carpetas necesarias en la máquina actual.
También puedes automatizar este paso de instalación usando la variable de entorno
export DSP_AUTOINSTALL=1 && npm start
Si quieres usar el navegador de tu host, puedes exponer en la interfaz 0.0.0.0. Si quieres exponer en otra interfaz, cambia la variable de entorno DSP_IFACE:
export DSP_IFACE="0.0.0.0"
Ahora puedes usar DSP en la interfaz remota.
Si algo sale mal, puedes restablecer DSP a los valores de fábrica usando el siguiente comando:
npm run uninstall
Esto eliminará todo, y podrás iniciar DSP desde el paso de instalación.
DSP_Repo contiene laboratorios oficiales de DSP. Contribuye a DSP creando nuevos laboratorios DSP.
Durante la instalación puedes crear un entorno local que no tenga enlace con git, o puedes asociar un repositorio personal a la aplicación. Esto es muy útil si quieres compartir tu trabajo con otras personas.
El repositorio de DSP debe cumplir varios requisitos, por lo que he creado una plantilla base de repositorio DSP que puedes usar para crear tu repositorio personal.
Por lo tanto, la forma más fácil de compartir laboratorios es la siguiente:
Es importante que todas las imágenes que uses estén disponibles para otros usuarios, por lo tanto:
Si necesitas una "forma privada" de compartir laboratorios, debes compartir el repositorio de otras maneras; actualmente no hay soporte para compartir repositorios privados.
En DSP puedes gestionar múltiples repositorios de usuario (pestaña Repositorios).
Si tienes un problema, puedes usar la sección de Issues.
Para ejecutar una prueba:
mocha test/<test-nodejs-file.js>
las pruebas usan el método helper.start() para inicializar el entorno de prueba:
Si tienes el siguiente error durante la instalación:
[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)
Verifica dos cosas:
dockerPara probarlo:
docker ps
NO USES SUDO si estás ejecutando DSP con un usuario normal. Si tienes el siguiente error:
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
Necesitas añadir tu usuario al grupo docker: https://docs.docker.com/engine/install/linux-postinstall/
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
Cierra sesión e inicia sesión Ahora necesitas limpiar DSP:
npm run uninstall
Y ahora todo debería funcionar.
Error ECONNRESET en 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)
En Mac parece que hay algún problema con algún paquete de Node, así que para solucionarlo ejecuta:
MacBook-Pro:DockerSecurityPlayground gaetanoperrone$ npm install [email protected] --save-dev --save-exact
Otra información aquí: http://gitlab.comics.unina.it/NS-Thesis/DockerSecurityPlayground_1/wikis/docker-operation-errors
git checkout -b my-new-featuregit commit -am 'Añadir alguna característica'git push origin my-new-featureUsa la sección de Issues para preguntar todo lo que quieras.
Gracias a Giuseppe Criscuolo y Alessandro Placido Luise por el diseño del logotipo.
Ve a CHANGELOG.md para ver todos los cambios de versión.
Si usas Docker Security Playground para tu actividad de investigación, cita el siguiente artículo publicado por el IEEE (Instituto de Ingenieros Eléctricos y Electrónicos) 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 proyecto está bajo la licencia MIT.
![]() gx1 🐛 💻 🖋 🎨 📖 🚧 📆 | ![]() Simon Pietro Romano 🎨 📖 📆 | ![]() catuhub 🐛 💻 🎨 📖 🚧 📆 | ![]() Giuseppe Di Terlizzi 💻 | ![]() Alessandro 📖 📹 🖋 | ![]() Roberto 💻 🖋 🚇 | ![]() the-licato 🚇 |
![]() Gabriele Previtera 💻 📢 |