Ssh में लॉगिन विलंब कैसे प्रदान करें


11

मैं ssh के माध्यम से लॉगिन करते समय लॉगिन विलंब प्रदान करना चाहता था। मैंने कुछ करने के तरीकों की कोशिश की, लेकिन वांछित परिणाम नहीं मिला।

मैंने दिए गए लिंक द्वारा दिए गए चरणों की कोशिश की।

http://hostingfu.com/article/ssh-dictionary-attack-prevention-with-iptables

iptables -N SSH_CHECK
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK
iptables -A SSH_CHECK -m recent --set --name SSH
iptables -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP

मेरे पास मेरी मशीन पर pam मॉड्यूल स्थापित नहीं है, इसलिए pam फ़ाइलों से संबंधित कोई संशोधन नहीं कर सकता

तो किसी भी शरीर ने मुझे ऐसा करने का कोई और तरीका सुझाया?

मेरे पास नंगे लिनक्स कर्नेल एम्बेडेड प्लेटफॉर्म पर चल रहे हैं।


आप देरी क्यों करना चाहते हैं? आपका अंतिम लक्ष्य क्या है?
बजे एक CVn

मैं पाशविक बल के हमले की जगह को रोकना चाहता था।
राम

3
बस नए कनेक्शन पर देरी शुरू करने से एक क्रूर बल हमला नहीं होगा। आपको अपनी वास्तविक समस्या को हल करने के लिए डिज़ाइन किए गए टूल को देखना होगा। मेरा सुझाव है कि विफल 2ban को देखने के साथ शुरू करें जो विशेष रूप से दिए गए आदेशों को निष्पादित करके लॉग प्रविष्टियों पर प्रतिक्रिया करने के लिए डिज़ाइन किया गया है, और अक्सर इसका उपयोग विशेष रूप से अनधिकृत पहुंच प्राप्त करने पर क्रूर बल प्रयासों को रोकने के लिए किया जाता है।
एक CVn

यह ठीक है माइकल, लेकिन ई मुझे मौजूदा बुनियादी ढांचे के साथ करना है जो मेरे पास है, मैं ssh के माध्यम से कनेक्ट होने पर हर बार देरी का परिचय कैसे दे सकता हूं।
राम

2
दोस्त, fail2banआपके पास पहले से मौजूद सटीक संरचना का उपयोग करता है - ssh लॉग और iptables नियम।
शादुर

जवाबों:


11

विधि # 1 - पासवर्ड लॉगिन अक्षम करें

यदि आपको पासवर्ड लॉगिन की अनुमति की आवश्यकता नहीं है, तो बस उन्हें अस्वीकार करने से आपको वांछित प्रभाव मिलेगा। बस इस लाइन को इसमें जोड़ें /etc/ssh/sshd_config:

PasswordAuthentication     no

इसके अतिरिक्त आप Matchऑपरेटर के उपयोग से कुछ उपयोगकर्ताओं के लिए पासवर्ड के उपयोग को सीमित कर सकते हैं sshd_config:

Match User root,foo,bar
    PasswordAuthentication no
Match User user1,user2
    PasswordAuthentication yes

विधि # 2 - iptables

आप iptablesअसफल लॉगिन प्रयासों को ट्रैक करने और एक निश्चित सीमा के बाद उन्हें छोड़ने के लिए भी उपयोग कर सकते हैं । यह होस्टिंगफू से आपके उदाहरण के समान है लेकिन समझने में आसान है।

$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --set
$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

नोट: पहली पंक्ति मूल रूप से एक नियम बनाती है जो केवल ssh पोर्ट पर नए कनेक्शन प्रयासों के लिए उपयोग किए जाने वाले पैकेट पर लागू होता है। दूसरी पंक्ति कहती है कि अगर 60 सेकंड के भीतर एक आईपी से 4 से अधिक प्रयास होते हैं, तो उस आईपी से किसी भी यातायात को ब्लैकहोल किया जाना चाहिए। यह समाधान परवाह नहीं करता है कि अलग-अलग उपयोगकर्ता खातों पर प्रयास हैं या नहीं।

विधि # 3 - PAM का उपयोग करें

मुझे लगता है कि आपने कहा था कि आपके पास PAM उपलब्ध नहीं है, लेकिन यदि आपने किया है, तो यह है कि आप असफल लॉगिन प्रयासों में देरी कैसे कर सकते हैं। यदि आपका इरादा केवल ssh लॉगिन विफलताओं में देरी करना है तो आप PAM मॉड्यूल का उपयोग कर सकते हैं pam_faildelay। यह PAM मॉड्यूल आमतौर पर डिफ़ॉल्ट मिक्स के साथ शामिल होता है।

