केवल / से पढ़ने के लिए उपयोगकर्ता पहुँच प्रतिबंधित करें


1

कुछ नंगे-हड्डियों के सिस्टम की निगरानी के लिए एक विधि के रूप में, मेरे पास SSH में एक स्क्रिप्ट सेट है, और कुछ फ़ाइलों को पढ़ने के लिए कुछ मूल शेल कमांड चलाती हैं /proc। मैं इस कार्य के लिए एक विशिष्ट उपयोगकर्ता खाता बनाना चाहूंगा, और इसकी निम्न पहुँच होनी चाहिए:

  • SSH
  • दे घुमा के
  • में-केवल पढ़ें /proc

अन्य पोस्ट में rssh या चेरोट का उल्लेख किया गया है, लेकिन क्या ये सर्वोत्तम तरीके हैं? यह मुझे लगता है कि बिना अनुमति के एक उपयोगकर्ता बनाने का एक तरीका होना चाहिए और केवल उसी चीज़ को जोड़ना चाहिए, जो एसएसएच के बजाय फाइलसिस्टम स्तर पर मेरे प्रतिबंधों को लागू करता है। क्या यह संभव है?

सभी सिस्टम जिन्हें मैं अभी मॉनिटर करना चाहता हूं, वे उबंटू चला रहे हैं, लेकिन मैं खुद को किसी भी एक विशेष वितरण के लिए लॉक नहीं करना चाहूंगा।


क्या आप की रक्षा करने की कोशिश कर रहे हैं? कुछ फाइलें विश्व लेखनी हैं। फ़ाइल अनुमतियाँ कर्नेल मॉड्यूल द्वारा निर्धारित की जाती हैं - जब तक आप कर्नेल कोड को बदलना नहीं चाहते (और सभी को प्रभावित करते हैं) आप उन्हें बदल नहीं सकते। इसके अलावा, क्या आप / sys की रक्षा करना चाहते हैं? और sysctl?
रिच होमोलका

@RichHomolka मैं कुछ भी विशेष रूप से संरक्षित करने की कोशिश नहीं कर रहा हूं ... बस नुकसान की संभावना को सीमित करने की कोशिश करनी चाहिए कि निगरानी खाते के क्रेडेंशियल्स से समझौता किया जाए। यदि कोई चीज़ दुनिया के लिए उपयुक्त है, तो मैं बहुत चिंतित नहीं हूँ।
ब्रैड

@ ब्रैड डिफ़ॉल्ट रूप से, किसी भी खाते में केवल उपयोगकर्ता-लेखन और समूह-लेखन की अनुमति है। विश्व-लेखन या विश्व-पढ़ी जाने वाली कोई भी चीज़, निश्चित रूप से एक्सेस की जा सकती है। शायद कस्टम शेल का उपयोग करने या ACL को सक्षम करने से उस कमी को रोकने का कोई तरीका नहीं है। असल में, यदि आप एक लॉगिन 'शेल' सेट करते हैं जो एक स्क्रिप्ट चलाता है और बिना कोई इनपुट लिए परिणाम लौटाता है, तो यह काम कर सकता है। यदि आप वास्तव में एफएस-स्तरीय प्रतिबंध चाहते हैं, तो एसीएल का उपयोग करें।
बॉब

@ मुझे वास्तव में आपके शेल विचार पसंद हैं। कृपया उसे और शेष स्पष्टीकरण को उपयोगकर्ता खातों से संबंधित पोस्ट करें, इसलिए मैं इसे उत्तर के रूप में स्वीकार कर सकता हूं। धन्यवाद!
ब्रैड

केवल रिकॉर्ड के लिए - rsshकेवल एससीपी और एसएफटीपी को अनुमति देने के लिए डिज़ाइन किया गया है, विशिष्ट निर्देशिका में मनमाना आदेश नहीं। और अगर आप वास्तव में किसी भी आदेश को अनुमति देना चाहते हैं , chrootतो शायद जाने का सबसे आसान तरीका है। लेकिन, फिर से, मैं केवल विशिष्ट आदेशों को श्वेत सूची देने की सलाह दूंगा।
Bob

जवाबों:


1

