SSH उपयोगकर्ता को केवल SSH-टनलिंग की अनुमति देने के लिए कैसे प्रतिबंधित करें?


31

मैं SSH सर्वर पर किसी उपयोगकर्ता को केवल SSH TUNNELING के लिए विशेषाधिकार देने की अनुमति कैसे दे सकता हूं ? यानी वे SSH के माध्यम से लॉग इन करने पर भी कमांड नहीं चला सकते।

मेरे लिनक्स सर्वर Ubuntu 11.04 और OpenWrt हैं।

जवाबों:


35

सर्वर की तरफ, आप उनके उपयोगकर्ता शेल को सेट करके इसे प्रतिबंधित कर सकते हैं /bin/true। यह उन्हें प्रमाणित करने की अनुमति देगा, लेकिन वास्तव में कुछ भी नहीं चलाते हैं क्योंकि उन्हें इसे चलाने के लिए एक शेल नहीं मिलता है। इसका मतलब यह है कि वे उन चीजों तक सीमित होंगे जो एसएसएच उन्हें पेशकश करने में सक्षम हैं। यदि यह पोर्ट अग्रेषण प्रदान करता है, तो वे अभी भी ऐसा करने में सक्षम होंगे।

क्लाइंट की तरफ, आप शायद के साथ कनेक्ट करना चाहते हैं -N। यह क्लाइंट को दूरस्थ कमांड जैसे शेल के लिए ASKING से रोकता है, यह प्रमाणीकरण भाग पूरा होने के बाद बंद हो जाता है। टिप्पणी करने वालों के लिए धन्यवाद।


मैं यह एक बाहर की कोशिश करेंगे: पी thx!
लांसबेंस

2
कालेब के उत्तर में जोड़ने के लिए, आपको शेल को निष्पादित नहीं करने के लिए क्लाइंट को बताने की भी आवश्यकता हो सकती है। ओपनश कमांड लाइन के साथ, यह -N फ्लैग के साथ किया जाता है। PuTTY में एक समान विकल्प है, लेकिन मुझे सटीक नाम याद नहीं है।
बिल बी

हम्म, कि मूल रूप से ग्राहक पक्ष सुरक्षा है, नहीं? मैं एक सर्वर साइड सुरक्षा सेटिंग खोज रहा हूं, लेकिन धन्यवाद!
लांसबैन्स

2
क्षमा करें, मैं स्पष्ट नहीं था - मैं सर्वर सेटिंग के संयोजन में था। यह अतीत में मेरा अनुभव रहा है कि यदि आप शेल को किसी ऐसी चीज़ के लिए सेट करते हैं जो शेल नहीं है, तो आप बिल्कुल भी कनेक्ट नहीं कर सकते क्योंकि यह शेल को खोलने की कोशिश करता है लेकिन नहीं कर सकता। तो सर्वर साइड पर सुरक्षा का उपयोग किया जाता है (कालेब की विधि का उपयोग करके) लेकिन अगर आपके पास इसके बाद कनेक्ट करने के मुद्दे हैं, तो आपको क्लाइंट-साइड स्विच सेट करना पड़ सकता है।
बिल बी

3
आप इस तरह के उपयोगकर्ता बनाते हैं useradd sshtunnel -m -d /home/sshtunnel -s /bin/true
फरकज़

14

निम्नलिखित का यह फायदा है कि X11 और SSH एजेंट सॉकेट फॉरवर्डिंग भी बंद कर दिए जाते हैं, जो शायद अभी भी कालेब के रास्ते में अनुमति दी जा सकती है। एक और लाभ यह है कि यदि उपयोगकर्ता किसी अन्य तरीके से अपने डिफ़ॉल्ट शेल को बदलने में सक्षम है, तो यह अभी भी अपने एसएसएच एक्सेस को केवल टीसीपी होल्डिंग्स तक सीमित कर देगा।

निम्नलिखित को अपने में रखें /etc/ssh/sshd_config:

Match User that-restricted-guy
  AllowTcpForwarding yes
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

उपयोगकर्ता that-restricted-guyको आपके SSH सक्षम मशीन (इस मशीन localhostसे कनेक्शन, इस मशीन से अन्य मशीनों के लिए भी कनेक्शन) के माध्यम से किसी भी टीसीपी कनेक्शन को अग्रेषित करने की अनुमति देता है ।

