
Фреймворк на основе микросервисов для изучения методов сетевой безопасности и тестирования на проникновение.

Docker Security Playground — это приложение, которое позволяет:
Рекомендуемый способ установки DSP — использование виртуальной машины Kali:
Ниже приведены шаги по установке DSP на виртуальной машине Kali. Выполните аналогичные шаги для других дистрибутивов Linux, но убедитесь, что все требования установлены.
sudo apt update && sudo apt install -y docker.io docker-compose nodejs npm git
Примечание (проблема с ключом Kali в 2025 году).
Если во время установки возникла следующая проблема:
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.Вам нужно добавить недостающий ключ:
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
Также проверьте, что docker compose работает:
docker compose --version # или docker-compose --version для старых версий
Также проверьте установку npm и nodejs:
node -v
npm -v
Вы можете запустить DSP на хосте M1, включив Rosetta, но я настоятельно рекомендую создать виртуальную машину Kali с помощью UTM или VMware Fusion, выполнить предыдущие шаги установки и установить пакет binfmt-misc для запуска образов x86 на архитектуре ARM.
sudo apt install binfmt-support qemu-user-static
Перезагрузите машину.
Затем используйте контейнер Tonisiigi, чтобы зарегистрировать все интерпретаторы для разных архитектур:
docker run --privileged --rm tonistiigi/binfmt --install amd64
Убедитесь, что образы docker могут работать на вашей машине:
docker run --rm -it --platform linux/amd64 ubuntu uname -m
git clone https://github.com/DockerSecurityPlayground/DSP.git
cd DSP
npm install
Когда установка завершена, вы можете запустить DSP:
npm start
DSP будет запущен по адресу "http://localhost:18181".
Примечание по использованию Wireshark на Kali: рекомендую использовать браузер chromium, так как контейнер wireshark использует некоторые кодеки, которые не поддерживаются Firefox на Kali. Вы можете запустить chromium, просто введя "chromium" в терминале.
Первым шагом будет установка всех необходимых папок на текущей машине.
Вы также можете автоматизировать этот шаг установки с помощью переменной окружения:
export DSP_AUTOINSTALL=1 && npm start
Если вы хотите использовать браузер хост-машины, вы можете экспонировать на интерфейсе 0.0.0.0. Если вы хотите экспонировать на другом интерфейсе, измените переменную окружения DSP_IFACE:
export DSP_IFACE="0.0.0.0"
Теперь вы можете использовать DSP на удалённом интерфейсе.
Если что-то пошло не так, вы можете сбросить DSP до заводских настроек с помощью следующей команды:
npm run uninstall
Это удалит всё, и вы сможете начать установку DSP заново.
DSP_Repo содержит официальные лабораторные работы DSP. Внесите свой вклад в DSP, создавая новые лабораторные работы.
Во время установки вы можете создать локальное окружение, не связанное с git, или привязать к приложению личный репозиторий. Это очень удобно, если вы хотите поделиться своей работой с другими людьми. Репозиторий DSP должен соответствовать определённым требованиям, поэтому я создал базовый шаблон репозитория DSP, который вы можете использовать для создания своего личного репозитория. Самый простой способ поделиться лабораторными работами следующий:
Важно, чтобы все используемые вами образы были доступны другим пользователям, поэтому:
Если вам нужен «частный способ» обмена лабораторными работами, вы должны делиться репозиторием другими способами; на данный момент нет поддержки обмена частными репозиториями.
В DSP вы можете управлять несколькими репозиториями пользователей (вкладка «Репозитории»).
Если у вас возникла проблема, используйте раздел Issues.
Для запуска теста:
mocha test/<test-nodejs-file.js>
Тесты используют метод helper.start() для инициализации тестового окружения:
Если во время установки возникла следующая ошибка:
[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)
Проверьте две вещи:
dockerДля проверки:
docker ps
НЕ ИСПОЛЬЗУЙТЕ SUDO, если вы запускаете DSP от обычного пользователя. Если вы получили следующую ошибку:
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
Вам нужно добавить своего пользователя в группу docker: https://docs.docker.com/engine/install/linux-postinstall/
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
Выйдите и снова войдите.
Теперь вам нужно очистить DSP:
npm run uninstall
И теперь всё должно работать.
Ошибка ECONNRESET на 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)
На Mac, похоже, есть проблема с некоторым пакетом node, поэтому для её решения выполните:
MacBook-Pro:DockerSecurityPlayground gaetanoperrone$ npm install [email protected] --save-dev --save-exact
Другая информация здесь: 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-featureИспользуйте Issues, чтобы задать всё, что хотите!
Спасибо Giuseppe Criscuolo и Alessandro Placido Luise за дизайн логотипа.
Перейдите в CHANGELOG.md, чтобы увидеть все изменения версий.
Если вы используете Docker Security Playground в своей исследовательской деятельности, процитируйте следующую статью, опубликованную 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}}
Этот проект находится под лицензией MIT.
![]() gx1 🐛 💻 🖋 🎨 📖 🚧 📆 | ![]() Simon Pietro Romano 🎨 📖 📆 | ![]() catuhub 🐛 💻 🎨 📖 🚧 📆 | ![]() Giuseppe Di Terlizzi 💻 | ![]() Alessandro 📖 📹 🖋 | ![]() Roberto 💻 🖋 🚇 | ![]() the-licato 🚇 |
![]() Gabriele Previtera 💻 📢 |