Oba alata čitaju dnevnike i blokiraju adrese, i na prvi pogled je CrowdSec Fail2ban sa novijim kodom. Razlika među njima suštinskija je od toga, i leži ne u starosti koda nego u tome odakle dolazi odluka o blokiranju.

Kako su građeni

Fail2ban je jedan proces koji čita dnevnike, broji poklapanja regularnih izraza i poziva komandu zaštitnog zida. Svaka odluka donosi se na vašoj mašini iz vaših brojača. Ništa se nikuda ne šalje, nema zavisnosti, a konfiguracija su tekstualni fajlovi.

CrowdSec je podeljen na dva dela, i to je glavno što treba razumeti pre instalacije. Sam agent samo otkriva: razlaže dnevnike, primenjuje scenarije i upisuje odluke u sopstvenu bazu. Odluke sprovodi zaseban program, bouncer. Bez instaliranog bouncer-a CrowdSec radi, prikazuje upozorenja, vodi listu odluka — i ne blokira ništa.

To je najčešće razočaranje pri prvom susretu: alat je instaliran, napadi se vide, a saobraćaj teče tačno kao i pre.

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

Ta poslednja komanda mora prikazati bar jedan registrovan unos. Prazna lista znači da blokiranja nema.

Druga razlika: zajednička reputacija

Fail2ban zna samo šta se dogodilo kod vas. Adresa koja je jučerašnji dan provela provaljujući u stotinu drugih servera za njega je čista dok ne pokuca na vaša vrata — a njenih prvih pet pokušaja je besplatno.

CrowdSec šalje signale o onome što se aktiviralo u zajedničku mrežu i dobija nazad listu adresa viđenih na tuđim serverima. Praktičan efekat: primetan deo pogađanja preseca se pre prvog pokušaja. To je posebno bitno protiv distribuiranih napada — hiljade adresa sa po jednim pokušajem, gde su lokalni brojači po definiciji nemoćni.

A evo šta treba znati unapred: razmena ide u oba smera. Sa vašeg servera odlaze adrese prekršilaca i tipovi scenarija koji su se aktivirali. Potpuno lokalni rad je moguć — bez upisa u konzolu u oblaku — ali tada ni vama zajednička lista nije dostupna, i glavna prednost nestaje. To je svestan izbor, a ne detalj konfiguracije.

Svakodnevne komande

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

metrics odgovara na pitanje da li se dnevnici uopšte čitaju: ako je broj razloženih redova nula, onda kolekcija za vaš veb server nije instalirana ili je putanja dnevnika pogrešna. To je drugi najčešći slučaj priče „instalirano je i ne radi".

sudo cscli collections list
sudo cscli collections install crowdsecurity/nginx

Resursi

CrowdSec je napisan u Go-u i drži svoje stanje u bazi podataka. Potrošnja memorije je reda stotinu megabajta, plus bouncer. Na serveru sa gigabajtom memorije to je primetno; od dva naviše nije. Fail2ban je lakši, i radi manje.

Da li vredi držati oba

Ne sukobljavaju se: jedan upisuje svoja pravila u zaštitni zid, drugi svoja, a blokirati istu adresu dvaput ne škodi nikome. Razumna podela izgleda ovako.

CrowdSec preuzima masovni saobraćaj: pogađanje SSH-a, skeniranje veb servera, poznate loše adrese sa zajedničke liste. Fail2ban ostaje tamo gde imate sopstveni dnevnik u sopstvenom formatu, za koji je lakše napisati regularni izraz nego scenario — aplikacija sopstvene izrade, redak servis, određena forma za prijavu.

Ako morate da birate jedno, smernica je ova: na serveru sa sajtom koji se stalno pipa, CrowdSec daje više zahvaljujući zajedničkoj listi. Na serveru dostupnom samo vama preko SSH-a sa ključevima, razlika među njima je mala — najveći deo posla je tamo već obavljen isključivanjem lozinki.

Zajedničko ograničenje

Nijedan ne štiti od ranjivosti u aplikaciji. Oba rade sa učestalošću zahteva i reputacijom adresa, a zahtev koji iz prve iskoristi rupu u dodatku sa čiste adrese proći će pored oba. To je posao drugih alata — WAF-a na nivou zahteva i blagovremenih ažuriranja. Blokiranje adresa uklanja pozadinu, a ne uzrok.

Praktična vrednost i jednog i drugog zavisi od toga da li neko gleda rezultat. Rastući broj odluka, scenario koji se aktivira prvi put, promena zemalja odakle stižu pokušaji — to je informacija zbog koje je alat i instaliran. Kako izgleda na jednoj stranici pokazuje demo ispod.