यदि आप इसे और भी अधिक प्रतिबंधात्मक चाहते हैं (जो कि एक अच्छा विचार है) तो आप निम्न कार्य भी कर सकते हैं:

Match User even-more-restricted-guy
  PermitOpen 127.0.0.1:12345
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

यह उपयोगकर्ता even-more-restricted-guyको केवल 127.0.0.1 टीसीपी पोर्ट 12345 (जैसा कि यह आपके एसएसएच सक्षम मशीन के माध्यम से दिखाई देता है) के लिए केवल आगे के कनेक्शन के लिए अनुमति देगा ।

जब उपयोगकर्ता सामान्य रूप से जोड़ता है तो वह अब तुरंत डिस्कनेक्ट हो जाएगा क्योंकि /bin/falseकमांड चालू हो जाएगा जो कुछ भी नहीं करता है लेकिन तुरंत 1 के कोड के साथ बाहर निकलता है। यदि आप इससे बचना चाहते हैं और अपने अग्रेषण कनेक्शन को खुला रखें, -Nतो sshकमांड में ध्वज जोड़ें । यह किसी भी कमांड को निष्पादित करने का प्रयास नहीं करेगा लेकिन फिर भी टीसीपी अग्रेषण को सेटअप करने की अनुमति देता है।

आगे की कमान का एक उदाहरण जो बाद के सेटअप में काम करना चाहिए:

ssh -L 12345:127.0.0.1:12345 -N even-more-restricted-guy@insert-your-machine

1
मैंने कालेब के उत्तर पर एक बेहतर समाधान के रूप में उत्तर को पुनःप्रकाशित किया।
अनफ

ज़रूर। मैंने भी सफाई की। गलतफहमी को देखकर अच्छा लगा। शुभ रात्रि।
जकुजे

1

आप यह नियंत्रित कर सकते हैं कि समूह के मिलान से लोग ssh में क्या कर सकते हैं मान लें कि ssh का आपका संस्करण इसका समर्थन करने के लिए काफी नया है (5.shsh + 5 खुलता है)।

मूल रूप से, हम उनके साथ ऐसा व्यवहार करते हैं जैसे कि वे sftp उपयोगकर्ता थे, लेकिन tcp अग्रेषण की अनुमति दें और वैकल्पिक रूप से उन गंतव्यों को निर्दिष्ट करें जो वे आगे कर सकते हैं। यदि आप उन्हें एक होम डायरेक्टरी देते हैं, लेकिन इसके तहत कोई डायरेक्टरी नहीं बनाते हैं, तो वे किसी भी फाइल को ट्रांसफर नहीं कर सकते, क्योंकि उनके पास ऐसा करने की अनुमति नहीं होगी।

Match Group                     nicepeople
    PubkeyAuthentication        yes
    PasswordAuthentication      yes
    PermitEmptyPasswords        no
    GatewayPorts                no
    ChrootDirectory             /opt/dummy_location/%u
    ForceCommand                internal-sftp
    AllowTcpForwarding          yes
        PermitOpen              192.168.0.8:22
        PermitOpen              192.168.0.5:8080
    # Or leave out the PermitOpen to allow forwarding to anywhere.
    HostbasedAuthentication     no
    RhostsRSAAuthentication     no
    AllowAgentForwarding        no
    Banner                      none

आप प्रत्येक समूह के लिए इन मिलान समूह ब्लॉकों को दोहरा सकते हैं जिन्हें आप अलग-अलग व्यवहार या प्रतिबंध प्रदान करना चाहते हैं।

आप आगे नियंत्रित कर सकते हैं कि यह व्यक्ति iptables का उपयोग करके नेटवर्क पर कहाँ जा सकता है

/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -j REJECT
/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -m tcp -p tcp -d 192.168.0.0/24 -j ACCEPT

यह मानता है कि समूह "नाइसपीस" जीआईडी ​​500 है।

उपरोक्त ssh विकल्पों में से कुछ ओपनश के पुराने संस्करणों में उपलब्ध हैं, लेकिन मैच समूह अनुभाग के भीतर नहीं। मैच ग्रुप OpenSSH 4.x और उससे पहले में बहुत सीमित है।

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