पासवर्ड ब्रूट फ़ोर्स के ख़िलाफ़ Fail2ban
Fail2ban कैसे इंस्टॉल और कॉन्फ़िगर करें: SSH और वेब फ़ॉर्म ब्रूट फ़ोर्स ब्लॉक करना, अपने पतों को व्हाइटलिस्ट करना, जाँचना कि यह काम कर रहा है, और ख़ुद को अनब्लॉक करना।
23 अगस्त 2026 को अपडेट किया गया
Fail2ban लॉग पढ़ता है, एक ही पते से हुए फेल लॉगिन प्रयासों की गिनती करता है और फ़ायरवॉल नियम से उसे अस्थायी रूप से ब्लॉक कर देता है। यह की-आधारित लॉगिन की जगह नहीं लेता, लेकिन बैकग्राउंड में चलने वाले ज़्यादातर ब्रूट-फ़ोर्स ट्रैफ़िक को हटा देता है और आपके लॉग पर पड़ने वाला लोड कम कर देता है।
इंस्टॉलेशन और बेसिक सेटअप
apt install -y fail2ban
अपनी खुद की फ़ाइल /etc/fail2ban/jail.local इस्तेमाल करें — jail.conf में किए गए बदलाव अपडेट से ओवरराइट हो जाते हैं:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 203.0.113.5
banaction = ufw
[sshd]
enabled = true
port = 22
maxretry = 3
bantime = 24h
systemctl enable --now fail2ban
fail2ban-client status
fail2ban-client status sshd
अपने घर या ऑफ़िस का पता ignoreip में डालें — यह खुद को बैन करने से बचने का आपका बीमा है। अगर आपका पता बदल जाए, तो पैनल में /hosting/vds/m/<id> पर मौजूद कंसोल आपका सेफ़्टी नेट बना रहता है: यह नेटवर्क और नियमों की परवाह किए बिना काम करता है।
banaction आपके फ़ायरवॉल से मेल खाना चाहिए: ufw के लिए ufw, nftables के लिए nftables-multiport।
नतीजा कहाँ देखें
fail2ban-client status sshd
tail -f /var/log/fail2ban.log
journalctl -u fail2ban -n 50
स्टेटस फेल प्रयासों की संख्या और बैन किए गए पतों की सूची दिखाता है। पब्लिक पते पर रोज़ाना सैकड़ों की गिनती सामान्य है, यह टारगेटेड हमले का संकेत नहीं है।
किसी पते को अनबैन करें (अपने पते समेत):
fail2ban-client set sshd unbanip 203.0.113.5
SSH से आगे की सुरक्षा
Fail2ban किसी भी ऐसे लॉग के साथ काम कर सकता है जिसमें फेल प्रयास दिखते हों।
[nginx-http-auth]
enabled = true
[nginx-limit-req]
enabled = true
logpath = /var/log/nginx/error.log
[postfix-sasl]
enabled = true
अपने खुद के एप्लिकेशन के लिए आपको एक फ़िल्टर चाहिए — /etc/fail2ban/filter.d/ में एक फ़ाइल, जिसमें एक रेगुलर एक्सप्रेशन हो और पता <HOST> के रूप में मार्क हो:
[Definition]
failregex = ^.*login failed.*ip=<HOST>.*$
ignoreregex =
असली लॉग पर एक्सप्रेशन टेस्ट करें:
fail2ban-regex /var/log/myapp.log /etc/fail2ban/filter.d/myapp.conf
यह कमांड दिखाती है कि कितनी लाइनें मैच हुईं। शून्य मैच का मतलब है कि नियम गलत है — और चुपचाप फेल होने वाली सुरक्षा बिल्कुल न होने से भी बदतर है।
आम गलतियाँ
| गलती | नतीजा | समाधान |
|---|---|---|
jail.conf में बदलाव | अपडेट पर खो जाते हैं | jail.local में लिखें |
आपका पता ignoreip में नहीं | एक दिन आप खुद को बैन कर लेंगे | इसे जोड़ें, या पैनल कंसोल से कनेक्ट करें |
banaction आपके फ़ायरवॉल से मेल नहीं खाता | बैन लागू नहीं होते | इसे ufw या nftables के साथ मिलाएँ |
| फ़िल्टर लॉग फ़ॉर्मैट से मैच नहीं करता | सुरक्षा की जगह सन्नाटा | fail2ban-regex से जाँचें |
| सर्विस systemd लॉग नहीं पढ़ पाती | खाली स्टेटस | backend = systemd सेट करें |
असल में टेस्ट करें: बाहर के किसी पते से जानबूझकर ज़रूरी बार गलत पासवर्ड डालें और पक्का करें कि वह बैन लिस्ट में आ जाता है। बिना कॉन्फ़िगर किया fail2ban सुरक्षा का झूठा भरोसा देता है।
इसे फ़ायरवॉल में ही कनेक्शन रेट लिमिटिंग से पूरा करें — ufw limit 22/tcp।