किसी निर्देशिका में SSH / SCP / SFTP उपयोगकर्ता को प्रतिबंधित करना


36

एक एससीपी / एसएफटीपी उपयोगकर्ता को एक निर्देशिका में प्रतिबंधित करने का एक सरल तरीका है? सभी तरीके जो मुझे आए हैं, मुझे बायनेरिज़ की नकल करके चेरोट जेल स्थापित करने की आवश्यकता है, लेकिन मुझे नहीं लगता कि यह आवश्यक होना चाहिए।

जवाबों:


29

SSH एक SFTP उपयोगकर्ता को मूल रूप से चेरोटिंग का समर्थन करता है। आपको बस आपूर्ति करने की आवश्यकता है

ChrootDirectory

आपकी sshd config फाइल में, और sshd को पुनरारंभ करें।

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

एक उदाहरण विन्यास, सिर्फ एक उपयोगकर्ता, परीक्षक के लिए:

Match User testuser
    ChrootDirectory /home/testuser
    ForceCommand internal-sftp

Sshd_config मैन पेज से, अवगत होने वाली कुछ बातें:

    Pathname के सभी घटकों को रूट-स्वामित्व वाली निर्देशिका होना चाहिए जो नहीं हैं
    किसी अन्य उपयोगकर्ता या समूह द्वारा लिखने योग्य। चुरोट के बाद, sshd (8) बदल जाता है
    उपयोगकर्ता के घर निर्देशिका के लिए काम कर निर्देशिका।

अधिक जानकारी के लिए आदमी sshd_config में ChrootDirectory खोजें।


2
ध्यान दें कि "मैच उपयोगकर्ता परीक्षक" से शुरू होने वाला हिस्सा फ़ाइल के अंत में होना चाहिए, क्योंकि इसमें कॉन्फ़िगरेशन लाइनें केवल तभी शामिल होंगी जब उपयोगकर्ता उस बिंदु से "परीक्षक" होगा।
मैग्नस

1
क्या केवल SFTP प्रोटोकॉल के लिए चेरोट करना संभव है, लेकिन फिर भी सामान्य एससीपी कनेक्शन की अनुमति है?
लैंक्सक्स

1
मेरे उबंटू 14.04 मशीन पर, Subsystem sftp /usr/lib/openssh/sftp-serverलाइन को बदलने के लिए भी आवश्यक थाSubsystem sftp internal-sftp -f AUTH -l VERBOSE
partofthething

@ मैग्नस या दूसरे Matchसेक्शन तक ।
रोज़ा

12

एक चिरौटा एक यथोचित सरल विधि है। चूंकि ऑपरेटिंग सिस्टम में पहले से ही यह सुरक्षा सुविधा है, इसलिए डेमन लेखक इसे फिर से लागू करने का प्रयास नहीं करते हैं।

रुपये चेरोट जेल की स्थापना पर एक गाइड के साथ आता है। यह CHROOTस्रोत वितरण में फ़ाइल में है। संक्षेप में, आपके पास होना चाहिए:

  • कुछ बाइनरी, जड़ से नकल: /usr/bin/scp, /usr/libexec/openssh/sftp-server,/usr/bin/rssh_chroot_helper
  • पुस्तकालय ( {/usr,}/lib/lib*.so.[0-9]) जो वे उपयोग करते हैं, उसी तरह नकल करते हैं
  • /etc/passwd(संभवतः एक प्रति नहीं है लेकिन गुरु से ली गई है)
  • कुछ उपकरणों: /dev/null, /dev/tty, और यह भी एक /dev/logप्रवेश के लिए सॉकेट (और आप उस सॉकेट पर सुनने के लिए अपने syslog डेमॉन बताने की आवश्यकता)

अतिरिक्त टिप जो कि rssh डॉक्यूमेंटेशन में नहीं है: यदि आपको चिरोट जेल में सुलभ होने के लिए कुछ फ़ाइलों की आवश्यकता है, तो आप जेल के बाहर से अतिरिक्त निर्देशिका पदानुक्रम बनाने के लिए bindfs या Linux का उपयोग कर सकते हैं mount --bindbindfsअनुमति निर्देशिका को और अधिक प्रतिबंधात्मक अनुमति है, उदाहरण के लिए केवल पढ़ने के लिए। ( mount --bindजब तक आप कर्नेल पैच नहीं लगाते हैं, डेबियन ने इस पैच को पूर्वी लेन में शामिल किया है, लेकिन अधिकांश अन्य वितरण 2011 के अनुसार नहीं हैं।)


7

आप scponly (या हाल ही में, rssh ) को देखना चाह सकते हैं ; यह अनिवार्य रूप से एक लॉगिन शेल है जिसका उपयोग केवल scp या sftpd सबसिस्टम को लॉन्च करने के लिए किया जा सकता है। में scponlycसंस्करण यह प्रश्न में सबसिस्टम सक्रिय करने से पहले एक chroot प्रदर्शन करती है।


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