सवाल Denyhosts बनाम fail2ban बनाम iptables- ब्रूट फोर्स लॉगऑन को रोकने के लिए सबसे अच्छा तरीका है?


मैं एक एलएएमपी सर्वर स्थापित कर रहा हूं और एसएसएच / एफ़टीपी / आदि को रोकने की जरूरत है। ब्रूट-फोर्स लॉगऑन सफल होने का प्रयास करता है। मैंने denyhosts और fail2ban दोनों के लिए कई सिफारिशें देखी हैं, लेकिन दोनों की कुछ तुलना। मैंने यह भी पढ़ा है कि एक आईपीटीबल्स नियम एक ही फ़ंक्शन को भर सकता है।

मैं इन विधियों में से एक को दूसरे पर क्यों चुनूं? सर्वरफॉल्ट पर लोग इस समस्या को कैसे संभालते हैं?


54
2018-04-03 01:07


मूल




जवाब:


आईआईआरसी, डेनिहोस्ट केवल आपकी एसएसएच सेवा देखेंगे। यदि आपको अन्य सेवाओं की सुरक्षा के लिए इसकी आवश्यकता है, तो Fail2ban निश्चित रूप से एक बेहतर विकल्प है। यदि आप इसकी कॉन्फ़िगरेशन को ट्विक करने के इच्छुक हैं, तो यह लगभग किसी भी सेवा को देखने के लिए कॉन्फ़िगर करने योग्य है, लेकिन यह आवश्यक नहीं होना चाहिए क्योंकि Fail2ban के नए संस्करणों में ऐसे नियम शामिल हैं जो कई लोकप्रिय सर्वर डिमन्स के लिए उपयुक्त हैं। एक साधारण iptables दर सीमा पर fail2ban का उपयोग करने से एक निश्चित मात्रा के लिए हमलावर को पूरी तरह से अवरुद्ध करने का लाभ होता है, बस यह कम करने के बजाय कि वह आपके सर्वर को कितनी जल्दी हथौड़ा कर सकता है। मैंने कई उत्पादन सर्वरों पर शानदार परिणामों के साथ fail2ban का उपयोग किया है और मैंने कभी भी ब्रूट फोर्स अटैक द्वारा उल्लंघन किए गए उन सर्वरों में से एक को नहीं देखा है क्योंकि मैंने इसका उपयोग करना शुरू कर दिया है।


50
2018-04-04 05:33



ध्यान दें कि DenyHosts अन्य सेवाओं को अवरुद्ध करेगा - मुख्य अंतर यह है कि fail2ban iptables का उपयोग करता है जबकि DenyHosts host.deny का उपयोग करता है, कुछ सेवाएं अपाचे जैसे होस्ट फ़ाइलों को नहीं देखती हैं। - jammypeach
तालिका में एक और विकल्प फेंकने के लिए, मैंने हाल ही में पाया है कि यूएफडब्ल्यू फ़ायरवॉल कॉन्फ़िगरेटर आपको किसी भी टीसीपी या यूडीपी पोर्ट को एक (कॉन्फ़िगर करने योग्य) दर सीमा लागू करने की अनुमति देता है। यदि आप पहले से ही यूएफडब्लू का उपयोग कर रहे हैं, तो यह अतिरिक्त डिमन को कॉन्फ़िगर करने और चलाने के बजाय एक अच्छा विकल्प हो सकता है। - spiffytech
ब्रूटफोर्स उल्लंघनों को रोकने के लिए पहली चीज उचित रूप से मजबूत पासवर्ड का उपयोग कर रही है (या यहां तक ​​कि पासवर्ड ऑथ को अक्षम भी कर रहा है :)। इसके लिए कम-सीमित (अकेला) कमजोर है। मैंने विकल्पों का प्रयास नहीं किया लेकिन मैं खुद को fail2ban का उपयोग करता हूं और पासवर्ड प्रोबिंग बॉट को रोकने के लिए इसे उपयोगी पाया। - Petr Gladkikh
मेरे अनुभव में, असफल 2ban को वास्तव में कुछ भी करने के लिए थोड़ा और काम चाहिए। इसके विपरीत, आप डेनिहोस्ट्स आरपीएम को बहुत अधिक स्थापित कर सकते हैं और अधिक जटिल विकल्पों को पूरा करते समय अपने सर्वर की सुरक्षा के लिए इसे शुरू कर सकते हैं। मैं निश्चित रूप से सहमत हूं कि fail2ban 'बेहतर' है, लेकिन आसान सुरक्षा के लिए, आप denyhosts को हरा नहीं सकते हैं। - Ralph Bolton


