स्थानीय नेटवर्क से केवल उपयोगकर्ता को रूट करने की अनुमति कैसे दें?


38

मैंने एक CentOS 6.5 मशीन पर Google-Authenticator स्थापित किया है और कुछ उपयोगकर्ताओं को OTP प्रदान करने के लिए कॉन्फ़िगर किया है।

संपादन करते समय /etc/ssh/sshd_configमैंने एक निर्देश देखा " PermitRootLogin" जो डिफ़ॉल्ट रूप से टिप्पणी करता है।

मैं " PermitRootLogin no" सेट करना चाहूंगा, लेकिन फिर भी स्थानीय नेटवर्क से केवल मूल के रूप में मशीन पर ssh कर सकता हूं ।

क्या यह संभव है?


5
ऐसा कभी मत करो। अपने उपयोगकर्ताओं के रूप में SSH, तो अनुमतियों को बढ़ाने के लिए sudo का उपयोग करें। ऐसा करो कि यह एक पेपर निशान छोड़ दे, और इसलिए आपको पता चल जाएगा कि किस खाते से समझौता किया गया था।
स्नेकडोक

3
@SnakeDoc: यह विचार का एक स्कूल है, लेकिन यह स्पष्ट नहीं है और मैं इसके विपरीत तर्क दूंगा। सुडो एक विशाल जटिल हमले की सतह है और ऐसा कुछ नहीं जिसे मैं कभी स्थापित करना चाहूंगा। SSH पबकी ऑर्टोरियल बहुत छोटी हमले की सतह है। या तो लॉग इन किया जा सकता है, लेकिन लॉगिंग बहुत उपयोगी नहीं है जब उपयोगकर्ता (रूट) लॉग्स को संपादित या हटा सकता है, जो हमेशा होता है जब तक कि आप बाहरी एपेंड-ओनली स्टोरेज में लॉग इन नहीं करते।
आर ..

1
@R .. यदि आप सही तरीके से सुडौल सेट करते हैं, तो कम से कम विशेषाधिकार के सिद्धांत का उपयोग करते हुए, आपके द्वारा वर्णित ये मुद्दे काफी हद तक समस्या नहीं हैं। कोई भी उपयोगकर्ता अपने कंप्यूटर में sudo - suया उसके अंदर कुछ भी करने में सक्षम नहीं होना चाहिए , या ऐसा कुछ भी नहीं करना चाहिए जिसमें उपयोगकर्ताओं को (sudoers में, आप आदेशों के लिए श्वेत सूची का उपयोग करें)। यदि आपको रूट की आवश्यकता है, तो आपको भौतिक रूप से कंसोल पर होना चाहिए - अर्थात। SSH की जड़ को कभी भी अनुमति नहीं दी जानी चाहिए ... चाबियाँ या नहीं।
स्नेकडोक

1
@SnakeDoc: आप गलत हैं। सूडो की अपनी जटिल हमले की सतहें हैं, और मूलभूत जटिल हमले की सतह है जो एक सुसाइड बाइनरी होने के लिए अंतर्निहित है, जो सभी राज्य के रूप में निष्पादित होती है। कुछ मामलों में suid प्रोग्राम में ही बग (suid) की जरूरत भी नहीं है; अंतर्निहित बुनियादी ढांचे जैसे गतिशील लिंकर (जैसे CVE-2010-3856) में बग पर्याप्त हो सकते हैं।
आर ..