मेरे फेडोरा 19 सिस्टम पर यह डिफ़ॉल्ट इंस्टॉलेशन का हिस्सा है।

उदाहरण

से संबंधित फाइलों को देखें pam_faildelay

$ locate pam|grep -i delay
/usr/lib/security/pam_faildelay.so
/usr/lib64/security/pam_faildelay.so
/usr/share/doc/pam-1.1.6/html/sag-pam_faildelay.html
/usr/share/doc/pam-1.1.6/txts/README.pam_faildelay
/usr/share/man/man8/pam_faildelay.8.gz

देखें कि वे किस RPM द्वारा प्रदान किए गए हैं:

$ rpm -qf /usr/share/man/man8/pam_faildelay.8.gz
pam-1.1.6-12.fc19.x86_64
pam-1.1.6-12.fc19.i686

प्रयोग

असफलता पर देरी बनाने के लिए आप बस एक पंक्ति जोड़ेंगे जैसे कि यह आपके sshdpam config फाइल में। फ़ेडोरा / सेंटोस / आरएचईएल सिस्टम पर फिर से यह फ़ाइल यहाँ स्थित है /etc/pam.d/sshd:।

10 सेकंड की देरी बनाने के लिए:

       auth  optional  pam_faildelay.so  delay=10000000

60 सेकंड की देरी:

       auth  optional  pam_faildelay.so  delay=60000000

उदाहरण

उपरोक्त विधि का उपयोग करते हुए 20 सेकंड की देरी के साथ, मैंने अपनी PAM sshdकॉन्फ़िग फ़ाइल को इस तरह बदल दिया :

#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
auth       optional     pam_faildelay.so  delay=20000000
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin

अब जब मैं लॉगिन करता हूं:

$ date
Tue Dec 17 09:16:30 EST 2013

$ ssh blah@localhost
blah@localhost's password: 
Permission denied, please try again.
blah@localhost's password: 

...Control + C....

$ date
Tue Dec 17 09:16:50 EST 2013

संदर्भ


धन्यवाद @ एसएलएम, लेकिन फिर से मैं पीएएम मॉड्यूल स्थापित नहीं कर सकता और मेरा sshd प्रमाणीकरण pam से नहीं है। क्या आप किसी अन्य तरीके से सुझाव देना चाहते हैं
Ram

@AmitSinghTomar - क्षमा करें, मैंने अपने उत्तर का विस्तार कर दिया है। मैं आपके प्रश्न का एक विहित उत्तर बनाने का प्रयास कर रहा था जिसमें केवल आपकी ही नहीं, सभी विधियों को शामिल किया गया था।
SLM

धन्यवाद फिर से @slm आपके विवरणों के उत्तर के लिए, मुझे आपके द्वारा सुझाई गई दूसरी विधि का पालन करने में दिलचस्पी है। क्या आप एक कोशिश करेंगे और आपको परिणाम बताएंगे, साथ ही यह मुझे ssh के माध्यम से लॉगिन के पहले प्रयास के साथ देरी दे सकता है?
राम

@AmitSinghTomar - नहीं, यह केवल 4 प्रयासों के बाद देरी होनी चाहिए। जब --hitcount 4नियम से अधिक हो जाता है तो 60 सेकंड के लिए आपत्तिजनक आईपी पते को ब्लैक होल कर देगा।
SLM

एक बिंदु जो मैंने आपसे जानना चाहा है, आपकी तीसरी विधि (PAM) के लिए, क्या यह आवश्यक है कि ssh प्रमाणीकरण को pam के माध्यम से होना चाहिए?
राम

3

पासवर्ड अक्षम करें। कोई पासवर्ड, कोई जानवर बल पर हमला।

आप लॉग-इन के लिए ssh- कीज़ का उपयोग कर सकते हैं - जो कि अधिक सुरक्षित होना चाहिए और हैक करने में अधिक कठिन होना चाहिए।


0

16.04 उबंटू की एक साफ स्थापना के साथ openssh-server, शून्य वर्णों से अधिक के गलत पासवर्ड प्रयास के लिए पहले से ही देरी है। देरी 1 सेकंड से अधिक लगती है

शून्य वर्णों के गलत पासवर्ड प्रयास के लिए कोई देरी नहीं है, इसलिए हमलावर तुरंत निर्धारित करेगा कि आपका पासवर्ड खाली स्ट्रिंग नहीं है यदि यह वास्तव में खाली स्ट्रिंग नहीं है। चूंकि रिक्त स्ट्रिंग को संभवतः पासवर्ड के रूप में अनुमति नहीं है, वे पहले से ही जानते हैं कि इसलिए वे खाली स्ट्रिंग की कोशिश नहीं करने जा रहे हैं।

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