मुझे एसएसएच एक्सेस के प्रबंधन के लिए निम्नलिखित सेटअप पसंद है, जो मैं सर्वर के छोटे बेड़े पर उपयोगकर्ताओं के एक समूह को प्रबंधित करने के लिए काम पर उपयोग करता हूं। सुरक्षा और प्रबंधन में आसानी मेरी प्राथमिकताओं की सूची में उच्च है।
इसकी प्रमुख विशेषताएं यूनिक्स समूह की सदस्यता के माध्यम से एसएसएच अधिकारों को आसानी से प्रबंधित कर रही हैं, कसकर परिभाषित अनुमतियाँ हैं, और डिफ़ॉल्ट रूप से सुरक्षित हैं।
की स्थापना
सॉफ़्टवेयर स्थापित करें (वैकल्पिक लेकिन उपयोगी):
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(पहली जगह में लॉगिन की अनुमति देने के लिए)।
अग्रिम जानकारी
कृपया ध्यान दें कि यह कॉन्फ़िगरेशन पासवर्ड लॉगिन की अनुमति नहीं देता है ; सभी खातों को सार्वजनिक कुंजी प्रमाणीकरण का उपयोग करने की आवश्यकता है। यह संभवतः एसएसएच के साथ मिलने वाली एकमात्र सबसे बड़ी सुरक्षा जीत है, इसलिए मेरा तर्क है कि यह प्रयास के लायक है भले ही आपको अभी शुरू करना है।
क्या तुम सच में यह नहीं चाहता है, तो भी जोड़ PasswordAuthentication yesको Match Group allowsshछंद। यह allowsshउपयोगकर्ताओं के लिए पबकी और पासवर्ड दोनों को अनुमति देगा ।
यह कॉन्फ़िगरेशन किसी भी sftponlyउपयोगकर्ता को उनके होम डायरेक्टरी में सीमित करता है। यदि आप ऐसा नहीं चाहते हैं, तो ChrootDirectory %hनिर्देश को हटा दें ।
यदि आप काम करना चाहते हैं, तो यह महत्वपूर्ण है कि उपयोगकर्ता की होम डायरेक्टरी (और उसके ऊपर की कोई भी निर्देशिका) स्वामित्व में हो root:rootया समूह / अन्य द्वारा लिखित न हो। उपयोगकर्ता-स्वामित्व और / या लिखने योग्य होने के लिए होम निर्देशिका की उपनिर्देशिकाओं के लिए यह ठीक है।
हां, उपयोगकर्ता के घर की निर्देशिका उपयोगकर्ता के मूल-स्वामित्व वाली और अपरिहार्य होनी चाहिए । अफसोस की बात है कि इस सीमा के अच्छे कारण हैं। आपकी स्थिति के आधार पर, ChrootDirectory /homeएक अच्छा विकल्प हो सकता है।
sftponlyउपयोगकर्ताओं के शेल को सेट करना /sbin/nologinन तो इस समाधान के लिए आवश्यक है और न ही हानिकारक, क्योंकि SSH ForceCommand internal-sftpउपयोगकर्ता के शेल को ओवरराइड करता है।
/sbin/nologinयद्यपि अन्य तरीकों (भौतिक कंसोल, सांबा, आदि) के माध्यम से उन्हें लॉगिंग को रोकने के लिए उपयोग करना उपयोगी हो सकता है।
यह सेटअप rootSSH पर सीधे लॉगिन की अनुमति नहीं देता है ; यह सुरक्षा की एक अतिरिक्त परत बनाता है। क्या तुम सच में तो करते प्रत्यक्ष जड़ लॉगिन की जरूरत है, बदलने के PermitRootLoginनिर्देश। करने के लिए यह निर्धारित करने पर विचार forced-commands-only, prohibit-passwordऔर (एक अंतिम उपाय के रूप में) yes।
बोनस अंक के लिए, जो suरूट कर सकते हैं प्रतिबंधित करने पर एक नज़र है ; एक प्रणाली समूह का नाम जोड़ने wheel, और सक्षम जोड़ें / auth required pam_wheel.soमें /etc/pam.d/su।