1
@ आर .. आप मान लेते हैं कि आपको हमेशा पता चलेगा कि कोई कुंजी लीक हुई है या नहीं। यह एक धारणा की एक बिल्ली है। इसके अलावा, एक बार आपके हमलावर के पास विशेषाधिकारी हैं। अनपेक्षित खाते के माध्यम से उन्हें भेजना बेहतर है, और उन्हें जड़ से ऊंचा करना है। इस तरह आपके पास एक कुंजी है जो लीक होनी चाहिए, एक महत्वपूर्ण पासफ़्रेज़ को तोड़ने के लिए, और फिर एक नियमित उपयोगकर्ता खाता पासवर्ड को तोड़ने के लिए। और अगर हमलावर उस सब के माध्यम से हो जाता है ... वे कुछ भी नहीं कर सकते क्योंकि यह उपयोगकर्ता बहुत सीमित क्षमता के साथ sudoers के तहत सेटअप है ... अब लाभ देखें? Ssh ... अवधि पर सीधे रूट लॉगिन की अनुमति न दें। यह अच्छी स्वच्छता है
स्नेपडॉक

जवाबों:


54

में Matchविन्यास पैरामीटर का उपयोग करें /etc/ssh/sshd_config:

# general config
PermitRootLogin no 

# the following overrides the general config when conditions are met. 
Match Address  192.168.0.*
    PermitRootLogin yes

देख man sshd_config


मैंने ऐसा क्यों नहीं सोचा? धन्यवाद दोस्त
इताई गनोट १16

8
आप प्रमाणीकरण कुंजियों के स्रोत को प्रतिबंधित भी कर सकते हैं ~root/.ssh/authorized_keys। कुंजी के साथ उपसर्ग करें from="192.168.0.0/24 "
बिलथोर

9
मैं इसे IPv6 लिंक-स्थानीय पते की अनुमति देने के लिए बदलूंगा। आईपीवी 6 में जिस तरह से लिंक-लोकल एड्रेस काम करते हैं, वे उन्हें गलत नेटवर्किंग के लिए बहुत मजबूत बनाते हैं। जिसका अर्थ है कि यदि आपको नेटवर्क गलतफहमी को ठीक करने के लिए ssh करने की आवश्यकता है, तो संभव है कि IPv6 लिंक-स्थानीय पते का उपयोग करना एकमात्र विकल्प बचा हो।
कास्परड

FYI करें यदि आप अतिरिक्त रूप से AllowUser के निर्देशन का उपयोग करते हैं , तो आपको अतिरिक्त रूप से (और प्रति-सहज रूप से) भी करना होगाAllowUser root
Robert Riedl

14

Match addressविधि पहले ही उल्लेख किया गया था, लेकिन आप भी उन (या समूह) है कि एक सिस्टम पर प्रवेश करने की अनुमति सीमित कर सकते हैं। उदाहरण के लिए, लॉगिन को उपयोगकर्ता तक itai(कहीं से भी) और root(एक विशिष्ट नेटवर्क से) सीमित करने के लिए , उपयोग करें:

AllowUsers itai root@192.168.0.*

यह अन्य सभी उपयोगकर्ताओं (जैसे apache) को SSH के माध्यम से प्रवेश करने से रोकता है ।

AllowUsersकीवर्ड को sshd_config (5) मैनुअल में भी देखें ।


4
मैं AllowGroupsउन सभी उपयोगकर्ताओं को पसंद करता हूं और जोड़ना चाहता हूं जो किसी विशिष्ट समूह के लिए SSH का उपयोग करने में सक्षम होना चाहिए। लगता है कि यह स्वाद की बात है, लेकिन ऐसा लगता है कि sshd_config का कम संपादन (जो गड़बड़ करने और हर किसी को बंद करने के कम जोखिम का अनुवाद करता है)।
बजे एक CVn

1
@ MichaelKjörling इसके अलावा, AllowGroups का मतलब है कि अगर आपकी टीम का विस्तार या सिकुड़ता है तो आपको sshd_config के लिए संपादन की अनुमति की आवश्यकता नहीं है। यह और भी अधिक प्रबंधकीय प्रकार या इंटर्न्स को अनुमति दे सकता है।
नजल्ल

अच्छे बिंदु, ध्यान दें कि आप विकल्पों को जोड़ सकते हैं, आपके पास है AllowUsers itai root@192.168.0.*और AllowGroups ssh-usersआप गलती से समूह में
ताला लगाने का
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.