দুটি সরঞ্জামই লগ পড়ে আর ঠিকানা আটকায়, আর প্রথম দেখায় CrowdSec-কে নতুন কোডের Fail2ban মনে হয়। এদের পার্থক্য এর চেয়ে অনেক বেশি মৌলিক, আর সেটি কোডের বয়সে নয়, বরং আটকানোর সিদ্ধান্ত কোথা থেকে আসে তাতে।

এরা কীভাবে গড়া

Fail2ban একটি একক প্রক্রিয়া যা লগ পড়ে, নিয়মিত অভিব্যক্তির মিল গোনে আর ফায়ারওয়ালের কমান্ড ডাকে। প্রতিটি সিদ্ধান্ত আপনার যন্ত্রে আপনারই গণনা থেকে হয়। কোথাও কিছু পাঠানো হয় না, কোনো নির্ভরতা নেই, আর সেটিংস পাঠ্য ফাইল।

CrowdSec দুই ভাগে বিভক্ত, আর বসানোর আগে বোঝার মূল বিষয় এটিই। খোদ এজেন্ট কেবল শনাক্ত করে: লগ বিশ্লেষণ করে, দৃশ্যপট প্রয়োগ করে আর সিদ্ধান্ত নিজের ডেটাবেসে লেখে। সিদ্ধান্ত কার্যকর করে আলাদা একটা প্রোগ্রাম, bouncer। আর bouncer না বসিয়ে CrowdSec চলে, alert দেখায়, সিদ্ধান্তের তালিকা রাখে — আর কিছুই আটকায় না।

প্রথম পরিচয়ে এটাই সবচেয়ে প্রচলিত হতাশা: সরঞ্জাম বসানো, আক্রমণ দেখা যাচ্ছে, আর ট্রাফিক ঠিক আগের মতোই বইছে।

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 আর সময়মতো হালনাগাদ। ঠিকানা আটকানো পটভূমি সরায়, কারণ নয়।

আর দুজনেরই ব্যবহারিক মূল্য নির্ভর করে ফলাফল কেউ দেখে কি না তার উপর। সিদ্ধান্তের বাড়তে থাকা সংখ্যা, প্রথমবার চলা দৃশ্যপট, যেসব দেশ থেকে চেষ্টা আসে তার বদল — এটাই সেই তথ্য যার জন্য সরঞ্জামটি বসানো হয়েছিল। এক পাতায় এটি কেমন দেখায় তা নিচের ডেমো দেখায়।