ब्रूट फोर्स लॉगऑन को रोकने का सबसे अच्छा तरीका?

उन्हें अपनी मशीन पर पहली जगह न जाने दें! अपने मेजबान, या यहां तक ​​कि एसएसएच स्तर पर पहुंचने से पहले ब्रूट फोर्स प्रयासों को रोकने के कई तरीके हैं।

ऐसा कहकर, fail2ban जैसे कुछ के साथ अपने ऑपरेटिंग सिस्टम की सुरक्षा करना एक अच्छा विचार है। Fail2ban DenyHosts के लिए थोड़ा अलग है, हालांकि वे एक ही स्थान पर खेलते हैं। Fail2ban iptables का उपयोग करता है।

http://en.wikipedia.org/wiki/Fail2ban

Fail2ban DenyHosts के समान है ... लेकिन DenyHosts के विपरीत जो   एसएसएच पर केंद्रित है, fail2ban किसी भी सेवा की निगरानी के लिए कॉन्फ़िगर किया जा सकता है   एक लॉग फ़ाइल, और उपयोग करने के बजाय लॉगिन प्रयास लिखता है   /etc/hosts.deny केवल आईपी पते / होस्ट को ब्लॉक करने के लिए, fail2ban उपयोग कर सकते हैं   नेटफिल्टर / आईपीटीबल्स और टीसीपी रैपर /etc/hosts.deny।

ब्रूट फोर्स लॉग इन को रोकने में मदद के लिए आपको कई महत्वपूर्ण सुरक्षा तकनीकों पर विचार करना चाहिए:

SSH:

  • लॉग इन करने की अनुमति न दें
  • एसएसएच पासवर्ड की अनुमति न दें (निजी कुंजी प्रमाणीकरण का उपयोग करें)
  • हर इंटरफेस पर मत सुनो
  • एसएसएच (उदाहरण के लिए eth1) के लिए एक नेटवर्क इंटरफ़ेस बनाएं, जो इंटरफ़ेस से भिन्न है, जो आप अनुरोध करते हैं (उदा। Eth0)
  • सामान्य उपयोगकर्ता नामों का प्रयोग न करें
  • एक अनुमति सूची का उपयोग करें, और केवल उन उपयोगकर्ताओं को अनुमति दें जिन्हें एसएसएच एक्सेस की आवश्यकता है
  • यदि आपको इंटरनेट एक्सेस की आवश्यकता है ... आईपी के एक सीमित सेट तक पहुंच प्रतिबंधित करें। एक स्थैतिक आईपी आदर्श है, हालांकि इसे x.x.0.0 / 16 तक लॉक करना 0.0.0.0/0 से बेहतर है
  • यदि संभव हो तो इंटरनेट एक्सेस के बिना कनेक्ट करने का कोई तरीका ढूंढें, इस तरह आप एसएसएच के लिए सभी इंटरनेट यातायात को अस्वीकार कर सकते हैं (उदाहरण के लिए एडब्ल्यूएस के साथ आप सीधे कनेक्शन प्राप्त कर सकते हैं जो इंटरनेट को छोड़ देता है, इसे डायरेक्ट कनेक्ट कहा जाता है)
  • किसी भी ब्रूट फोर्स हमलों को पकड़ने के लिए fail2ban जैसे सॉफ़्टवेयर का उपयोग करें
  • सुनिश्चित करें कि ओएस हमेशा अद्यतित है, विशेष रूप से सुरक्षा और एसएसएच पैकेज में

आवेदन:

  • सुनिश्चित करें कि आपका एप्लिकेशन हमेशा अद्यतित है, खासकर सुरक्षा पैकेज में
  • अपने एप्लिकेशन 'व्यवस्थापक' पृष्ठों को लॉक करें। ऊपर दी गई कई सलाहएं आपके आवेदन के व्यवस्थापक क्षेत्र पर भी लागू होती हैं।
  • पासवर्ड अपने व्यवस्थापक क्षेत्र को सुरक्षित रखें, वेब कंसोल के लिए htpasswd जैसे कुछ किसी भी अंतर्निहित अनुप्रयोग भेद्यता प्रोजेक्ट करेगा और प्रवेश के लिए अतिरिक्त बाधा उत्पन्न करेगा
  • फ़ाइल अनुमतियों को लॉक करें। 'फ़ोल्डर्स अपलोड करें' सभी प्रकार के गंदे सामानों के प्रवेश बिंदु होने के लिए कुख्यात हैं।
  • अपने एप्लिकेशन को एक निजी नेटवर्क के पीछे डालने पर विचार करें, और केवल अपने फ्रंट-एंड लोड बैलेंसर और एक जंपबॉक्स को उजागर करें (यह वीपीसी का उपयोग करके एडब्ल्यूएस में एक सामान्य सेटअप है)