सबसे पहले, अनुमतियाँ। जब आप एक नया खाता बनाते हैं ( adduserडेबियन-आधारित सिस्टम पर, वैसे भी - दूसरों को थोड़ा अलग हो सकता है), तो आपको एक नया उपयोगकर्ता और एक नया समूह मिलता है। आपको उपयोगकर्ता के लिए एक घर निर्देशिका भी मिलती है। इस नए उपयोगकर्ता के पास अपने होम डायरेक्टरी पर उपयोगकर्ता और समूह पढ़ने / लिखने की अनुमति होगी। वे विश्व-पठनीय के रूप में निर्दिष्ट कुछ भी एक्सेस करने में सक्षम होंगे, और विश्व-लेखन के लिए कुछ भी संशोधित कर सकते हैं।

जहां तक ​​मैं जानता हूं, पारंपरिक पोसिक्स सिस्टम प्रणाली का उपयोग करके विशेष रूप से एक उपयोगकर्ता या समूह को विश्व-पठन / लेखन अनुमतियों से बाहर करना संभव नहीं है । हालाँकि, आप अधिक उन्नत ACL (जैसे Windows 'NTFS, यदि आप उस से परिचित हैं) को सक्षम कर सकते हैं, जो आपको विशिष्ट अस्वीकृत अनुमतियाँ सेट करने की अनुमति देता है।


एक वैकल्पिक विधि एक कस्टम लॉगिन शेल सेट करना है , chshकमांड का उपयोग करके या संशोधित करके /etc/passwd। जब वे लॉग इन करते हैं, तो यह 'शेल' उपयोगकर्ता के इनपुट को उसके मानक इनपुट के रूप में पुनर्निर्देशित किया जाएगा, और इसके मानक आउटपुट / त्रुटि को टर्मिनल आउटपुट पर रीडायरेक्ट किया जाएगा। आप सिस्टम पर किसी भी निष्पादन योग्य होने के लिए इस 'शेल' को सेट कर सकते हैं , जिसमें (लेकिन केवल अपने सी प्रोग्राम, बैश / पाइथन / पर्ल स्क्रिप्ट आदि) शामिल हैं।

कुछ तरीके हैं जिनसे आप ऐसा कर सकते हैं। आप लॉगिन शेल को एक स्क्रिप्ट के रूप में सेट कर सकते हैं जो कि बस जो भी डेटा आप चाहते हैं उसे आउटपुट करता है, और कोई इनपुट नहीं लेता है। यह एसएसएच सत्र को बंद करते हुए, केवल डेटा को आउटपुट करता है और बाहर निकलता है। यह सबसे सुरक्षित तरीका है, हालांकि उतना लचीला नहीं है।

वैकल्पिक रूप से, आपके पास एक स्क्रिप्ट कुछ इनपुट ले सकती है, और उस इनपुट का उपयोग करके निर्धारित करें कि क्या प्रिंट करना है। आप यह कैसे करते हैं यह आप पर निर्भर है - यदि आप एक bashस्क्रिप्ट का उपयोग करते हैं , तो आप readएक caseबयान या बयानों की एक श्रृंखला के साथ उपयोग कर सकते हैं if। आपको सावधान रहना होगा कि आप सीधे उपयोगकर्ता से किसी भी असंगत कमांड को नहीं चलाते हैं, हालांकि - और अविश्वसनीय इनपुट लेने के साथ अन्य संभावित सुरक्षा मुद्दे हैं। उदाहरण के लिए, आप इनपुट ले सकते हैं processesऔर आउटपुट वापस कर सकते हैं ps -e

यदि आप चाहते हैं, और सी के साथ अच्छे हैं, तो आप bashकिसी अन्य निर्देशिका तक पहुंचने में सक्षम नहीं होने के लिए खुद को संशोधित भी कर सकते हैं - लेकिन इनपुट लेने या केवल विशिष्ट श्वेतसूची आदेशों को फ़िल्टर करने के बजाय यह अधिक सुरक्षित है कि कौन सी निर्देशिकाओं को प्रतिबंधित करने की कोशिश की जाए। आप पहुंच सकते हैं। एक जटिल सी प्रोग्राम को संशोधित करने की तुलना में एक त्वरित शेल स्क्रिप्ट लिखना भी आसान है।


1

केवल / खरीद पर रीड-एनफोर्स लागू करने के लिए, आप एक sshfs रीड-ओनली क्लोन ऑफ / प्रोक पर पहुँच सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.