
إطار عمل قائم على الخدمات المصغرة لدراسة تقنيات أمن الشبكات واختبار الاختراق

Docker Security Playground هو تطبيق يسمح لك بـ:
سير العمل المقترح لتثبيت DSP هو باستخدام جهاز افتراضي Kali:
فيما يلي خطوات تثبيت DSP على جهاز افتراضي Kali. اتبع خطوات مماثلة لتوزيعات Linux الأخرى، ولكن تأكد من تثبيت جميع المتطلبات.
sudo apt update && sudo apt install -y docker.io docker-compose nodejs npm git
ملاحظة (مشكلة kali keyring 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 عن طريق إنشاء مختبرات 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
والآن يجب أن يعمل كل شيء.
خطأ 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، يبدو أن هناك مشكلة مع بعض حزمة 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 (معهد مهندسي الكهرباء والإلكترونيات) 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 💻 📢 |