CrowdSec på Linux i 2026: Komplet guide til installation, scenarier og bouncere
Komplet 2026-guide til CrowdSec 1.7.8 på Linux: installation på Debian, Ubuntu og Rocky, LAPI/CAPI-arkitektur, nftables- og Nginx-bouncers, AppSec-WAF med Coraza samt central multi-server-opsætning med PostgreSQL og mTLS.
CrowdSec er en open source, samarbejdsbaseret platform til indtrængningsforebyggelse (IPS), der analyserer logfiler på din Linux-server i realtid, blokerer ondsindede IP-adresser via separate "bouncers" og deler trusselssignaler med et globalt fællesskab gennem CAPI (Central API). Denne guide dækker installation af CrowdSec 1.7.8 på Debian, Ubuntu 26.04 og Rocky Linux 10, arkitekturen omkring LAPI/CAPI, konfiguration af scenarier og Hub-collections, opsætning af firewall- og Nginx-bouncers, den nye AppSec-WAF-komponent samt multi-server-deployment med PostgreSQL og mTLS.
CrowdSec 1.7.8 (maj 2026) retter CVE-2026-44982 (WAF-bypass) og CVE-2026-44981 (LAPI DoS). Opgradér straks fra ældre 1.7.x-versioner.
Arkitekturen adskiller detektion (agenten med parsers/scenarier) fra remediering (bouncers), i modsætning til fail2ban's monolitiske jail-model.
Community Blocklist deler proaktivt op til 3.000 (gratis) eller 50.000 (Premium) ondsindede IP'er via CAPI til alle enrollede installationer.
AppSec-komponenten (1.6+) fungerer som en indbygget WAF baseret på Coraza med OWASP CRS og virtual patching af HTTP-CVE'er.
cscli er det centrale værktøj til alerts, decisions, hub-management, bouncers og machines, alt sammen via LAPI.
Produktionsmiljøer bør bruge PostgreSQL-backend, mTLS mellem agenter og LAPI, samt Prometheus/Grafana i stedet for den udfasede Metabase-dashboard.
Hvad er CrowdSec, og hvordan fungerer det?
CrowdSec er en Go-baseret Security Engine, der læser dine logs (via journald, fil, syslog eller Kubernetes audit), matcher dem mod YAML-drevne parsers og scenarier, og genererer decisions (typisk bans) når et scenarie "løber over". Disse decisions distribueres via LAPI til separate remediation-komponenter kaldet bouncers, der håndhæver dem på firewall-, reverse-proxy-, applikations- eller cloud-niveau. Samtidig deler agenten (frivilligt) anonymiserede signaler op til CAPI og modtager til gengæld en løbende opdateret Community Blocklist over verdens mest aggressive IP-adresser.
Ærligt talt, det er præcis den modulære arkitektur (inspireret af moderne SIEM-tankegang, men designet til edge-servere), der adskiller CrowdSec fra klassisk fail2ban. En agent kan køre alene på én maskine eller centralt for hundredvis af noder. Bouncers findes til iptables/nftables, Nginx, Traefik, HAProxy, Cloudflare, AWS Security Groups, Kubernetes, WordPress og Windows IIS. Første gang jeg satte det op på en kunde-server, tog det under 10 minutter at gå fra "ingen beskyttelse" til aktiv community-drevet blocklist. I vores guide til Tetragon og eBPF-baseret runtime security så vi kernenær håndhævelse; CrowdSec komplementerer det ved at operere på log- og netværksniveau.
CrowdSec vs. fail2ban: Hvorfor skifte i 2026?
Fail2ban har været referencen for automatisk IP-banning i mere end 15 år, men den viser sin alder. Python-regex uden buckets, monolitisk jail-model, ingen deling af threat intelligence og inline iptables-manipulation, som bliver skrøbelig i moderne nftables- og containermiljøer. CrowdSec løser præcis disse svagheder. Nedenstående sammenligning viser de dimensioner, der oftest afgør valget.
Egenskab
CrowdSec 1.7.8
fail2ban 1.1.x
Sprog / motor
Go, RE2-regex
Python, PCRE
Detektionsmodel
Parsers + leaky/trigger/counter-buckets
Regex-jails med findtime/maxretry
Håndhævelse
Separate bouncers (nftables, Nginx, Cloudflare, K8s...)
Inline iptables/firewalld-actions
Community threat intel
Ja, Community Blocklist via CAPI
Nej
Konfigurationsformat
YAML + Hub-collections
Filter/action.d .conf-filer
WAF / AppSec
Ja, Coraza + OWASP CRS (indbygget)
Nej
Observabilitet
Prometheus-eksportør, Console (SaaS)
fail2ban-client statuskommandoer
Multi-server
Central LAPI + PostgreSQL + mTLS
Én daemon pr. host
CPU under angreb
~30 % lavere end fail2ban
Højere pga. Python-regex
Captcha / throttle
Ja (via bouncer-profil)
Kun ban
Fail2ban er stadig et fornuftigt valg til en enkelt lille server, hvor du kun vil banne SSH-brute-force. Men så snart du har flere maskiner, en reverse proxy, en applikation der skal beskyttes med en WAF, eller ønsker adgang til delt threat intelligence, er CrowdSec det åbenlyse valg i 2026.
Installation af CrowdSec 1.7.8 på Debian, Ubuntu og Rocky Linux
CrowdSec vedligeholder egne pakkedepoter via Packagecloud, og installations-scriptet på install.crowdsec.net registrerer distributionen og tilføjer den korrekte GPG-nøgle. Herefter installerer du selve engine-pakken sammen med den bouncer, der matcher din firewall. På en frisk server tager hele processen typisk under to minutter.
Debian 12 / Ubuntu 24.04 / Ubuntu 26.04:
# 1. Registrér CrowdSec-depot og GPG-nøgle
curl -s https://install.crowdsec.net | sudo sh
# 2. Installér agent + nftables-bouncer
sudo apt update
sudo apt install -y crowdsec crowdsec-firewall-bouncer-nftables
# 3. Verificér version og status
sudo systemctl status crowdsec crowdsec-firewall-bouncer
cscli version
# CrowdSec v1.7.8-...
# 4. Aktivér Community Blocklist (valgfrit men anbefalet)
sudo cscli capi register
sudo systemctl reload crowdsec
Efter installation lytter LAPI som standard på 127.0.0.1:8080 og Prometheus-endpointet på 127.0.0.1:6060. Agenten registrerer sig automatisk hos LAPI ved første opstart, og firewall-bouncer'en får en API-nøgle via post-install-scriptet i /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml.
Arkitekturen: LAPI, CAPI og bouncers forklaret
CrowdSec består af fire logisk adskilte lag, og forståelsen af hvordan de spiller sammen er nøglen til fejlfinding og til at designe større deployments. Log Processor'en (agenten) læser rå logs via acquisitions, kører dem gennem en pipeline af parsers, der udtrækker felter, og fodrer dem til scenarier, der modellerer angreb som leaky-, trigger- eller counter-buckets. Når en bucket løber over, sendes en alert til Local API.
LAPI (Local API) er hjertet i systemet. Den gemmer alerts og decisions i SQLite (default), MySQL eller PostgreSQL, anvender profiles til at oversætte alerts til decisions (typisk 4-timers bans) og eksponerer et REST-endpoint, som bouncers poller. Samtidig taler LAPI opad til CAPI (Central API på crowdsec.net) og sender anonymiserede signaler og henter Community Blocklist ned igen. Bouncers henter jævnligt den aktuelle liste af decisions og håndhæver dem lokalt (via nftables-sets, Nginx Lua-håndtering, cloud-API'er eller andet).
Denne adskillelse har store fordele. LAPI kan køre centralt for hele infrastrukturen, agenter kan skaleres per node, og du kan udskifte eller tilføje bouncers uden at røre detektionslaget. Det er også grunden til, at CrowdSec passer bedre ind i moderne segmenterede miljøer med nftables. Se vores guide til nftables i 2026 for konteksten omkring den nye firewall-stack.
Konfiguration af acquisitions og Hub-collections
Al konfiguration lever under /etc/crowdsec/. Selve datakilderne defineres i /etc/crowdsec/acquis.yaml eller i separate filer under acquis.d/. Modulopdelte filer gør det nemt at rulle ændringer ud med Ansible eller Puppet. Nedenstående eksempel konfigurerer SSH via journald, plus Nginx og Apache access-logs.
Selve intelligensen (regex til logparsing og bucket-definitioner) kommer fra Hub'en. Installér de collections, der matcher det, du beskytter:
sudo cscli hub update
sudo cscli collections install \
crowdsecurity/linux \
crowdsecurity/sshd \
crowdsecurity/nginx \
crowdsecurity/apache2 \
crowdsecurity/base-http-scenarios \
crowdsecurity/http-cve \
crowdsecurity/appsec-virtual-patching
sudo systemctl reload crowdsec
# Overblik over hvad der er installeret og aktivt
cscli hub list
cscli metrics
Vil du selv skrive et scenarie, for eksempel til at fange en aggressiv URL-scanner, der genererer mange 404'ere fra samme IP, så er syntaksen slående kort:
# /etc/crowdsec/scenarios/my-http-scan.yaml
type: leaky
name: mysite/http-scan
description: "Mange 404 fra samme IP inden for kort tid"
filter: "evt.Meta.log_type == 'http_access-log' && evt.Meta.http_status == '404'"
groupby: evt.Meta.source_ip
leakspeed: 10s # bucket taber 1 event per 10 s
capacity: 20 # kapacitet 20 = overflow ved 21. request
blackhole: 2m # ingen gentagne alerts fra samme IP i 2 min
labels:
type: scan
remediation: true
Bouncers: Blokering med nftables og Nginx
En bouncer poller LAPI hvert 10. sekund (default) og skriver de aktive decisions ind i sin egen håndhævelsesmekanisme. Firewall-bouncer'en administrerer et nftables-set kaldet crowdsec-blacklists (IPv4) og crowdsec6-blacklists (IPv6), og indsætter en drop-regel i input-chainen. Konfigurationen ligger i /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml:
Nginx-bouncer'en installeres som en Lua-modul, der aflyttes via access_by_lua_file. Ved hver request slår modulet op i en lokal cache af decisions og returnerer 403 (eller viser en captcha, hvis remediering er sat til captcha). Du styrer det med profiles:
Test hurtigt, at hele kæden virker, ved manuelt at banne en testadresse: sudo cscli decisions add -i 203.0.113.10 -t ban -d 5m. Bekræft med sudo nft list set inet crowdsec crowdsec-blacklists-ipv4, at IP'en er landet i settet. Fjern igen med sudo cscli decisions delete -i 203.0.113.10. Denne lille test har reddet mig fra flere pinlige situationer, hvor bouncer'en var startet, men ikke faktisk håndhævede noget.
AppSec: Den indbyggede WAF med Coraza
Med version 1.6 fik CrowdSec en ægte web application firewall-komponent kaldet AppSec, baseret på den Go-native Coraza-motoren. AppSec forstår både ModSecurity SecLang-regler (herunder OWASP Core Rule Set) og CrowdSec's egne YAML-rules. Den kan køre i in-band-tilstand (blokerer requesten hvis den scorer over tærsklen) eller out-of-band (kun logning). En Nginx-, HAProxy- eller Traefik-bouncer videresender hver HTTP-request til AppSec-endpointet, før den serves.
Fordelen ved AppSec fremfor en klassisk ModSecurity-opsætning er tosidig. Reglerne opdateres automatisk fra Hub'en (herunder virtual patches for nye HTTP-CVE'er inden for få timer efter offentliggørelse), og AppSec-alerts flyder ind i samme decision-pipeline som resten af CrowdSec. Så en angriber, der udløser en OWASP CRS-regel på én server, kan blokeres via CAPI hos alle andre. AppSec har i praksis afløst behovet for en separat modsecurity-nginx-container i mange 2026-deployments.
Multi-server-opsætning med central LAPI og PostgreSQL
På én maskine er default-opsætningen med SQLite tilstrækkelig. Men fra det øjeblik du har flere agenter, der skal skrive til den samme database, eller du vil have en global oversigt over alle decisions og alerts, skal du centralisere LAPI. Den anbefalede topologi er én dedikeret LAPI-node med PostgreSQL-backend, agenter på hver applikationsserver, der peger på central LAPI, og bouncers, der også henter fra central LAPI.
På LAPI-noden slår du PostgreSQL til i /etc/crowdsec/config.yaml:
mTLS erstatter password-baseret auth i produktion. Både agenter og bouncers præsenterer certifikater signeret af den samme interne CA, og LAPI validerer på OU (organizational unit). Kombineret med en Wazuh-baseret filintegritetsovervågning af selve CrowdSec-konfigurationsfilerne får du et rigt forsvar-i-dybden-setup, hvor manipulation af LAPI-serveren opdages og alarmeres uafhængigt. Se også de officielle LAPI-docs for detaljerede feltbeskrivelser og JSON-schemas.
Observabilitet med Prometheus og Grafana
CrowdSec eksponerer et fyldigt Prometheus-endpoint på http://127.0.0.1:6060/metrics, der dækker antal parsede events, hits per parser og scenarie, størrelsen på aktive buckets, decisions grupperet efter type og oprindelse samt LAPI-request-metrikker. Sæt Prometheus til at scrape endpointet (eller brug de officielle Grafana-dashboards), og du får et komplet operationelt overblik.
Den indbyggede Metabase-dashboard (cscli dashboard) er udfaset fra og med 1.7.0 og fjernes helt i 1.8. Migrér til enten Prometheus + Grafana (self-hosted) eller CrowdSec Console på app.crowdsec.net. Den sidste giver desuden gratis access til top-3.000 Community Blocklist, mens Premium-planen udvider til 50.000 IP'er og 3 branche-specifikke blocklists. Enrolment tager to kommandoer: opret en token i Console, og kør sudo cscli console enroll <token>.
Hukommelsesforbruget ligger typisk på 60–150 MB for en agent med et par tusind aktive buckets. Under angreb kan CPU stige betydeligt, hvis dine scenarier er dårligt målrettet. Brug cscli metrics til at finde de scenarier, der producerer flest buckets, og overvej at hæve leakspeed eller stramme filter. Log-rotation håndteres af /etc/logrotate.d/crowdsec.
Ofte stillede spørgsmål
Er CrowdSec bedre end fail2ban?
På alle moderne kriterier (ydelse, arkitektur, håndhævelseskanaler, community threat intelligence og WAF-integration) er CrowdSec markant bedre. Fail2ban er stadig egnet til ekstremt simple én-server-scenarier, hvor du kun skal banne SSH-brute-force uden central logning. Alt andet peger på CrowdSec i 2026.
Er CrowdSec gratis?
Selve Security Engine, alle bouncers, Hub-collections og AppSec-motoren er gratis og open source (MIT-licens). Gratis Console-planen giver top-3.000 IP Community Blocklist. Premium (fra ca. 900 USD/måned) tilføjer 50.000 IP-blocklist, længere retention og branche-specifikke feeds, men det er ikke nødvendigt for at komme i gang.
Hvordan blokerer CrowdSec IP-adresser uden fail2ban?
CrowdSec-agenten opdager selv angrebet, men den håndhæver ikke selv. Håndhævelsen sker af en separat "bouncer", for eksempel crowdsec-firewall-bouncer-nftables, der administrerer et dedikeret nftables-set med alle aktive bans. Bouncers findes til Nginx, Traefik, HAProxy, Cloudflare, AWS Security Groups, Kubernetes og flere.
Hvad er forskellen mellem LAPI og CAPI?
LAPI (Local API) er den lokale REST-service på port 8080, hvor agenter skriver alerts/decisions og bouncers henter dem. Den lever på din egen infrastruktur. CAPI (Central API) er CrowdSec's fælles bagvedliggende service på crowdsec.net, som LAPI valgfrit taler med for at dele signaler og hente Community Blocklist ned.
Kan CrowdSec beskytte Nginx og erstatte en WAF?
Ja. Nginx-bouncer'en blokerer IP-adresser på request-niveau, og AppSec-komponenten (1.6+) fungerer som en fuld WAF med OWASP CRS-support og virtual patching af HTTP-CVE'er. For mange 2026-deployments har den kombination erstattet en separat ModSecurity- eller NAXSI-opsætning.
Hvordan opgraderer jeg sikkert til CrowdSec 1.7.8?
På Debian/Ubuntu: sudo apt update && sudo apt install --only-upgrade crowdsec crowdsec-firewall-bouncer-nftables. Verificér bagefter med cscli version, at både engine og bouncer er på 1.7.8-linjen, og kør sudo cscli hub upgrade for at hente opdaterede parsers, scenarier og AppSec-rules. Genstart derefter crowdsec- og bouncer-servicerne.
Praktisk guide til Tetragon på Linux: installation uden Kubernetes, TracingPolicy-skrivning, syscall-blokering med Override/Sigkill og ydelsesmålinger fra produktion.
Komplet dansk guide til opsætning af Wazuh på Linux i 2026. Dækker installation af Manager og Agent på Ubuntu 24.04 og RHEL 9, filovervågning med eBPF og whodata, loganalyse, aktiv respons og sammenligning med OSSEC og AIDE.