क्या शेल एक्सेस के बिना उपयोगकर्ताओं को sftp एक्सेस देना संभव है? यदि हाँ, तो इसे कैसे लागू किया जाता है?


29

मेरे पास उन उपयोगकर्ताओं की एक सरणी है, जिन्हें अपने सेट होमडायर को केवल फाइलें अपलोड करने की आवश्यकता है। मुझे लगता है कि sftp पर्याप्त होगा, लेकिन मैं उन्हें शेल के माध्यम से लॉगिन नहीं करना चाहता। तो क्या यह संभव है? मेरा प्लेटफ़ॉर्म सेंटो 7 है, उपयोगकर्ता के होमडायर संग्रहित हैं जो व्यक्तिगत / $ उपयोगकर्ता को कहते हैं

मैंने इन सेटिंग्स के साथ उपयोगकर्ता बनाया

useradd -m -d /personal/user1 -s /sbin/nologin

उपयोगकर्ता को एक पासवार्ड सौंपा गया है, तब जब मैं मशीन में प्रवेश करने के लिए sftp का उपयोग करता हूं, तो यह कहता है कि कनेक्ट नहीं हो सकता।


scponly github.com/scponly/scponly/wiki chroot वैकल्पिक
user2497

जवाबों:


11

/etc/ssh/sshd_configइसमें शामिल होने के लिए अपना संपादन करें :

Match User [SFTP user]
ForceCommand internal-sftp

पुनः आरंभ करें sshd। यदि आपके पास कई उपयोगकर्ता हैं, तो उन सभी को मैच उपयोगकर्ता लाइन पर कॉमा द्वारा अलग कर दिया जाता है, जैसे:

Match User User1,User2,User3

sftpशेल एक्सेस की अनुमति नहीं देने के लिए कॉन्फ़िगर करने की कुंजी ForceCommand विकल्प के माध्यम से उपयोगकर्ताओं को सीमित करना है।


ठीक है, मैंने सभी चरणों का पालन किया लेकिन यह लॉग इन नहीं किया
सोलासा

2
@ सूलोसा Match User [SFTP user] ForceCommand internal-sftpकेवल चुरोटिंग सामान के बिना, कोशिश करें ।
मार्टिन प्रिक्रील

@MartinPrikryl ने मार्टिन का काम किया, धन्यवाद, मैंने अभी अभी चेरोटेन्ड्रिक्स पैरामीटर और वायोला को हटा दिया है
सोलासा

1
उसके शीर्ष पर, आप chrootउपयोगकर्ताओं को ऐसा कर सकते हैं ताकि वे आपके परिभाषित "जेल" से ऊपर और बाहर नेविगेट न कर सकें
ivanivan

37

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

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

की स्थापना

सॉफ़्टवेयर स्थापित करें (वैकल्पिक लेकिन उपयोगी):

yum install members   # or apt install members

समूह जोड़ें:

addgroup --system allowssh
addgroup --system sftponly

/etc/ssh/sshd_configनिम्न में , सुनिश्चित करें कि सेटिंग्स निम्नलिखित हैं No:

PermitRootLogin no
PubkeyAuthentication no
PasswordAuthentication no

और अंत में /etc/ssh/sshd_config, ये दो श्लोक जोड़ें:

Match Group allowssh
    PubkeyAuthentication yes

Match Group sftponly
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp

(फाइल को संपादित करने के बाद SSH को पुनः आरंभ करना न भूलें)

व्याख्या

तो, यह सब क्या करता है?

  • यह हमेशा एक अतिरिक्त सुरक्षा उपाय के रूप में रूट लॉगिन को निष्क्रिय करता है।
  • यह हमेशा पासवर्ड-आधारित लॉगिन अक्षम करता है (कमजोर पासवर्ड sshd चलाने वाले सर्वर के लिए एक बड़ा जोखिम है)।
  • यह allowsshसमूह में उपयोगकर्ताओं के लिए केवल (पबकी) लॉगिन की अनुमति देता है ।
  • sftponlyसमूह के उपयोगकर्ताओं को SSH, केवल SFTP पर एक शेल नहीं मिल सकता है।

जिसके पास पहुंच है उसे प्रबंधित करना बस समूह सदस्यता का प्रबंधन करके किया जाता है (ये परिवर्तन तुरंत प्रभावी होते हैं, कोई SSH पुनरारंभ की आवश्यकता नहीं होती है):

# adduser marcelm allowssh
# members allowssh
marcelm
# deluser marcelm allowssh
# members allowssh
#

