
Un framework basato su microservizi per lo studio della Sicurezza di Rete e delle tecniche di Penetration Test

Docker Security Playground è un'applicazione che ti permette di:
Il flusso di installazione consigliato per DSP è utilizzare una VM Kali:
Ecco i passaggi per installare DSP su una VM Kali. Segui passaggi simili per altre distribuzioni Linux, assicurandoti di installare tutti i requisiti.
sudo apt update && sudo apt install -y docker.io docker-compose nodejs npm git
Nota (problema keyring Kali 2025).
Se hai il seguente problema durante l'installazione:
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.Devi aggiungere la chiave mancante:
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
Inoltre, verifica che docker compose funzioni:
docker compose --version # oppure docker-compose --version per versioni più vecchie
Verifica anche l'installazione di npm e nodejs:
node -v
npm -v
È possibile eseguire DSP su host M1 abilitando Rosetta, ma consiglio vivamente di creare una VM Kali con UTM o Vmware Fusion, seguire i passaggi di installazione precedenti e installare il pacchetto binfmt-misc per eseguire immagini x86 su architettura ARM.
sudo apt install binfmt-support qemu-user-static
Riavvia la macchina.
Quindi, usa il container Tonisiigi per registrare tutti gli interpreti per le diverse architetture:
docker run --privileged --rm tonistiigi/binfmt --install amd64
Verifica che le immagini docker possano essere eseguite sulla tua macchina:
docker run --rm -it --platform linux/amd64 ubuntu uname -m
git clone https://github.com/DockerSecurityPlayground/DSP.git
cd DSP
npm install
Al termine dell'installazione, puoi avviare DSP:
npm start
DSP sarà in esecuzione su "http://localhost:18181".
Nota per l'uso di Wireshark su Kali: suggerisco di usare il browser Chromium, poiché il container di Wireshark utilizza alcuni codec che non sono supportati da Firefox su Kali. Puoi avviare Chromium semplicemente digitando "chromium" nel terminale.
Il primo passo sarà installare tutte le cartelle necessarie nella macchina corrente.
Puoi anche automatizzare questo passaggio di installazione utilizzando la variabile d'ambiente
export DSP_AUTOINSTALL=1 && npm start
Se vuoi utilizzare il browser del tuo host, puoi esporre sull'interfaccia 0.0.0.0. Se vuoi esporre su un'altra interfaccia, cambia la variabile d'ambiente DSP_IFACE:
export DSP_IFACE="0.0.0.0"
Ora puoi usare DSP su interfaccia remota.
Se qualcosa va storto, puoi ripristinare DSP alle impostazioni di fabbrica usando il seguente comando:
npm run uninstall
Questo cancellerà tutto e potrai ricominciare dal passo di installazione.
DSP_Repo contiene i laboratori ufficiali di DSP. Contribuisci a DSP creando nuovi laboratori DSP.
Durante l'installazione puoi creare un ambiente locale che non ha collegamento con git, oppure puoi associare un repository personale all'applicazione. Questo è molto utile se vuoi condividere il tuo lavoro con altre persone. Il repository DSP deve avere diversi requisiti, quindi ho creato un template base del repository DSP che puoi usare per creare il tuo repository personale. Quindi, il modo più semplice per condividere laboratori è il seguente:
È importante che tutte le immagini che usi siano disponibili per altri utenti, quindi:
Se hai bisogno di un "modo privato" per condividere laboratori, dovresti condividere il repository in altri modi; al momento non esiste supporto per la condivisione di repository privati.
In DSP puoi gestire più repository utente (scheda Repositories).
Se hai un problema, usa la sezione Issues.
Per eseguire un test:
mocha test/<test-nodejs-file.js>
I test usano il metodo helper.start() per inizializzare l'ambiente di test:
Se hai il seguente errore durante l'installazione:
[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 due cose:
dockerPer testarlo:
docker ps
NON USARE SUDO se stai eseguendo DSP con utente normale. Se hai il seguente errore:
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
Devi aggiungere il tuo utente al gruppo docker: https://docs.docker.com/engine/install/linux-postinstall/
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
Esci e riaccedi. Ora devi pulire DSP:
npm run uninstall
E ora tutto dovrebbe funzionare.
Errore MacOS ECONNRESET:
events.js:183
throw er; // Unhandled 'error' event
^
Error: read ECONNRESET
at _errnoException (util.js:992:11)
at TCP.onread (net.js:618:25)
Su Mac sembra esserci un problema con qualche pacchetto node, quindi per risolverlo esegui:
MacBook-Pro:DockerSecurityPlayground gaetanoperrone$ npm install [email protected] --save-dev --save-exact
Altre informazioni qui: http://gitlab.comics.unina.it/NS-Thesis/DockerSecurityPlayground_1/wikis/docker-operation-errors
git checkout -b my-new-featuregit commit -am 'Add some feature'git push origin my-new-featureUsa gli Issues per chiedere tutto ciò che vuoi!
Grazie a Giuseppe Criscuolo e Alessandro Placido Luise per la progettazione del logo.
Vai su CHANGELOG.md per vedere tutte le modifiche di versione.
Se usi Docker Security Playground per la tua attività di ricerca, cita il seguente articolo pubblicato dall'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}}
Questo progetto è sotto la licenza MIT.
![]() gx1 🐛 💻 🖋 🎨 📖 🚧 📆 | ![]() Simon Pietro Romano 🎨 📖 📆 | ![]() catuhub 🐛 💻 🎨 📖 🚧 📆 | ![]() Giuseppe Di Terlizzi 💻 | ![]() Alessandro 📖 📹 🖋 | ![]() Roberto 💻 🖋 🚇 | ![]() the-licato 🚇 |
![]() Gabriele Previtera 💻 📢 |