kali-linux-docker
यह Kali Linux Docker इमेज Kali Linux Rolling Distribution के नवीनतम संस्करण का न्यूनतम आधार स्थापना प्रदान करती है। इस इमेज में कोई उपकरण नहीं जोड़े गए हैं, इसलिए आपको उन्हें स्वयं स्थापित करना होगा। Kali Linux मेटापैकेजों के विवरण के लिए, देखें https://www.kali.org/news/kali-linux-metapackages/
Docker Hub: https://hub.docker.com/r/nu11secur1ty/kali-linux-docker
चूंकि --squash डॉकर डेमॉन को पास किया जा रहा है, यदि आपके डेमॉन में प्रयोगात्मक सुविधाएँ चालू नहीं हैं, तो build.sh स्क्रिप्ट विफल हो जाएगी।
Kali पर, यह /etc/docker/daemon.json में निम्नलिखित सामग्री के साथ किया जाता है:
{
"experimental": true
}
नोट: यह केवल Offensive Security में हमारे लिए आवश्यकता है जब हम Docker हब पर एक नई इमेज पुश करते हैं तो इमेज का आकार कम करने के लिए।
यदि आप व्यक्तिगत उपयोग के लिए बना रहे हैं, तो आप build.sh में --squash विकल्प हटा सकते हैं।
Tue May 21 13:59:06 EDT 2019
स्पष्ट रूप से, इसे चलाने के लिए, आपको Docker स्थापित करना होगा। OSX पर Docker के लिए आप brew का उपयोग कर सकते हैं, जबकि अधिकांश अन्य वितरणों के लिए, आप इसे अपने स्थानीय पैकेज मैनेजर का उपयोग करके स्थापित कर सकते हैं। एक बार स्थापित और सेट हो जाने पर, यह हमारी इमेज को Docker रिपॉजिटरी से खींचने का मामला है:
nu11secur1ty:~ # docker pull nu11secur1ty/kali-linux-docker
nu11secur1ty:~ # docker run -t -i nu11secur1ty/kali-linux-docker /bin/bash
root@7e2a35940eff:/# apt update
root@7e2a35940eff:/# apt dist-update
root@7e2a35940eff:/# apt update && apt install metasploit-framework
root@7e2a35940eff:/# apt update && apt install git
root@7e2a35940eff:/# apt update && apt install vim
root@7e2a35940eff:/# service postgresql start
root@7e2a35940eff:/# ss -ant
root@7e2a35940eff:/# msfdb init
root@7e2a35940eff:/# msfconsole
git clone https://github.com/nu11secur1ty/sqliv2.git
cd sqliv2
. उपयोग लिंक:sqliv2
. प्राप्त करें:
git clone https://github.com/nu11secur1ty/nu11secur1ty.git
लिंक:nu11secur1ty
यदि आप हमारी पूर्व-निर्मित इमेज का उपयोग करने के बजाय अपनी खुद की Kali इमेज बनाना चाहते हैं, तो हमने Github पर Kali Linux Docker पर होस्ट की गई निम्नलिखित स्क्रिप्ट के साथ इसे आसान बना दिया है। ये इमेज Linux सिस्टम या किसी अन्य OS पर सबसे अच्छी तरह बनाई जाती हैं जो debootstrap चला सकता है।
#!/bin/bash
# Install dependencies (debootstrap)
sudo apt-get install debootstrap
# Fetch the latest Kali debootstrap script from git
curl "https://gitlab.com/kalilinux/packages/debootstrap.git;a=blob_plain;f=scripts/kali;hb=HEAD" > kali-debootstrap &&\
sudo debootstrap kali ./kali-root http://http.kali.org/kali ./kali-debootstrap &&\
# Import the Kali image into Docker
sudo tar -C kali-root -c . | sudo docker import - kalilinux/kali &&\
sudo rm -rf ./kali-root &&\
# Test the Kali Docker Image
docker run -t -i kalilinux/kali cat /etc/debian_version &&\
echo "Build OK" || echo "Build failed!"