ध्यान दें कि आपके sftp उपयोगकर्ताओं को दोनों का सदस्य होना चाहिए sftponly(यह सुनिश्चित करने के लिए कि उन्हें एक शेल नहीं मिलेगा), और allowssh(पहली जगह में लॉगिन की अनुमति देने के लिए)।

अग्रिम जानकारी

  1. कृपया ध्यान दें कि यह कॉन्फ़िगरेशन पासवर्ड लॉगिन की अनुमति नहीं देता है ; सभी खातों को सार्वजनिक कुंजी प्रमाणीकरण का उपयोग करने की आवश्यकता है। यह संभवतः एसएसएच के साथ मिलने वाली एकमात्र सबसे बड़ी सुरक्षा जीत है, इसलिए मेरा तर्क है कि यह प्रयास के लायक है भले ही आपको अभी शुरू करना है।

    क्या तुम सच में यह नहीं चाहता है, तो भी जोड़ PasswordAuthentication yesको Match Group allowsshछंद। यह allowsshउपयोगकर्ताओं के लिए पबकी और पासवर्ड दोनों को अनुमति देगा ।

  2. यह कॉन्फ़िगरेशन किसी भी sftponlyउपयोगकर्ता को उनके होम डायरेक्टरी में सीमित करता है। यदि आप ऐसा नहीं चाहते हैं, तो ChrootDirectory %hनिर्देश को हटा दें ।

    यदि आप काम करना चाहते हैं, तो यह महत्वपूर्ण है कि उपयोगकर्ता की होम डायरेक्टरी (और उसके ऊपर की कोई भी निर्देशिका) स्वामित्व में हो root:rootया समूह / अन्य द्वारा लिखित न हो। उपयोगकर्ता-स्वामित्व और / या लिखने योग्य होने के लिए होम निर्देशिका की उपनिर्देशिकाओं के लिए यह ठीक है।

    हां, उपयोगकर्ता के घर की निर्देशिका उपयोगकर्ता के मूल-स्वामित्व वाली और अपरिहार्य होनी चाहिए । अफसोस की बात है कि इस सीमा के अच्छे कारण हैं। आपकी स्थिति के आधार पर, ChrootDirectory /homeएक अच्छा विकल्प हो सकता है।

  3. sftponlyउपयोगकर्ताओं के शेल को सेट करना /sbin/nologinन तो इस समाधान के लिए आवश्यक है और न ही हानिकारक, क्योंकि SSH ForceCommand internal-sftpउपयोगकर्ता के शेल को ओवरराइड करता है।

    /sbin/nologinयद्यपि अन्य तरीकों (भौतिक कंसोल, सांबा, आदि) के माध्यम से उन्हें लॉगिंग को रोकने के लिए उपयोग करना उपयोगी हो सकता है।

  4. यह सेटअप rootSSH पर सीधे लॉगिन की अनुमति नहीं देता है ; यह सुरक्षा की एक अतिरिक्त परत बनाता है। क्या तुम सच में तो करते प्रत्यक्ष जड़ लॉगिन की जरूरत है, बदलने के PermitRootLoginनिर्देश। करने के लिए यह निर्धारित करने पर विचार forced-commands-only, prohibit-passwordऔर (एक अंतिम उपाय के रूप में) yes

  5. बोनस अंक के लिए, जो suरूट कर सकते हैं प्रतिबंधित करने पर एक नज़र है ; एक प्रणाली समूह का नाम जोड़ने wheel, और सक्षम जोड़ें / auth required pam_wheel.soमें /etc/pam.d/su


2
यह स्वीकृत उत्तर होना चाहिए। यह प्रत्येक चरण के पीछे तर्क को तोड़ने के साथ ही समाधान प्रदान करता है।
kemotep

1
यह महान अतिरिक्त सुरक्षा सलाह के साथ एक बहुत अच्छा जवाब है, लेकिन मैं उन उपयोगकर्ताओं के लिए चिंता करता हूं, जिनके सिस्टम पासवर्ड लॉगिन, रूट लॉगइन आदि पर निर्भर हैं, बेशक ऐसा करना अच्छा नहीं है, लेकिन शायद सामान्य सुरक्षा सुधार से संबंधित परिवर्तनों को उनके पास ले जाएं स्वयं का खंड ताकि न्यूनतम परिवर्तन के साथ प्रश्न का उत्तर उपलब्ध हो?
जोश रंबुत

