मैं SSH सर्वर पर किसी उपयोगकर्ता को केवल SSH TUNNELING के लिए विशेषाधिकार देने की अनुमति कैसे दे सकता हूं ? यानी वे SSH के माध्यम से लॉग इन करने पर भी कमांड नहीं चला सकते।
मेरे लिनक्स सर्वर Ubuntu 11.04 और OpenWrt हैं।
मैं SSH सर्वर पर किसी उपयोगकर्ता को केवल SSH TUNNELING के लिए विशेषाधिकार देने की अनुमति कैसे दे सकता हूं ? यानी वे SSH के माध्यम से लॉग इन करने पर भी कमांड नहीं चला सकते।
मेरे लिनक्स सर्वर Ubuntu 11.04 और OpenWrt हैं।
जवाबों:
सर्वर की तरफ, आप उनके उपयोगकर्ता शेल को सेट करके इसे प्रतिबंधित कर सकते हैं /bin/true
। यह उन्हें प्रमाणित करने की अनुमति देगा, लेकिन वास्तव में कुछ भी नहीं चलाते हैं क्योंकि उन्हें इसे चलाने के लिए एक शेल नहीं मिलता है। इसका मतलब यह है कि वे उन चीजों तक सीमित होंगे जो एसएसएच उन्हें पेशकश करने में सक्षम हैं। यदि यह पोर्ट अग्रेषण प्रदान करता है, तो वे अभी भी ऐसा करने में सक्षम होंगे।
क्लाइंट की तरफ, आप शायद के साथ कनेक्ट करना चाहते हैं -N
। यह क्लाइंट को दूरस्थ कमांड जैसे शेल के लिए ASKING से रोकता है, यह प्रमाणीकरण भाग पूरा होने के बाद बंद हो जाता है। टिप्पणी करने वालों के लिए धन्यवाद।
useradd sshtunnel -m -d /home/sshtunnel -s /bin/true
।
निम्नलिखित का यह फायदा है कि 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
आप यह नियंत्रित कर सकते हैं कि समूह के मिलान से लोग 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 और उससे पहले में बहुत सीमित है।