एक docker exec कमांड है जिसका उपयोग पहले से चल रहे कंटेनर से कनेक्ट करने के लिए किया जा सकता है।
docker exec -it <container name> /bin/bash का उपयोग करेंdocker exec -it <container name> <command> का उपयोग करें।कंटेनर में कमांड चलाने का सही तरीका है: docker-compose run <container name> <command>। उदाहरण के लिए, अपने वेब कंटेनर में शेल प्राप्त करने के लिए आप docker-compose run web /bin/bash चला सकते हैं
कमांडों की एक श्रृंखला चलाने के लिए, आपको उन्हें एक शेल का उपयोग करके एक एकल कमांड में लपेटना होगा। उदाहरण के लिए: docker-compose run <name in yml> sh -c '<command 1> && <command 2> && <command 3>'
कुछ मामलों में आप एक ऐसा कंटेनर चलाना चाह सकते हैं जो docker-compose.yml फ़ाइल द्वारा परिभाषित नहीं है, उदाहरण के लिए एक नए कंटेनर कॉन्फ़िगरेशन का परीक्षण करने के लिए। किसी दी गई इमेज के साथ नया कंटेनर शुरू करने के लिए docker run का उपयोग करें: docker run -it <image name> <command>
docker run कमांड वॉल्यूम माउंट, पर्यावरण चर, कार्यशील निर्देशिका, और अधिक निर्दिष्ट करने के लिए कमांड लाइन विकल्प स्वीकार करता है।
किसी भी संचालन को निष्पादित करने के लिए बिल्ड कंटेनर में शेल प्राप्त करना सबसे सरल तरीका है। आप बस compose फ़ाइल में परिभाषित cli कंटेनर तक पहुँच प्राप्त करना चाहते हैं। कमांड docker-compose -f build.yml run cli phase2/devtools-build इमेज का एक उदाहरण शुरू करेगा और आपके लिए bash शेल चलाएगा। वहाँ से आप drush, grunt या जो कुछ भी आपका दिल चाहे, उपयोग करने के लिए स्वतंत्र हैं।
Docker दुनिया में एक और अवधारणा एक एकल कमांड चलाने के लिए एक कंटेनर शुरू करना और कमांड पूरा होने पर कंटेनर को रुकने देना है। यह बहुत अच्छा है यदि आप कमांड कभी-कभार चलाते हैं, या कोई अन्य कंटेनर लगातार चलता नहीं रखना चाहते हैं। इस तरह से कंटेनरों पर अपने कमांड चलाना उन कमांडों के लिए भी उपयुक्त है जो फाइलसिस्टम पर कोई फाइल उत्पन्न नहीं करते हैं या यदि करते हैं, तो वे उन फाइलों को कंटेनर में माउंट किए गए वॉल्यूम पर लिखते हैं।
उदाहरण build.yml फ़ाइल में परिभाषित drush कंटेनर एक कंटेनर है जो विशेष रूप से एकल कार्यशील निर्देशिका में drush चलाने के लिए डिज़ाइन किया गया है जो केवल कमांड को तर्क के रूप में लेता है। यह दृष्टिकोण हमें आपकी Drupal साइट में sqlc, cache-rebuild, और अन्य जैसे किसी भी drush कमांड को जल्दी और आसानी से चलाने के लिए एक त्वरित और आसान तंत्र प्रदान करने की अनुमति देता है।
drush के समान grunt कमांड कंटेनर और एक एकल कमांड चलाने के आसपास और भी विशिष्ट कमांड कंटेनर के अन्य उदाहरण भी हैं, जैसे drush make एक make/निर्भरता फ़ाइल से साइट बनाने के लिए।
होस्ट पर वेबएप फ़ोल्डर कंटेनर के Apache रूट में माउंट किया जाएगा।
docker system prune
docker system prune -a
आप जिन इमेज को हटाना चाहते हैं उनकी आईडी का पता लगाने के लिए -a फ्लैग के साथ docker images कमांड का उपयोग करें। यह आपको इंटरमीडिएट इमेज लेयर सहित हर इमेज दिखाएगा। जब आप उन इमेज का पता लगा लेते हैं जिन्हें आप हटाना चाहते हैं, तो आप उनकी आईडी या टैग docker rmi को पास कर सकते हैं:
docker images -a
docker rmi Image Image
Docker इमेज में कई लेयर होते हैं। डैंगलिंग इमेज वे लेयर होते हैं जिनका किसी टैग की गई इमेज से कोई संबंध नहीं होता। वे अब कोई उद्देश्य पूरा नहीं करते और डिस्क स्थान लेते हैं। उन्हें docker images कमांड में फ़िल्टर फ्लैग, -f को dangling=true के मान के साथ जोड़कर पाया जा सकता है। जब आप सुनिश्चित हों कि आप उन्हें हटाना चाहते हैं, तो आप docker images purge कमांड का उपयोग कर सकते हैं:
NOTE
If you build an image without tagging it, the image will appear on the list of dangling images because it has no association with a tagged image. You can avoid this situation by providing a tag when you build, and you can retroactively tag an images with the docker tag command.
docker images -f dangling=true
docker images purge
आप docker images और grep के संयोजन का उपयोग करके एक पैटर्न से मेल खाने वाली सभी इमेज ढूंढ सकते हैं। एक बार संतुष्ट होने पर, आप awk का उपयोग करके आईडी को docker rmi को पास करके उन्हें हटा सकते हैं। ध्यान दें कि ये उपयोगिताएँ Docker द्वारा प्रदान नहीं की जाती हैं और सभी सिस्टम पर उपलब्ध नहीं हो सकती हैं:
docker images -a | grep "pattern"
docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
सिस्टम पर सभी Docker इमेज को docker images कमांड में -a जोड़कर सूचीबद्ध किया जा सकता है। एक बार जब आप सुनिश्चित हों कि आप उन सभी को हटाना चाहते हैं, तो आप इमेज आईडी को docker rmi को पास करने के लिए -q फ्लैग जोड़ सकते हैं:
docker images -a
docker rmi $(docker images -a -q)
यदि आप जानते हैं कि जब आप एक कंटेनर बना रहे हैं तो आप उसे समाप्त होने के बाद रखना नहीं चाहेंगे, तो आप docker run --rm चला सकते हैं ताकि बाहर निकलने पर यह स्वचालित रूप से हटा दिया जाए।
docker run --rm image_name
आप docker ps -a का उपयोग करके कंटेनरों का पता लगा सकते हैं और उन्हें उनकी स्थिति के अनुसार फ़िल्टर कर सकते हैं: created, restarting, running, paused, या exited। बाहर निकले कंटेनरों की सूची की समीक्षा करने के लिए, स्थिति के आधार पर फ़िल्टर करने के लिए -f फ्लैग का उपयोग करें। जब आप सत्यापित कर लें कि आप उन कंटेनरों को हटाना चाहते हैं, तो docker rm कमांड को आईडी पास करने के लिए -q का उपयोग करें।
docker ps -a -f status=exited
docker rm $(docker ps -a -f status=exited -q)
Docker फ़िल्टर को अतिरिक्त मान के साथ फ़िल्टर फ्लैग को दोहराकर जोड़ा जा सकता है। इसके परिणामस्वरूप उन कंटेनरों की सूची मिलती है जो या तो शर्त को पूरा करते हैं। उदाहरण के लिए, यदि आप Created (एक ऐसी स्थिति जो तब उत्पन्न हो सकती है जब आप अमान्य कमांड के साथ कंटेनर चलाते हैं) या Exited के रूप में चिह्नित सभी कंटेनरों को हटाना चाहते हैं, तो आप दो फ़िल्टर का उपयोग कर सकते हैं:
docker ps -a -f status=exited -f status=created
docker rm $(docker ps -a -f status=exited -f status=created -q)
आप docker ps और grep के संयोजन का उपयोग करके एक पैटर्न से मेल खाने वाले सभी कंटेनर ढूंढ सकते हैं। जब आप संतुष्ट हों कि आपके पास हटाने के लिए सूची है, तो आप awk और xargs का उपयोग करके आईडी को docker rmi को प्रदान कर सकते हैं। ध्यान दें कि ये उपयोगिताएँ Docker द्वारा प्रदान नहीं की जाती हैं और सभी सिस्टम पर उपलब्ध नहीं हो सकती हैं:
docker ps -a | grep "pattern”
docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
आप docker ps के साथ अपने सिस्टम पर कंटेनरों की समीक्षा कर सकते हैं। -a फ्लैग जोड़ने से सभी कंटेनर दिखाई देंगे। जब आप सुनिश्चित हों कि आप उन्हें हटाना चाहते हैं, तो आप docker stop और docker rm कमांड को आईडी प्रदान करने के लिए -q फ्लैग जोड़ सकते हैं:
docker ps -a
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
एक या अधिक विशिष्ट वॉल्यूम हटाएँ - Docker 1.9 और बाद के संस्करण
आप जिस वॉल्यूम नाम या नामों को हटाना चाहते हैं, उनका पता लगाने के लिए docker volume ls कमांड का उपयोग करें। फिर आप docker volume rm कमांड के साथ एक या अधिक वॉल्यूम हटा सकते हैं:
docker volume ls
docker volume rm volume_name volume_name
चूंकि वॉल्यूम का उद्देश्य कंटेनरों से स्वतंत्र रूप से अस्तित्व में रहना है, जब एक कंटेनर हटाया जाता है, तो उसी समय एक वॉल्यूम स्वचालित रूप से नहीं हटाया जाता है। जब एक वॉल्यूम मौजूद होता है और अब किसी भी कंटेनर से जुड़ा नहीं होता है, तो इसे डैंगलिंग वॉल्यूम कहा जाता है। यह सुनिश्चित करने के लिए कि आप उन्हें हटाना चाहते हैं, आप परिणामों को डैंगलिंग वॉल्यूम तक सीमित करने के लिए फ़िल्टर के साथ docker volume ls कमांड का उपयोग कर सकते हैं। जब आप सूची से संतुष्ट हों, तो आप docker volume prune के साथ उन सभी को हटा सकते हैं:
docker volume ls -f dangling=true
docker volume prune
यदि आपने एक अनाम वॉल्यूम बनाया है, तो इसे -v फ्लैग के साथ कंटेनर के साथ ही हटाया जा सकता है। ध्यान दें कि यह केवल अनाम वॉल्यूम के साथ काम करता है। जब कंटेनर सफलतापूर्वक हटा दिया जाता है, तो उसकी आईडी प्रदर्शित होती है। ध्यान दें कि वॉल्यूम को हटाने का कोई संदर्भ नहीं दिया गया है। यदि यह अनाम है, तो यह सिस्टम से चुपचाप हटा दिया जाता है। यदि इसका नाम है, तो यह चुपचाप मौजूद रहता है।
docker rm -v container_name
यह मार्गदर्शिका Docker के साथ इमेज, कंटेनर और वॉल्यूम हटाने के लिए उपयोग किए जाने वाले कुछ सामान्य कमांडों को कवर करती है। प्रत्येक के साथ उपयोग किए जा सकने वाले कई अन्य संयोजन और फ्लैग हैं। उपलब्ध चीज़ों की एक व्यापक मार्गदर्शिका के लिए, docker system prune, docker rmi, docker rm और docker volume rm के लिए Docker दस्तावेज़ देखें। यदि मार्गदर्शिका में ऐसे सामान्य सफाई कार्य हैं जिन्हें आप देखना चाहते हैं, तो कृपया टिप्पणियों में पूछें या सुझाव दें।

