Docker --privileged
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
जब आप एक कंटेनर को विशेषाधिकार प्राप्त के रूप में चलाते हैं, तो ये सुरक्षा उपाय हैं जिन्हें आप निष्क्रिय कर रहे हैं:
एक विशेषाधिकार प्राप्त कंटेनर में, सभी डिवाइस /dev/
में पहुंचा जा सकता है। इसलिए आप माउंटिंग करके होस्ट के डिस्क से भाग सकते हैं।
कर्नेल फ़ाइल सिस्टम एक प्रक्रिया को कर्नेल के व्यवहार को संशोधित करने का तंत्र प्रदान करते हैं। हालाँकि, जब कंटेनर प्रक्रियाओं की बात आती है, तो हम उन्हें कर्नेल में कोई परिवर्तन करने से रोकना चाहते हैं। इसलिए, हम कर्नेल फ़ाइल सिस्टम को कंटेनर के भीतर केवल-पढ़ने योग्य के रूप में माउंट करते हैं, यह सुनिश्चित करते हुए कि कंटेनर प्रक्रियाएँ कर्नेल को संशोधित नहीं कर सकतीं।
/proc फ़ाइल प्रणाली चयनात्मक रूप से लिखने योग्य है लेकिन सुरक्षा के लिए, कुछ भागों को tmpfs के साथ ओवरले करके लिखने और पढ़ने की पहुंच से ढक दिया गया है, यह सुनिश्चित करते हुए कि कंटेनर प्रक्रियाएँ संवेदनशील क्षेत्रों तक नहीं पहुँच सकतीं।
tmpfs एक फ़ाइल प्रणाली है जो सभी फ़ाइलों को वर्चुअल मेमोरी में संग्रहीत करती है। tmpfs आपके हार्ड ड्राइव पर कोई फ़ाइलें नहीं बनाती। इसलिए यदि आप एक tmpfs फ़ाइल प्रणाली को अनमाउंट करते हैं, तो इसमें मौजूद सभी फ़ाइलें हमेशा के लिए खो जाती हैं।
कंटेनर इंजन कंटेनरों को सीमित संख्या में क्षमताओं के साथ लॉन्च करते हैं ताकि डिफ़ॉल्ट रूप से कंटेनर के अंदर क्या होता है, उसे नियंत्रित किया जा सके। विशेषाधिकार प्राप्त वाले सभी क्षमताओं तक पहुँच रखते हैं। क्षमताओं के बारे में जानने के लिए पढ़ें:
Linux Capabilitiesआप --privileged
मोड में चलाए बिना कंटेनर के लिए उपलब्ध क्षमताओं को --cap-add
और --cap-drop
ध्वजों का उपयोग करके हेरफेर कर सकते हैं।
Seccomp एक कंटेनर द्वारा कॉल किए जा सकने वाले syscalls को सीमित करने के लिए उपयोगी है। डॉकर कंटेनरों को चलाते समय एक डिफ़ॉल्ट सेकंप प्रोफ़ाइल डिफ़ॉल्ट रूप से सक्षम होती है, लेकिन विशेषाधिकार मोड में यह अक्षम होती है। Seccomp के बारे में अधिक जानें यहाँ:
SeccompAlso, note that when Docker (or other CRIs) are used in a Kubernetes cluster, the seccomp filter is disabled by default
AppArmor एक कर्नेल संवर्धन है जो कंटेनरों को सीमित संसाधनों के सेट में प्रति-कार्यक्रम प्रोफाइल के साथ सीमित करता है। जब आप --privileged
ध्वज के साथ चलाते हैं, तो यह सुरक्षा अक्षम हो जाती है।
--privileged
ध्वज के साथ कंटेनर चलाने से SELinux लेबल अक्षम हो जाते हैं, जिससे यह कंटेनर इंजन का लेबल विरासत में लेता है, आमतौर पर unconfined
, जो कंटेनर इंजन के समान पूर्ण पहुंच प्रदान करता है। रूटलेस मोड में, यह container_runtime_t
का उपयोग करता है, जबकि रूट मोड में, spc_t
लागू होता है।
Namespaces प्रभावित नहीं होते --privileged
ध्वज द्वारा। भले ही उनके पास सुरक्षा प्रतिबंध सक्षम नहीं हैं, वे सिस्टम या होस्ट नेटवर्क पर सभी प्रक्रियाओं को नहीं देखते, उदाहरण के लिए। उपयोगकर्ता --pid=host
, --net=host
, --ipc=host
, --uts=host
कंटेनर इंजन ध्वजों का उपयोग करके व्यक्तिगत नामस्थान को अक्षम कर सकते हैं।
डिफ़ॉल्ट रूप से, कंटेनर इंजन उपयोगकर्ता नामस्थान का उपयोग नहीं करते हैं, सिवाय रूटलेस कंटेनरों के, जिन्हें फ़ाइल सिस्टम माउंटिंग और कई UID का उपयोग करने के लिए इसकी आवश्यकता होती है। उपयोगकर्ता नामस्थान, जो रूटलेस कंटेनरों के लिए अनिवार्य हैं, को बंद नहीं किया जा सकता है और यह विशेषाधिकारों को सीमित करके सुरक्षा को महत्वपूर्ण रूप से बढ़ाते हैं।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)