18
2018-05-12 10:42



क्या आप इस कथन पर विस्तार से बता सकते हैं कि "आपके मेजबान, या यहां तक ​​कि एसएसएच स्तर पर पहुंचने से पहले ब्रूट फोर्स प्रयासों को रोकने के कई तरीके हैं।" मुझे विशेष रूप से दिलचस्पी है यदि आपके पास होस्टेड मशीनों के लिए कोई सुझाव है जहां आपके पास बाहरी नेटवर्किंग पर नियंत्रण नहीं है। धन्यवाद! - Kevin Keane


एसएसएच की रक्षा करने के लिए एक और बढ़िया तरीका (मैंने इसे एक दशक या बेहतर के लिए उपयोग किया है) हाल ही में iptables में हालिया पुस्तकालयों का उपयोग करना है (आपके distro के आधार पर)।
असल में इसका उपयोग बंदरगाहों के रूप में किया जा सकता है जो iptables में बनाया गया है। यह आपको बहुत सारे सिरदर्द बचाएगा। जब तक आप टीसीपी कनेक्ट कर सकते हैं (टेलनेट एक तरीका है। मैंने एसएसएच क्लाइंट का भी इस्तेमाल किया है और उन्हें पोर्ट पर इंगित किया है। कुछ भी जो निर्दिष्ट पोर्ट नंबर पर टीसीपी कनेक्शन करेगा। मैं आपको पुट्टी देख रहा हूं!) एसएसएच कनेक्शन शुरू करने वाला ग्राहक आप इसका उपयोग कर सकते हैं।

नीचे एक उदाहरण है जिसमें आपके मेजबान से पोर्ट को 4 9 3 पर सर्वर पर टेलनेट करते समय iptables खुले बंदरगाह 22 होगा। फिर आप पोर्ट खोलने के लिए बंदरगाह 4102 या 4104 पर टेलनेट का उपयोग कर सकते हैं। 4102 और 4104 दोनों का कारण 22 को खोलने से एक सरल टीसीपी स्कैन रखना है। पोर्ट 4103 पर केवल एक टीसीपी कनेक्ट (टेलनेट) आपको अनुमति देगा।

का आनंद लें!

ओह और मैं Fail2Ban का पक्ष लेता हूँ। अधिक लचीलापन और मुझे लगता है कि प्रतिबंध tcpwrappers के बजाय iptables में होता है।

एसएसएच पोर्टकॉकिंग

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --rcheck --name SSH -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 4102 -m recent --name SSH --remove -j DROP
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 4103 -m recent --name SSH --set -j DROP
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 4104 -m recent --name SSH --remove -j DROP

7
2017-09-29 22:11





मैं iptables नियमों का उपयोग उसी आईपी पते से नए कनेक्शन को रेट-सीमित करने के लिए करता हूं (मुख्य रूप से एसएसएच, लेकिन यह एफ़टीपी के लिए भी ठीक काम करेगा)। लाभ, जैसा कि मैंने इसे देखा, "fail2ban" और ऐसे अन्य औजारों पर यह है कि iptables मार्ग पूरी तरह से कर्नेल मोड में होता है और किसी भी उपयोगकर्ता मोड टूल्स पर निर्भर करता है कि लॉग फाइलों को पूंछ / पार्स करें।

सैकड़ों असफल एसएसएच लॉगिन

यदि आप ऐसा कर सकते हैं, तो स्रोत पते को सीमित करना जो प्रश्न में प्रोटोकॉल तक पहुंच सकते हैं, जाहिर है, सहायता भी करेंगे।

एसएसएच के साथ, आपको वास्तव में प्रमाण पत्र प्रमाणीकरण का उपयोग करना चाहिए और वैसे भी पासवर्ड स्वीकार नहीं करना चाहिए।


6
2018-04-03 01:12



