Ubuntu में capsh गाइड: Linux Capabilities और सुरक्षा प्रबंधन

परिदृश्य और तकनीकी भूमिका

पारंपरिक रूट विशेषाधिकारों के स्थान पर आधुनिक लिनक्स वातावरण में प्रक्रियाओं को सूक्ष्म स्तर पर नियंत्रित करने के लिए कर्नेल कैपेबिलिटीज़ (Capabilities) सबसे प्रभावी साधन हैं। capsh (Capability Shell Wrapper) यूटिलिटी इन सुरक्षा विशेषाधिकारों के विश्लेषण, परीक्षण और अलगाव के लिए अनिवार्य उपकरण मानी जाती है। प्रस्तुत मार्गदर्शिका में हम Ubuntu सर्वर पर पैकेज सेटअप से आरंभ करते हुए मौजूदा विशेषाधिकारों की पड़ताल, हेक्साडेसिमल बिटमास्क डिकोडिंग, बाउंडिंग सेट से अनुमतियों को हटाने (drop) तथा गैर-विशेषाधिकार प्राप्त यूज़र कॉन्टेक्स्ट में कस्टम सुरक्षा नीतियां लागू करने की व्यावहारिक कार्यप्रणाली को विस्तार से समझेंगे।

libcap2-bin पैकेज संस्थापन एवं सक्रिय प्रोसेस अनुमतियों की जांच (–print)

सिस्टम पर कैपेबिलिटी प्रबंधन टूल्स की उपलब्धता सुनिश्चित करने के लिए सबसे पहले आधिकारिक रिपॉजिटरी से आवश्यक बाइनरी टूलकिट कॉन्फ़िगर करना आवश्यक होता है।

apt-get update -qq && apt-get install -y libcap2-bin

वर्तमान शैल सत्र के सुरक्षा मापदंडों का पूर्ण ब्योरा प्राप्त करने हेतु capsh --print निष्पादित किया जाता है। यह कमांड प्रोसेस के अधिकार क्षेत्र—जैसे Effective, Permitted, Inheritable और Bounding सेट—के साथ-साथ UID, GID और Securebits फ्लैग की वास्तविक स्थिति को स्क्रीन पर प्रदर्शित करता है। इसके माध्यम से सिस्टम प्रशासक यह स्पष्ट रूप से माप सकते हैं कि वर्तमान वातावरण को कर्नेल स्तर पर कितनी परिचालन स्वतंत्रता प्राप्त है।

⚙️ [महत्वपूर्ण कमांड विकल्प]

--print : चालू प्रोसेस के समस्त कैपेबिलिटी सेट, यूज़र/ग्रुप आईडी एवं सुरक्षा बिट्स की विवरणी प्रस्तुत करता है।
--drop : बाउंडिंग सेट में से अवांछित या संवेदनशील विशेषाधिकारों को स्थायी रूप से निरस्त करता है।
--caps : प्रोसेस के लिए आवश्यक कैपेबिलिटी सेट को सीधे परिभाषित करता है।
--user : दिए गए विशिष्ट यूज़र और ग्रुप के पहचान-पत्रों के साथ कमांड सत्र को सक्रिय करता है।
--inh : चाइल्ड प्रोसेस में अंतरित होने वाले वंशानुगत (Inheritable) अनुमतियों के समूह को निर्धारित करता है।
--addamb : एम्बिएंट (Ambient) सेट में नई अनुमति जोड़कर निष्पाद्य फ़ाइलों तक विशेषाधिकारों का सुरक्षित संचार करता है।
--secbits : सिक्योरबिट्स (Securebits) फ्लैग्स को नियंत्रित कर अनुमतियों में फेरबदल की नीतियों को लॉक या सीमित करता है।
--chroot : रूट डायरेक्टरी पथ को पुनर्संरचित करके प्रोसेस को अलग-थलग (isolated) परिवेश प्रदान करता है।

capsh –print

कर्नेल कंपैटिबिलिटी परीक्षण एवं हेक्स बिटमास्क डिकोडिंग (–supports, –decode)

सक्रिय लिनक्स कर्नेल में विशिष्ट सुरक्षा सुविधाओं की उपलब्धता का सत्यापन करने के लिए capsh --supports=cap_net_raw का उपयोग किया जाता है। यदि कर्नेल संबंधित फीचर (जैसे रॉ पैकेट सॉकेट निर्माण) को पूरी तरह पहचानता है, तो यह बिना किसी कंसोल आउटपुट के शांत रूप से रिटर्न कोड 0 प्रदान करता है।

capsh –supports=cap_net_raw

