अपने लिनक्स सर्वर को सुरक्षित करने के लिए Fail2ban का उपयोग कैसे करें


अपने सर्वर की सुरक्षा में सुधार करना आपकी शीर्ष प्राथमिकताओं में से एक होना चाहिए, जब यह लिनक्स सर्वर को प्रबंधित करने की बात आती है। अपने सर्वर लॉग की समीक्षा करके, आप अक्सर जानवर बल लॉगिन, वेब बाढ़, शोषण की तलाश और कई अन्य लोगों के लिए अलग-अलग प्रयास पा सकते हैं।

घुसपैठ रोकथाम सॉफ्टवेयर जैसे कि fail2ban के साथ आप अपने सर्वर लॉग की जांच कर सकते हैं और समस्याग्रस्त आईपी पते को ब्लॉक करने के लिए अतिरिक्त iptables नियम जोड़ सकते हैं।

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

Fail2ban को अजगर में लिखा गया है और केवल अजगर को स्थापित करने की आवश्यकता है:

  • Fail2ban branch 0.9.x requires Python >=2.6 or Python >=3.2
  • Fail2ban branch 0.8.x requires Python >=2.4
  • Root access to your system
  • Optinally, iptables or showewall and sendmail

लिनक्स सिस्टम में Fail2Ban को कैसे स्थापित करें

fail2ban की स्थापना अपेक्षाकृत आसान है:

पहले अपने पैकेजों को अपडेट करें, एपल रिपॉजिटरी को सक्षम करें और दिखाए गए fail2ban को स्थापित करें।

# yum update
# yum install epel-release
# yum install fail2ban

पहले अपने पैकेजों को अपडेट करें और दिखाए गए अनुसार fail2ban इंस्टॉल करें।

# apt-get update && apt-get upgrade -y
# apt-get install fail2ban

वैकल्पिक रूप से, यदि आप मेल समर्थन (मेल सूचनाओं के लिए) को सक्षम करना चाहते हैं, तो आप सेंडमेल को स्थापित कर सकते हैं।

# yum install sendmail                   [On CentOS/RHEL]
# apt-get install sendmail-bin sendmail  [On Debian/Ubuntu]

सक्षम करने के लिए fail2ban और Sendmail निम्न आदेशों का उपयोग करें:

# systemctl start fail2ban
# systemctl enable fail2ban
# systemctl start sendmail
# systemctl enable sendmail

लिनक्स सिस्टम में Fail2ban को कैसे कॉन्फ़िगर करें

डिफ़ॉल्ट रूप से, fail2ban <कोड> .conf /etc/fail2ban/ में स्थित फ़ाइलों का उपयोग करता है जो पहले पढ़े जाते हैं। हालाँकि इन्हें एक ही डायरेक्टरी में स्थित .local फ़ाइलों द्वारा ओवरराइड किया जा सकता है।

इस प्रकार, .local फ़ाइल को .conf फ़ाइल से सभी सेटिंग्स शामिल करने की आवश्यकता नहीं है, लेकिन केवल वे जिन्हें आप ओवरराइड करना चाहते हैं। परिवर्तन <कोड> .Local फ़ाइलों में किया जाना चाहिए <कोड> .conf में नहीं। यह विफलता के परिवर्तन को रोकेगा, जब असफल 2 चैनल पैकेट को अपग्रेड किया जाएगा।

इस ट्यूटोरियल के उद्देश्य के लिए, हम मौजूदा fail2ban.conf फ़ाइल को fail2ban.local पर कॉपी करेंगे।

# cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

