दोनों औज़ार लॉग पढ़ते हैं और पते रोकते हैं, और पहली नज़र में CrowdSec नए कोड वाला Fail2ban लगता है। इनका फ़र्क़ इससे कहीं ज़्यादा बुनियादी है, और वह कोड की उम्र में नहीं, बल्कि इसमें है कि रोकने का निर्णय कहाँ से आता है।

ये कैसे बने हैं

Fail2ban एक अकेली प्रक्रिया है जो लॉग पढ़ती है, नियमित अभिव्यक्तियों के मेल गिनती है और फ़ायरवॉल की कमांड चलाती है। हर निर्णय आपकी मशीन पर आपकी ही गिनतियों से होता है। कहीं कुछ नहीं भेजा जाता, कोई निर्भरता नहीं, और सेटिंग्स पाठ फ़ाइलें हैं।

CrowdSec दो हिस्सों में बँटा है, और लगाने से पहले समझने की मुख्य बात यही है। ख़ुद एजेंट सिर्फ़ पहचानता है: लॉग का विश्लेषण करता है, परिदृश्य लागू करता है और निर्णय अपने डेटाबेस में लिखता है। निर्णय लागू एक अलग प्रोग्राम करता है, bouncer। और bouncer लगाए बिना CrowdSec चलता है, अलर्ट दिखाता है, निर्णयों की सूची रखता है — और कुछ नहीं रोकता।

पहली मुलाक़ात में यही सबसे आम निराशा है: औज़ार लगा है, हमले दिख रहे हैं, और ट्रैफ़िक बिल्कुल पहले जैसा बह रहा है।

sudo apt install crowdsec
sudo apt install crowdsec-firewall-bouncer-iptables
sudo cscli bouncers list

यह आख़िरी कमांड कम से कम एक पंजीकृत प्रविष्टि दिखानी चाहिए। ख़ाली सूची का मतलब है कि कोई अवरोधन नहीं।

दूसरा फ़र्क़: साझा प्रतिष्ठा

Fail2ban सिर्फ़ यह जानता है कि आपके यहाँ क्या हुआ। जिस पते ने कल सौ दूसरे सर्वर तोड़ने में बिताया, वह उसके लिए तब तक साफ़ है जब तक आपका दरवाज़ा न खटखटाए — और उसकी पहली पाँच कोशिशें मुफ़्त हैं।

CrowdSec जो चला उसके संकेत एक साझा नेटवर्क को भेजता है और बदले में उन पतों की सूची पाता है जो दूसरों के सर्वरों पर देखे गए। व्यावहारिक असर: अनुमान लगाने का ध्यान देने योग्य हिस्सा पहली कोशिश से पहले ही कट जाता है। और यह ख़ासकर वितरित हमलों के सामने मायने रखता है — हज़ारों पते, हर एक की एक कोशिश, जहाँ स्थानीय गिनतियाँ परिभाषा से ही बेबस हैं।

और यह पहले से जान लेना चाहिए: आदान-प्रदान दोनों तरफ़ होता है। आपके सर्वर से उल्लंघन करने वाले पते और चले परिदृश्यों के प्रकार बाहर जाते हैं। पूरी तरह स्थानीय काम संभव है — क्लाउड कंसोल में पंजीकरण किए बिना — पर तब साझा सूची भी आपके लिए उपलब्ध नहीं रहती, और मुख्य फ़ायदा ग़ायब हो जाता है। यह एक सोचा-समझा चुनाव है, सेटिंग्स की तफ़सील नहीं।

रोज़मर्रा की कमांडें

sudo cscli metrics
sudo cscli alerts list
sudo cscli decisions list
sudo cscli decisions delete --ip 203.0.113.25

metrics इस सवाल का जवाब देता है कि लॉग पढ़े भी जा रहे हैं या नहीं: अगर विश्लेषित पंक्तियों की संख्या शून्य हो, तो आपके वेब सर्वर के लिए संग्रह लगा नहीं है या लॉग का रास्ता ग़लत है। यह «लगा है और काम नहीं करता» का दूसरा सबसे आम मामला है।

sudo cscli collections list
sudo cscli collections install crowdsecurity/nginx

संसाधन

CrowdSec Go में लिखा गया है और अपनी स्थिति डेटाबेस में रखता है। मेमोरी का उपयोग सौ मेगाबाइट के आसपास है, साथ में bouncer। एक गीगाबाइट मेमोरी वाले सर्वर पर यह महसूस होता है; दो से ऊपर नहीं। Fail2ban हल्का है, और कम करता है।

क्या दोनों रखने चाहिए

इनमें टकराव नहीं: एक अपने नियम फ़ायरवॉल में लिखता है और दूसरा अपने, और एक ही पते को दो बार रोकने से किसी का नुक़सान नहीं। समझदार बँटवारा यूँ है।

CrowdSec बड़े पैमाने का ट्रैफ़िक सँभालता है: SSH का अनुमान, वेब सर्वर की स्कैनिंग, और साझा सूची के ज्ञात बुरे पते। और Fail2ban वहाँ रहता है जहाँ आपका अपना लॉग अपने ही रूप में हो, जिसके लिए परिदृश्य लिखने से नियमित अभिव्यक्ति लिखना आसान हो — अपना बनाया एप्लिकेशन, कोई दुर्लभ सेवा, कोई ख़ास लॉगिन फ़ॉर्म।

और अगर एक ही चुनना हो, तो कसौटी यह है: ऐसी साइट वाले सर्वर पर जिसे लगातार टटोला जाता हो, CrowdSec साझा सूची की बदौलत ज़्यादा देता है। पर ऐसे सर्वर पर जहाँ सिर्फ़ आप कुंजियों के साथ SSH से पहुँचते हैं, इनका फ़र्क़ छोटा है — वहाँ ज़्यादातर काम पासवर्ड बंद करके पहले ही हो चुका।

एक साझा सीमा

इनमें से कोई भी एप्लिकेशन की ख़ामी से नहीं बचाता। दोनों अनुरोधों की आवृत्ति और पतों की प्रतिष्ठा पर काम करते हैं, और साफ़ पते से पहली ही कोशिश में किसी प्लगइन का छेद इस्तेमाल करता अनुरोध दोनों के बगल से निकल जाएगा। यह दूसरे औज़ारों का काम है — अनुरोध के स्तर पर WAF और समय पर अपडेट। पते रोकना पृष्ठभूमि हटाता है, कारण नहीं।

और दोनों की व्यावहारिक क़ीमत इस पर निर्भर है कि नतीजा कोई देखे। निर्णयों की बढ़ती संख्या, पहली बार चलता परिदृश्य, उन देशों का बदलना जहाँ से कोशिशें आती हैं — यही वह जानकारी है जिसके लिए औज़ार लगाया गया था। एक पन्ने पर यह कैसा लगता है, नीचे डेमो दिखाता है।