هر دو ابزار گزارشها را میخوانند و نشانیها را مسدود میکنند، و در نگاه نخست 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 به آن دسترسی دارید، تفاوتشان اندک است — بیشتر کار آنجا از پیش با خاموشکردن گذرواژهها انجام شده است.
محدودیتی مشترک
هیچکدام از آسیبپذیری درون برنامه محافظت نمیکند. هر دو با بسامد درخواستها و اعتبار نشانیها کار میکنند، و درخواستی که در نخستین تلاش سوراخی در یک افزونه را از نشانیای پاک به کار گیرد از کنار هر دو خواهد گذشت. این کار ابزارهای دیگر است — دیوار آتش برنامه در سطح درخواست و بهروزرسانی بههنگام. مسدودکردن نشانیها پسزمینه را برمیدارد نه علت را.
و ارزش عملی هر دو به این بستگی دارد که کسی به نتیجه بنگرد. افزایش شمار تصمیمها، سناریویی که برای نخستین بار فعال میشود، تغییر کشورهایی که تلاشها از آنجا میآیند — همین است آن اطلاعاتی که ابزار برایش نصب شده. شکل این در یک صفحه را نمایش پایین نشان میدهد.