Båda verktygen läser loggar och blockerar adresser, så vid första anblicken är CrowdSec ett Fail2ban med nyare kod. Skillnaden är väsentligare än så och ligger inte i kodens ålder utan i varifrån beslutet om blockering kommer.
Uppbyggnaden
Fail2ban är en enda process som läser loggar, räknar träffar mot reguljära uttryck och anropar brandväggens kommando. Varje beslut fattas på vår maskin utifrån våra räknare. Ingenting skickas någonstans, det finns inga beroenden, och konfigurationen är textfiler.
CrowdSec är uppdelat i två delar, och det är det viktigaste att förstå före installationen. Själva agenten enbart upptäcker: den analyserar loggar, tillämpar scenarier och skriver beslut till sin egen databas. Besluten verkställs av ett separat program — en bouncer. Utan installerad bouncer fungerar CrowdSec, visar larm, för en beslutslista — och blockerar ingenting.
Det är den vanligaste besvikelsen vid första mötet: verktyget installerat, angreppen syns, och trafiken flyter precis som förut.
sudo apt install crowdsec
sudo apt install crowdsec-firewall-bouncer-iptables
sudo cscli bouncers list
Det sista kommandot ska visa minst en registrerad post. En tom lista betyder att ingen blockering sker.
Den andra skillnaden: delat anseende
Fail2ban vet bara det som hänt hos oss. En adress som i går angrep hundra andra servrar är för den ren tills den knackar på vår dörr — och de fem första försöken är gratis.
CrowdSec skickar signaler om sina upptäckter till ett delat nätverk och får därifrån en lista över adresser som setts hos andra. Den praktiska effekten: en märkbar del av försöken kapas före det första. Det spelar särskilt roll vid distribuerade angrepp — tusentals adresser med ett försök var, där lokala räknare per definition är maktlösa.
Och en sak att veta i förväg: utbytet går åt båda hållen. Från vår server lämnar angriparnas adresser och vilken typ av scenario som utlöstes. Helt lokal drift är möjlig — utan registrering i molnkonsolen — men då är den delade listan inte heller tillgänglig för oss, och den huvudsakliga fördelen försvinner. Det är ett medvetet val och ingen konfigurationsdetalj.
Kommandon för vardagen
sudo cscli metrics
sudo cscli alerts list
sudo cscli decisions list
sudo cscli decisions delete --ip 203.0.113.25
metrics svarar på frågan om loggarna alls läses: är antalet analyserade rader noll är samlingen för vår webbserver inte installerad eller sökvägen till loggen fel. Det är det näst vanligaste fallet av ”det står och gör ingenting”.
sudo cscli collections list
sudo cscli collections install crowdsecurity/nginx
Resurser
CrowdSec är skrivet i Go och håller sitt tillstånd i en databas. Minnesåtgången ligger i storleksordningen hundra megabyte plus bouncern. På en server med en gigabyte märks det, från två och uppåt inte längre. Fail2ban är lättare, men gör också mindre.
Behöver du båda
De krockar inte: den ena skriver sina regler i brandväggen, den andra sina, och en dubbel blockering av samma adress skadar ingen. En rimlig arbetsfördelning ser ut så här.
CrowdSec tar massfallen: lösenordsgissning mot SSH, skanning av webbservern, kända dåliga adresser från den delade listan. Fail2ban blir kvar där vi har en egen logg i eget format, där det är lättare att skriva ett reguljärt uttryck än ett scenario — en egenskriven applikation, en ovanlig tjänst, ett annorlunda inloggningsformulär.
Måste du välja ett, är riktmärket detta: på en server med en sajt som ständigt genomlyses ger CrowdSec mer tack vare den delade listan. På en server som bara du når över SSH med nycklar är skillnaden liten — där gjorde avstängningen av lösenord redan det mesta av arbetet.
Den gemensamma begränsningen
Ingen av dem skyddar mot en sårbarhet i applikationen. Båda arbetar på förfrågningsfrekvens och adressens anseende, och en förfrågan som utnyttjar ett hål i ett tillägg första gången och från en ren adress går förbi dem båda. Det är andra verktygs uppgift — en WAF på förfrågningsnivå och uppdateringar i tid. Adressblockering tar bort bakgrunden, inte orsaken.
Det praktiska värdet hos båda beror på om någon tittar på resultatet. Ett växande antal beslut, ett scenario som utlöstes för första gången, en förändring i vilka länder försöken kommer ifrån — det är just de uppgifter verktyget sattes upp för. Hur de ser ut på en sida visar demonstrationen nedan.