हम SSH लॉगिन (RSA कुंजी युग्म) के माध्यम से लिनक्स सर्वर में निजी आईपी के कुछ सेट को कैसे प्रवेश करने देते हैं?
/etc/ssh/sshd_config
हम SSH लॉगिन (RSA कुंजी युग्म) के माध्यम से लिनक्स सर्वर में निजी आईपी के कुछ सेट को कैसे प्रवेश करने देते हैं?
/etc/ssh/sshd_config
जवाबों:
आप सीमित कर सकते हैं कि कौन सी मेजबानों को iptables का उपयोग करके TCP रैपर या फ़िल्टरिंग नेटवर्क ट्रैफ़िक (फ़ायरवॉल) को कॉन्फ़िगर करके कनेक्ट किया जा सकता है । यदि आप क्लाइंट आईपी पते के आधार पर विभिन्न प्रमाणीकरण विधियों का उपयोग करना चाहते हैं, तो इसके बजाय SSH डेमॉन को कॉन्फ़िगर करें (विकल्प 3)।
प्रथम मैच तक, Iptables नियमों का मूल्यांकन किया जाता है।
उदाहरण के लिए, 192.168.0.0/24 नेटवर्क से ट्रैफ़िक को अनुमति देने के लिए और अन्यथा ट्रैफ़िक को ड्रॉप (22 पोर्ट करने के लिए)। DROP
अपने iptables डिफ़ॉल्ट पॉलिसी के लिए कॉन्फ़िगर है, तो नियम जरूरी नहीं है DROP
।
iptables -A INPUT -p tcp --dport 22 --source 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
अधिक नेटवर्क / होस्ट से मिलान करने के लिए आप ड्रॉप नियम से पहले और नियम जोड़ सकते हैं। यदि आपके पास बहुत सारे नेटवर्क या होस्ट पते हैं, तो आपको ipset मॉड्यूल का उपयोग करना चाहिए । इसमें iprange मॉड्यूल भी है जो किसी भी मनमाने ढंग से IP पते का उपयोग करने की अनुमति देता है।
रिबूट के पार Iptables लगातार नहीं होते हैं। बूट पर iptables को पुनर्स्थापित करने के लिए आपको कुछ तंत्र को कॉन्फ़िगर करने की आवश्यकता है।
iptables
केवल IPv4 ट्रैफ़िक पर लागू करें। जिन प्रणालियों के पास आईपीवी 6 को सुनने के लिए ssh है वे आवश्यक कॉन्फ़िगरेशन को संबोधित कर सकते हैं ip6tables
।
आप यह भी कॉन्फ़िगर कर सकते हैं कि कौन से मेजबान टीसीपी रैपर का उपयोग करके कनेक्ट कर सकते हैं। टीसीपी रैपर के साथ, आईपी पते के अलावा आप नियमों में होस्टनाम का भी उपयोग कर सकते हैं।
डिफ़ॉल्ट रूप से, सभी होस्ट को अस्वीकार करें।
/etc/hosts.deny
:
sshd : ALL
तब होस्ट होस्टल में मेजबान की अनुमति दी गई सूची। उदाहरण के लिए नेटवर्क 192.168.0.0/24 और लोकलहोस्ट की अनुमति देना ।
/etc/hosts.allow
:
sshd : 192.168.0.0/24
sshd : 127.0.0.1
sshd : [::1]
आप क्लाइंट पते / होस्टनाम के आधार पर अलग प्रमाणीकरण विधि का उपयोग करने के लिए sshd_config में ssh डेमन को कॉन्फ़िगर कर सकते हैं। यदि आप केवल अन्य होस्ट को कनेक्ट करने से रोकना चाहते हैं, तो आपको इसके बजाय iptables या TCP रैपर का उपयोग करना चाहिए।
पहले डिफ़ॉल्ट प्रमाणीकरण विधियों को निकालें:
PasswordAuthentication no
PubkeyAuthentication no
फिर Match Address
फ़ाइल के अंत में वांछित प्रमाणीकरण विधियों को जोड़ें । Match
फ़ाइल के अंत में रखना महत्वपूर्ण है, क्योंकि सभी कॉन्फ़िगरेशन लाइनों के बाद इसे सशर्त ब्लॉक के अंदर अगली Match
पंक्ति तक रखा जाता है । उदाहरण के लिए:
Match Address 127.0.0.*
PubkeyAuthentication yes
अन्य क्लाइंट अभी भी कनेक्ट करने में सक्षम हैं, लेकिन लॉगइन विफल हो जाएंगे क्योंकि कोई प्रमाणीकरण विधि उपलब्ध नहीं है।
तर्क और सशर्त कॉन्फ़िगरेशन विकल्पों का मिलान sshd_config मैन पेज में किया जाता है । मैच पैटर्न ssh_config मैन पेज में प्रलेखित हैं ।
#ListenAddress ::
में /etc/ssh/sshd_config
SSH सर्वर बता उन नेटवर्कों में से किसी से भेजे स्वीकार करने के लिए होगा। अन्यथा उन एनआईसी बंदरगाहों में से एक है ListenAddress <ip address>
जहां <ip address>
आप अनुमति चाहते हैं। मेरे eth0
है 192.168.3.4
इसलिए ListenAddress 192.168.3.4
SSH में परिणाम केवल नेटवर्क 192.168.3.4 जो eth0 पर है पर काम कर रहा; और eth1 eth2 eth3 नकारा है।
पिछले उत्तर का विस्तार करने के लिए SSH डेमॉन के लिए कुछ अतिरिक्त कॉन्फ़िगरेशन:
फ़ाइल AllowUsers
में विकल्प के साथ उपयोगकर्ता फ़िल्टरिंग जोड़ें sshd_config
:
AllowUsers johndoe@192.168.1.* admin2@192.168.1.* otherid1 otherid2
यह अनुमति देता है johndoe और admin2 केवल से 192.168.1.*
पते और otherid1 , otherid2 कहीं से भी।
.ssh/authorized_keys
किसी दिए गए उपयोगकर्ता के घर निर्देशिका की फ़ाइल में पते के एक सेट के लिए एक ssh कुंजी या ca- आधारित कुंजी को प्रतिबंधित करें :
from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
इस उदाहरण में, उपयोगकर्ताियाल के लिए सार्वजनिक कुंजी केवल दिए गए पते से प्रभावी होगी।