
네트워크 보안 및 침투 테스트 기술 연구를 위한 마이크로서비스 기반 프레임워크

Docker Security Playground는 다음을 할 수 있는 애플리케이션입니다:
DSP의 권장 설치 방법은 Kali VM을 사용하는 것입니다:
다음은 Kali VM에 DSP를 설치하는 단계입니다. 다른 Linux 배포판의 경우 유사한 단계를 따르되 모든 요구 사항을 설치했는지 확인하세요.
sudo apt update && sudo apt install -y docker.io docker-compose nodejs npm git
참고 (2025 Kali 키링 문제).
설치 중 다음 문제가 발생하는 경우:
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
Rosetta를 활성화하여 호스트 M1에서 DSP를 실행할 수 있지만, UTM 또는 Vmware Fusion으로 Kali VM을 만들고 이전 설치 단계를 따른 후, ARM 아키텍처에서 x86 이미지를 실행하기 위해 binfmt-misc 패키지를 설치하는 것을 강력히 권장합니다.
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"에서 실행됩니다.
Kali에서 Wireshark 사용 시 참고: Chromium 브라우저를 사용하는 것이 좋습니다. Wireshark 컨테이너가 Kali의 Firefox에서 지원되지 않는 코덱을 사용하기 때문입니다. 터미널에 "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 실습을 만들어 DSP에 기여하세요.
설치 중에 git과 연결되지 않은 로컬 환경을 만들거나 개인 저장소를 애플리케이션에 연결할 수 있습니다. 이는 작업을 다른 사람과 공유하려는 경우 매우 유용합니다. DSP 저장소는 여러 요구 사항을 충족해야 하므로, 개인 저장소를 만드는 데 사용할 수 있는 기본 DSP Repo 템플릿을 만들었습니다. 따라서 실습을 공유하는 가장 쉬운 방법은 다음과 같습니다:
사용하는 모든 이미지는 다른 사용자가 사용할 수 있어야 하므로:
"비공개 방식"으로 실습을 공유해야 하는 경우 다른 방법으로 저장소를 공유해야 합니다. 현재 비공개 저장소 공유는 지원되지 않습니다.
DSP에서 여러 사용자 저장소를 관리할 수 있습니다 (저장소 탭).
문제가 있는 경우 Issue 섹션을 사용하세요.
테스트 실행:
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
일반 사용자로 DSP를 실행하는 경우 sudo를 사용하지 마세요. 다음 오류가 발생하는 경우:
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
그러면 모든 것이 정상적으로 작동할 것입니다.
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)
Mac에서는 일부 노드 패키지에 문제가 있는 것으로 보입니다. 이를 해결하려면 다음을 실행하세요:
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-featureIssues 를 사용하여 원하는 모든 것을 물어보세요!
로고 디자인에 기여한 Giuseppe Criscuolo와 Alessandro Placido Luise에게 감사드립니다.
모든 버전 변경 사항은 CHANGELOG.md에서 확인하세요.
연구 활동에 Docker Security Playground를 사용하는 경우, IEEE(전기전자공학자협회)에서 발행한 다음 논문을 인용하세요: 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 💻 📢 |