SSHGUARD का उपयोग करके SSH जानवर बल के हमलों को कैसे रोकें?


SSHGuard एक ओपन-सोर्स डेमॉन है जो मेजबानों को जानवर-बल के हमलों से बचाता है। यह सिस्टम लॉग की निगरानी और एकत्रीकरण, हमलों का पता लगाने और लिनक्स फ़ायरवॉल बैकएंड में से एक का उपयोग करके हमलावरों को अवरुद्ध करने के माध्यम से इसे पूरा करता है: iptables, FirewallD, pf, और ipfw।

प्रारंभ में OpenSSH सेवा के लिए सुरक्षा की एक अतिरिक्त परत प्रदान करने के लिए डिज़ाइन किया गया, SSHGuard Vsftpd और Postfix जैसी सेवाओं की एक विस्तृत श्रृंखला की भी सुरक्षा करता है। यह Syslog, Syslog-ng और रॉ लॉग फ़ाइलों सहित कई लॉग स्वरूपों को पहचानता है।

[आप यह भी पसंद कर सकते हैं: ओपनएसएसएच सर्वर को सुरक्षित और कठोर कैसे करें]

SSHGuard, Fail2ban के समान ही है कि यह C में लिखा गया है (Fail2ban पायथन में लिखा गया है), हल्का है, और कम सुविधाएँ प्रदान करता है।

इस गाइड में, हम प्रदर्शित करेंगे कि आप अपने लिनक्स सर्वर में एसएसएच ब्रूट फोर्स हमलों को रोकने के लिए एसएसएचगार्ड को कैसे स्थापित और कॉन्फ़िगर कर सकते हैं।

चरण 1: लिनक्स पर SSHGuard स्थापित करें

हम लिनक्स पर SSHGuard की स्थापना के साथ शुरुआत करते हैं।

सबसे पहले, पैकेज सूचियों को अपडेट करें और फिर उपयुक्त पैकेज मैनेजर का उपयोग करके डिफ़ॉल्ट रिपॉजिटरी से SSHGuard स्थापित करें।

$ sudo apt update
$ sudo apt install sshguard

एक बार स्थापित होने के बाद, SSHGuard सेवा स्वचालित रूप से शुरू हो जाती है, और आप कमांड का उपयोग करके इसे सत्यापित कर सकते हैं:

$ sudo systemctl status sshguard

RHEL- आधारित वितरण जैसे CentOS, Rocky, और AlmaLinux के लिए, EPEL रिपॉजिटरी को स्थापित करके शुरू करें जैसा कि नीचे दिए गए कमांड में दिया गया है।

$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
OR
$ sudo dnf install epel-release

EPEL के साथ, आगे बढ़ें और dnf पैकेज मैनेजर का उपयोग करके SSHGuard स्थापित करें।

$ sudo dnf install sshguard 

एक बार स्थापित होने के बाद, सिस्टम स्टार्टअप या रिबूट पर शुरू करने के लिए SSHGuard को प्रारंभ करें और सेट करें।

$ sudo systemctl start sshguard
$ sudo systemctl enable sshguard

यह सत्यापित करना सुनिश्चित करें कि SSHGuard अपेक्षा के अनुरूप चल रहा है।

$ sudo systemctl status sshguard

चरण 2: लिनक्स पर SSHGuard कॉन्फ़िगरेशन

SSHGuard विफल लॉगिन प्रयासों के लिए सक्रिय रूप से /var/log/auth.log, /var/log/secure systemd जर्नल और syslog-ng लॉग फ़ाइलों की निगरानी करता है।

प्रत्येक असफल लॉगिन प्रयास के लिए, दूरस्थ होस्ट को सीमित समय के लिए प्रतिबंधित किया जाता है, जो डिफ़ॉल्ट रूप से 120 सेकंड पर सेट होता है। इसके बाद, प्रत्येक असफल लॉगिन प्रयास के साथ प्रतिबंध का समय 1.5 के कारक से बढ़ जाता है।

sshguard.conf फ़ाइल में अन्य मापदंडों के अलावा, आपत्तिजनक मेजबानों पर प्रतिबंध लगाने का समय निर्दिष्ट किया गया है। जैसा कि दिखाया गया है, आप विम संपादक का उपयोग करके कॉन्फ़िगरेशन फ़ाइल तक पहुँच सकते हैं।

$ sudo vim /etc/sshguard/sshguard.conf

RHEL-आधारित वितरण पर, कॉन्फ़िग फ़ाइल निम्न पथ में स्थित है।

$ sudo vim /etc/sshguard.conf

उबंटू/डेबियन से देखे जाने पर कॉन्फ़िगरेशन फ़ाइल का एक नमूना यहां दिया गया है।