1
@JoshRumbut मैं आपकी (बहुत सही) टिप्पणियों के उत्तर को फिर से लिखना नहीं चाहता था, आंशिक रूप से क्योंकि यह वास्तव में सिर्फ मेरा रास्ता ™ दिखा रहा है, और आंशिक रूप से इस उम्मीद में कि यह एक तरह का कैनोनिकल सिक्योर-बाय-डिफॉल्ट SSH सेटअप हो सकता है उदाहरण है कि कई और लोग उपयोगी हैं। एक समझौते के रूप में, मैंने इसे बहुत स्पष्ट करने की कोशिश की कि रूट लॉगिन और पासवर्ड
ऑर्कुट

1
अच्छा उत्तर, अन्य उत्तरों की सबसे बड़ी कमी के कारण सुरक्षा पहलुओं को ध्यान में नहीं रखा गया था, मुख्य रूप से चुरोट। +1
रुई एफ रिबेरो

1
चेरोट जेनेरिक% h के लिए काम नहीं करेगा। हैरानी की बात है, आप की जरूरत है chown root:rootऔरchmod og-w
kubanczyk

1

बस उनके डिफ़ॉल्ट शेल को / sbin / nologin में बदलें। लिनक्स की अधिकांश किस्मों को मानते हुए:

# usermod -s /sbin/nologin username

मैंने इसकी कोशिश की है, लेकिन उपयोगकर्ता sftp के माध्यम से लॉगिन करने में सक्षम नहीं है, मुझे नहीं पता कि क्यों। मैं सेंटो btw का उपयोग कर रहा हूँ।
सोलासा

@ सूलोसा संभवतः आपके sftp चुरोट में एक अनुमति समस्या है, या sshd_config में एक समस्या है। आपको अपने चेरोट निर्देशिका की अनुमतियों, और आपके sshd_config को किसी भी संवेदनशील जानकारी के साथ शामिल करने के लिए अपने प्रश्न को अपडेट करना चाहिए।
केफका

मेरा मानना ​​है कि (हालांकि मैं अब इसका परीक्षण नहीं कर सकता) कि यह एसएफटीपी को केवल तभी अनुमति देता है अगर वहाँ भी है Subsystem sftp internal-sftp) (या हो सकता है ForceCommand internal-sftp)। यदि यह सामान्य है Subsystem sftp /path/to/sftp-server, nologinतो SFTP को भी रोक देगा।
मार्टिन प्रिक्रील

@MartinPrikryl मैं एक अन्यथा कार्यात्मक sftp सर्वर पर उपयोगकर्ताओं के लिए शेल एक्सेस को निष्क्रिय करने का तरीका पूछने के लिए उनके मूल एकजुट प्रश्न को गलत समझता हूं। मैं उस समय लगभग दस मिनट के लिए जाग रहा था इसलिए मुझे उतना स्पष्ट नहीं किया गया जितना मैंने महसूस किया होगा। हालांकि मुझे नहीं पता था कि sftp-server को काम करने के लिए एक उपयोगकर्ता के पास एक वैध शेल की आवश्यकता होती है - जो संभावित रूप से खतरनाक लगता है। मैं केवल कभी-कभी आदत से बाहर आंतरिक sftp का उपयोग करता हूं, क्योंकि मैंने हमेशा ऐसा किया है।
केफेका

OpenSSH के लिए मेरा जवाब देखें : आंतरिक sftp और
sftp-

0

आप tftp का उपयोग कर सकते हैं। ssh के ऊपर किसी भी चीज़ को किसी न किसी चीज़ की आवश्यकता होगी (कुंजी | पास)।

जबकि tftp सुरक्षित किया जा सकता है, यह प्रमाणीकरण के बिना किसी भी चीज तक पहुंच प्रदान करने के निर्णय को फिर से देखने के लायक हो सकता है।

http://manpages.ubuntu.com/manpages/bionic/man1/tftp.1.html


2
मुझे लगता है कि ओपी चाहता था कि उपयोगकर्ता (जिनके पास निश्चित रूप से उपयोगकर्ता नाम और पासवर्ड हैं) सर्वर से जुड़ने और मनमाने आदेशों को निष्पादित करने के लिए एक नियमित एसएसएच क्लाइंट का उपयोग करने में सक्षम नहीं होंगे, लेकिन वही उपयोगकर्ता एसएफटीपी के माध्यम से फाइलें अपलोड कर सकते हैं।
John_ReinstateMonica
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.