cap_sys_admin जैसे व्यापक और संवेदनशील प्रणाली-प्रशासन विशेषाधिकार की सक्रियता परखने के लिए capsh --supports=cap_sys_admin का निष्पादन किया जाता है। इस जांच से यह सुनिश्चित हो जाता है कि ऑटोमेशन स्क्रिप्ट निष्पादित होने से पूर्व संबंधित विशेषाधिकार आर्किटेक्चर कर्नेल द्वारा समर्थित है या नहीं।

capsh –supports=cap_sys_admin

लिनक्स की आंतरिक प्रक्रिया स्थिति फ़ाइलों (जैसे /proc/[PID]/status) में कैपेबिलिटीज़ अक्सर हेक्साडेसिमल प्रारूप में संगृहीत रहती हैं। capsh --decode=0x000001ffffffffff कमांड इन जटिल हेक्स मानों का विश्लेषण करके उन्हें मानव-पठनीय सूची में रूपांतरित कर देता है। इस पार्सिंग के माध्यम से प्रशासक सीधे देख सकते हैं कि कौन से घटक जैसे cap_chown, cap_sys_admin, अथवा cap_bpf बाइनरी स्तर पर चालू हैं।

capsh –decode=0x000001ffffffffff

बाउंडिंग सेट से विशेषाधिकार कटौती एवं प्रोसेस आइसोलेशन (–drop)

‘न्यूनतम विशेषाधिकार’ (Principle of Least Privilege) के सिद्धांत को लागू करने के लिए प्रोसेस के बाउंडिंग सेट से अनावश्यक शक्तियों को घटाना अनिवार्य होता है। capsh --drop=cap_chown,cap_setuid --print कमांड निष्पादित करते ही फ़ाइल स्वामित्व बदलने (cap_chown) और यूज़र आईडी स्विच करने (cap_setuid) की क्षमताएं स्थायी रूप से समाप्त हो जाती हैं। टर्मिनल के परिणाम में Bounding set और IAB विवरण यह प्रमाणित करते हैं कि हटाई गई अनुमतियां अब प्रोसेस से पूरी तरह निष्कासित हो चुकी हैं।

capsh –drop=cap_chown,cap_setuid –print

अलग किए गए परिवेश में उप-प्रक्रियाओं के व्यवहार को जांचने के लिए capsh --drop=cap_chown -- -c "capsh --print | grep 'Bounding set'" का प्रयोग किया जाता है। निष्पादन के पश्चात प्राप्त छंटी हुई प्रविष्टि दर्शाती है कि जनक प्रोसेस द्वारा त्याग दी गई cap_chown अनुमति आगे बनने वाले चाइल्ड प्रोसेस में भी संचरित नहीं होती, जिससे एक अभेद्य सुरक्षा बाउंड्री तैयार होती है।

capsh –drop=cap_chown – -c “capsh –print | grep ‘Bounding set’”

गैर-विशेषाधिकार प्राप्त खाते में रूपांतरण एवं कस्टम अनुमति विन्यास (–user, –caps)

पूर्ण रूट विशेषाधिकारों को त्यागकर सामान्य यूज़र के दायरे में प्रक्रिया चलाने के लिए capsh --user=nobody --print चलाया जाता है। परिणाम में देखा जा सकता है कि UID और GID तत्काल प्रभाव से गैर-विशेषाधिकार प्राप्त पहचान nobody (65534) में बदल जाते हैं, और बिना अतिरिक्त आवंटन के सभी विशेष प्रशासनिक सुविधाएं स्वतः निष्प्रभावी हो जाती हैं।

capsh –user=nobody –print

यदि किसी साधारण यूज़र प्रोसेस (जैसे वेब सर्वर) को मानक लो-रेंज पोर्ट्स (जैसे 80 या 443) पर बाइंड करने की आवश्यकता हो, तो पूरे सिस्टम का रूट एक्सेस दिए बिना capsh --user=nobody --caps="cap_net_bind_service+ep cap_setpcap-ep" --print द्वारा सिर्फ cap_net_bind_service को Effective एवं Permitted सेट में जोड़ा जा सकता है। कंसोल आउटपुट में cap_net_bind_service=ep की उपस्थिति यह स्पष्ट करती है कि प्रोसेस सामान्य यूज़र संदर्भ में रहते हुए भी सीमित और सुरक्षित नेटवर्क विशेषाधिकारों के साथ संचालित हो सकती है।

capsh –user=nobody –caps=“cap_net_bind_service+ep cap_setpcap-ep” –print

इस अध्ययन में हमने उबंटू परिवेश में capsh टूल के माध्यम से लिनक्स कैपेबिलिटीज़ के निरीक्षण, डिकोडिंग और विशेषाधिकार अलगाव की व्यावहारिक तकनीकों को समझा। संपूर्ण रूट पहुंच पर निर्भरता समाप्त कर केवल आवश्यक कार्य-आधारित अनुमतियां आवंटित करने से लिनक्स अवसंरचना अप्रत्याशित सुरक्षा खतरों से सुरक्षित रहती है।