आइए मुख्य विकल्प पर ध्यान दें।

  • बैकएंड निर्देश बैकएंड निष्पादन योग्य के पूर्ण पथ की ओर इशारा करता है। इस उदाहरण में, हम देखते हैं कि IPtables को डिफ़ॉल्ट फ़ायरवॉल बैकएंड के रूप में सेट किया गया है।
  • थ्रेशोल्ड निर्देश हमलावरों को तब ब्लॉक करता है जब उनका अटैक स्कोर निर्दिष्ट मान से अधिक हो जाता है।
  • BLOCK_TIME विकल्प सेकंड की संख्या है जो एक हमलावर को हर लगातार विफल लॉगिन प्रयास के बाद अवरुद्ध कर दिया जाता है। डिफ़ॉल्ट रूप से, यह पहले प्रयास के बाद 120 पर सेट होता है। यह लगातार प्रत्येक असफल लॉगिन प्रयास के साथ बढ़ता है।
  • DETECTION_TIME विकल्प सेकंड में उस समय को संदर्भित करता है जिसके दौरान हमलावर का स्कोर रीसेट होने से पहले सिस्टम द्वारा पंजीकृत या याद किया जाता है।
  • WHITELIST_file विकल्प श्वेतसूची फ़ाइल के पूर्ण पथ को इंगित करता है जिसमें होस्ट शामिल हैं जिन्हें ब्लैकलिस्ट नहीं किया जाना चाहिए।/li>

चरण 3: SSH जानवर बल हमलों को रोकने के लिए SSHGuard को कॉन्फ़िगर करें

जानवर-बल के हमलों को रोकने के लिए, आपको sshguard के साथ काम करने के लिए निम्नलिखित फायरवॉल पर कॉन्फ़िगर करने की आवश्यकता है।

यदि आपने अपने उबुंटू/डेबियन सिस्टम पर UFW संस्थापित और सक्षम किया हुआ है, तो /etc/ufw/before.rules फ़ाइल को संशोधित करें।

$ sudo vim etc/ufw/before.rules

सभी को लूपबैक पर अनुमति दें अनुभाग के ठीक बाद निम्न पंक्तियाँ जोड़ें।

# allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT

# hand off control for sshd to sshguard
:sshguard - [0:0]
-A ufw-before-input -p tcp --dport 22 -j sshguard

फ़ाइल सहेजें और UFW को पुनरारंभ करें।

$ sudo systemctl restart ufw

अब गलत क्रेडेंशियल के साथ एक अलग सिस्टम से सर्वर में लॉग इन करने का प्रयास करें और ध्यान दें कि पहले असफल लॉगिन प्रयास के बाद आपको 120 सेकंड के लिए लॉक कर दिया जाएगा।

आप auth.log लॉग फ़ाइल की जाँच करके इसे सत्यापित कर सकते हैं।

$ sudo tail -f  /var/log/auth.log

अगले विफल लॉग प्रयास के बाद, ब्लॉक का समय 240 सेकंड तक बढ़ जाता है, फिर 480 सेकंड, फिर 960 सेकंड, और इसी तरह।

यदि आप फ़ायरवॉल चला रहे हैं, तो सुनिश्चित करें कि यह सेट और सक्षम है। फिर अपने पसंदीदा क्षेत्र पर sshguard को सक्षम करने के लिए निम्न आदेश निष्पादित करें।

$ sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule source ipset=sshguard4 drop"

परिवर्तनों को लागू करने के लिए, फ़ायरवॉल और sshguard को पुनः लोड करें।

$ sudo firewall-cmd --reload
$ sudo systemctl restart sshguard

फिर नियम को निम्नानुसार सत्यापित करें:

$ sudo firewall-cmd —-info-ipset=sshguard4

यदि आप अभी भी Iptables का उपयोग कर रहे हैं, तो पहले बुरे लोगों को ब्लॉक करने के लिए Iptables में sshguard के लिए एक नया श्रृंखला नियम बनाएं।

# iptables -N sshguard

इसके बाद, ट्रैफ़िक को sshguard को निर्देशित करने और नापाक पार्टियों के सभी ट्रैफ़िक को ब्लॉक करने के लिए INPUT श्रृंखला को अपडेट करें।

# iptables -A INPUT -j sshguard

दुर्व्यवहार करने वालों से SSH, POP और IMAP जैसे विशिष्ट पोर्ट को ब्लॉक करने के लिए कमांड चलाएँ:

# iptables -A INPUT -m multiport -p tcp --destination-ports 22,110,143 -j sshguard

और अंत में, परिवर्तनों को प्रभावी होने के लिए नियम को सहेजें।

# iptables-save > /etc/iptables/iptables.rules

चरण 4: SSH ब्लॉक किए गए होस्ट को श्वेतसूची में कैसे डालें

किसी अवरुद्ध होस्ट को श्वेतसूची में डालने के लिए, श्वेतसूची फ़ाइल में बस उसका होस्टनाम या IP पता निर्दिष्ट करें जो इसमें स्थित है:

/etc/sshguard/whitelist - Ubuntu/Debian 
/etc/sshguard.whitelist - RHEL-based distros

इसके बाद, परिवर्तनों को लागू करने के लिए sshguard डेमॉन और फ़ायरवॉल बैकएंड को पुनरारंभ करना सुनिश्चित करें।

इस गाइड में, हमने दिखाया है कि आप लिनक्स सर्वर में SSHGuard डेमॉन का उपयोग करके SSH Bruteforce हमलों को कैसे रोक सकते हैं। आपकी प्रतिक्रिया का स्वागत है।