@ mc0e - मैं पीछा नहीं कर रहा हूँ। - Evan Anderson


Fail2Ban के बारे में ध्यान देने योग्य एक बात यह है कि ऐसा लगता है कि यह डेनिहोस्ट की तुलना में लगभग 10 एमबी अधिक मेमोरी का उपयोग करता है। तो यदि आप 128 एमबी वीपीएस पर हैं तो आप उसमें देखना चाहेंगे। साथ ही, आउट ऑफ़ द बॉक्स विफल 2ban केवल एसएसएच पर सेटअप है जिसका मतलब है कि कॉन्फ़िगर में कोई बदलाव नहीं होने के साथ - डेनिहोस्ट कम स्मृति में एक ही चीज़ करता है।


5
2017-09-25 18:49



"Ulimit -s 256" को / etc / default / fail2ban में जोड़ने का प्रयास करें। मेरे सिस्टम पर 10 एमबी कम किया। - pkoch


Fail2ban और Denyhosts के बीच एक और अंतर यह है कि Denyhosts अन्य Denyhosts उपयोगकर्ताओं के साथ ब्लॉक सूची साझा कर सकते हैं। Fail2ban के साथ, आप केवल उन IP को अवरुद्ध कर सकते हैं जिन्हें आपके सर्वर ने पहले देखा है - डेनिहोस्ट्स के साथ, एक ब्रूट-फोर्स प्रयास कभी भी आपके सर्वर पर नहीं पहुंच सकता है, अगर किसी और ने इसे देखा है, और हमलावर से पहले ब्लॉक सूची आपके सर्वर पर डाउनलोड की जाती है आपके कंप्यूटर पर आता है।

फिर भी एक और अंतर यह है कि Fail2ban iptables का उपयोग करता है, जबकि Denyhosts tcpwrappers का उपयोग करता है। दूसरों ने पहले इस अंतर का उल्लेख किया है, लेकिन उल्लेख करने के लायक कुछ पक्ष नोट्स हैं।

आईपीटीबल्स सीमित है कि आप कितने आईपी पते कुशलता से अवरुद्ध कर सकते हैं। संभवतः यह कारणों में से एक है कि Fail2ban में ब्लॉक सूचियों को साझा करने के लिए कोई तंत्र नहीं है।

एक और प्रभाव यह है कि जब iptables nftables के साथ प्रतिस्थापित किया जाता है, तो Fail2ban शायद काम करना बंद कर देगा या फिर से लिखा जाना चाहिए। Denyhosts काम जारी रखने की संभावना है।

तो, दोनों फायदे और कमियां हैं। मुझे दोनों पसंद हैं; मेरे लिए, मैं डेनिहोस्ट का उपयोग कर रहा हूं क्योंकि आमतौर पर मैं केवल एसएसएच की रक्षा करना चाहता हूं, और मुझे ब्लॉक सूची साझा करना पसंद है।


4
2017-11-08 19:29





denyhosts एसएसएच के लिए है। fail2ban अधिक व्यापक (HTTP, एफ़टीपी, आदि) है। दोनों दृश्यों के पीछे iptables का उपयोग करें।


3
2018-04-03 01:13



दोनों "denyhosts" और "fail2ban" iptables का उपयोग अपने "अवरुद्ध" व्यवहार को पूरा करने के लिए करते हैं, लेकिन वे iptables का उपयोग दर-सीमा तक नहीं करते हैं। वे "उपयोगकर्ता भूमि" में लॉग का विश्लेषण करते हैं और लॉग प्रविष्टियों पर कार्य करते हैं। - Evan Anderson
@Evan, denyhosts iptables का उपयोग नहीं करता है (डिफ़ॉल्ट रूप से)। यह टीसीपी रैपर का उपयोग करता है और जब आपके सिस्टम पर प्रतिबंध लगाया जाता है तो आपके /etc/hosts.deny को अपडेट करता है। - Zoredache
@Zoredache: मैं सही खड़ा हूँ। पहले से "denyhosts" का उपयोग करने के बाद, मैंने गलत तरीके से धारणा की कि यह कैसे "अवरुद्ध" कार्यक्षमता को आमंत्रित करता है। फिर भी, उपयोगकर्तालैंड लॉग-पार्सिंग / प्रतिक्रिया उपकरण होने के नाते, मैं "denyhosts" के लिए सख्ती से iptables- आधारित समाधान का उपयोग करना पसंद करूंगा। - Evan Anderson