अब आप अपने पसंदीदा टेक्स्ट एडिटर का उपयोग करके .local फ़ाइल में परिवर्तन कर सकते हैं। आपके द्वारा संपादित किए जा सकने वाले मूल्य इस प्रकार हैं:

  • loglevel – this is the level of detail to be logged. Possible options are:
    • CRITICAL
    • ERROR
    • WARNING
    • NOTICE
    • INFO
    • DEBUG
    • STDOUT – output any data
    • STDERR – otuput any errors
    • SYSLOG – message based logging
    • File – output to a file

    Fail2ban में सबसे महत्वपूर्ण फाइलों में से एक है जेल.कॉन्फ़ जो आपकी जेलों को परिभाषित करता है। यह वह जगह है जहां आप उन सेवाओं को परिभाषित करते हैं जिनके लिए असफल 2 एबन सक्षम होना चाहिए।

    जैसा कि हमने पहले उल्लेख किया था .conf फ़ाइलों को अपग्रेड के दौरान बदला जा सकता है, इस प्रकार आपको एक जेल.लोक फ़ाइल बनानी चाहिए जहाँ आप अपने संशोधनों को लागू कर सकते हैं।

    ऐसा करने का एक और तरीका है कि बस .conf फ़ाइल को कॉपी करें:

    # cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    

    यदि आप CentOS या Fedora का उपयोग कर रहे हैं, तो आपको जेल.लोक से बैकएंड में बदलना होगा। मजबूत> "ऑटो" से "सिस्टमड"

    यदि आप Ubuntu/Debian का उपयोग कर रहे हैं, तो इस संशोधन को करने की कोई आवश्यकता नहीं है, भले ही वे systemd का उपयोग करें।

    जेल फ़ाइल, SSH को Debian और Ubuntu के लिए डिफ़ॉल्ट रूप से सक्षम करेगी, लेकिन CentOS पर नहीं। यदि आप इसे सक्षम करना चाहते हैं, तो बस /etc/fail2ban/jail.local में निम्न पंक्ति बदलें:

    [sshd]
    enabled = true
    

    आप उस परिस्थिति को कॉन्फ़िगर कर सकते हैं जिसके बाद एक आईपी पता अवरुद्ध है। उस उद्देश्य के लिए, fail2ban बंटाइम , खोज समय और अधिकतम का उपयोग करें।

    • bantime – this is the number of seconds that an IP address will remain banned (default 10 min).
    • findtime – the amount of time between login attempts, before the host is banned. (default 10 min). In other words, if fail2ban is set to block an IP address after 3 failed login attempts, those 3 attempts, must be done within the findtime period (10 mins).
    • maxretry – number of attempts to be made before a ban is applied. (default 3).

    बेशक, आप कुछ आईपी पते को श्वेतसूची में बदलना चाहेंगे। ऐसे IP पतों को कॉन्फ़िगर करने के लिए अपने पसंदीदा टेक्स्ट एडिटर के साथ /etc/fail2ban/jail.local खोलें और निम्न पंक्ति को अनकम्प्लीट करें:

    ignoreip = 127.0.0.1/8  ::1
    

    फिर, आप उन IP पतों को रख सकते हैं जिन्हें आप अनदेखा करना चाहते हैं। आईपीपते को अंतरिक्ष या अल्पविराम से अलग किया जाना चाहिए।

    यदि आप ईवेंट पर मेल अलर्ट प्राप्त करना चाहते हैं, तो आपको /etc/fail2ban/jail.local में निम्न सेटिंग्स कॉन्फ़िगर करनी होंगी:

    • destemail – mail address, where you will receive the notificatoin.
    • Sendername – the sender that you will see when receiving the message.
    • sender – email address from which fail2ban will send the emails.

    डिफ़ॉल्ट mta ( मेल ट्रांसफर एजेंट ) sendmail पर सेट है।

    मेल नोटिफिकेशन प्राप्त करने के लिए, आपको "कार्रवाई" से सेटिंग बदलने की आवश्यकता होगी:

    Action = %(action_)s
    

    इनमें से एक:

    action = %(action_mw)s
    action = %(action_mwl)s
    
    • %(action_mw)s – will ban the host and send mail with a whois report.
    • %(action_mwl)s – will ban the host, provide whois info and all relevant information from the log file.

    अतिरिक्त Fail2ban जेल विन्यास

    अब तक हमने बुनियादी विन्यास विकल्पों पर ध्यान दिया है। यदि आप किसी जेल को कॉन्फ़िगर करना चाहते हैं, तो आपको इसे जेल.लोकल फ़ाइल में सक्षम करना होगा। वाक्यविन्यास बहुत सरल है:

    [jail_to_enable]
    . . .
    enabled = true
    

    जहां आपको वास्तविक जेल के साथ जेल_तो_सेबल को बदलना चाहिए, उदाहरण के लिए "sshd" जेल.लोक फ़ाइल में, ssh सेवा के लिए निम्नलिखित मान पूर्वनिर्धारित होंगे:

    [sshd]
    
    port = ssh
    logpath = %(sshd_log)s
    

    आप फ़िल्टर को सक्षम कर सकते हैं जो पहचानने में मदद करेगा कि लॉग में कोई रेखा विफल है या नहीं। फ़िल्टर मूल्य वास्तव में सेवा नाम के साथ एक फ़ाइल का संदर्भ है जिसके बाद .conf है। उदाहरण के लिए: /etc/fail2ban/filter.d/sshd.conf

    वाक्य रचना है:

    filter = service
    

    उदाहरण के लिए:

    filter = sshd
    

    आप निम्न निर्देशिका में मौजूदा फ़िल्टरों की समीक्षा कर सकते हैं: /etc/fail2ban/filter.d/

    Fail2ban एक क्लाइंट के साथ आता है जिसे वर्तमान कॉन्फ़िगरेशन की समीक्षा करने और बदलने के लिए उपयोग किया जा सकता है। चूंकि यह कई विकल्प प्रदान करता है, आप इसके मैनुअल से गुजर सकते हैं:

    # man fail2ban-client 
    

    यहां आपको कुछ बेसिक कमांड दिखाई देंगे जिनका आप उपयोग कर सकते हैं। fail2ban की वर्तमान स्थिति की समीक्षा करने या विशिष्ट जेल के लिए, आप उपयोग कर सकते हैं:

    # fail2ban-client status
    

    परिणाम इस तरह दिखेगा:

    व्यक्तिगत जेल के लिए, आप चला सकते हैं:

    # fail2ban-client status sshd
    

    नीचे दिए गए स्क्रीनशॉट में, आप देखेंगे कि मैंने जानबूझकर कई लॉगिन विफल कर दिए हैं, इसलिए fail2ban उस IP पते को ब्लॉक कर सकता है जिससे मैं कनेक्ट करने का प्रयास कर रहा था:

    Fail2ban एक उत्कृष्ट, अच्छी तरह से प्रलेखित घुसपैठ रोकथाम प्रणाली है, जो आपके लिनक्स सिस्टम को अतिरिक्त सुरक्षा प्रदान करती है। इसके सेटअप और सिंटैक्स का उपयोग करने के लिए कुछ समय की आवश्यकता होती है, लेकिन एक बार जब आप इससे परिचित हो जाते हैं, तो आप अपने नियमों को बदलने और विस्तारित करने के लिए स्वतंत्र महसूस करेंगे।