CrowdSec — nowoczesna ochrona serwera z community blocklist
Opublikowano: 10 kwietnia 2026 · Kategoria: Bezpieczeństwo
CrowdSec to nowoczesny system ochrony serwera, który łączy lokalną analizę logów z globalną community intelligence. Każdy serwer z CrowdSec automatycznie dzieli się informacjami o atakach — i w zamian dostaje blocklist z IP zgłoszonymi przez tysiące innych serwerów. W przeciwieństwie do Fail2ban, CrowdSec jest modularne: agent analizuje logi, a oddzielny bouncer (nftables, Nginx, HAProxy) odpowiada za blokowanie. Ten artykuł pokazuje instalację na Ubuntu, konfigurację parserów dla typowego stosu webowego i uruchomienie bouncera nftables.
Instalacja CrowdSec na Ubuntu
# Oficjalny skrypt instalacyjny CrowdSec curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash sudo apt install crowdsec -y # Sprawdz status agenta sudo systemctl status crowdsec # Sprawdz zainstalowane kolekcje (domyslnie wykryte automatycznie) sudo cscli collections list # Sprawdz parsery aktywne na tym serwerze sudo cscli parsers list # Sprawdz scenariusze (zachowania = ataki) sudo cscli scenarios list # Status hub sudo cscli hub update sudo cscli hub list
Kolekcje: Nginx, SSH i WordPress
CrowdSec Hub zawiera gotowe kolekcje dla najpopularniejszych usług. Kolekcja zawiera parser logów, scenariusze detekcji ataków i whitelisty. Instalacja kolekcji automatycznie konfiguruje monitorowanie odpowiednich plików logów:
# Kolekcja Nginx (access.log + error.log) sudo cscli collections install crowdsecurity/nginx # Kolekcja SSH (auth.log - brute-force) sudo cscli collections install crowdsecurity/sshd # Kolekcja WordPress (xmlrpc, login brute-force) sudo cscli collections install crowdsecurity/wordpress # Kolekcja Linux (systemd, kernel) sudo cscli collections install crowdsecurity/linux # Kolekcja MySQL (auth.log MySQL) sudo cscli collections install crowdsecurity/mysql # Po instalacji kolekcji - przeladuj CrowdSec sudo systemctl reload crowdsec # Sprawdz czy CrowdSec widzi logi Nginx sudo cscli metrics | grep nginx # Skonfiguruj lokalizacje logow jesli niestandardowe # /etc/crowdsec/acquis.yaml - dodaj zrodla logow: # --- # filenames: # - /var/log/nginx/access.log # - /var/log/nginx/error.log # labels: # type: nginx
Bouncer nftables — blokowanie na poziomie jądra
Bouncer firewall to najefektywniejszy sposób blokowania — atakujące IP są odcinane na poziomie jądra zanim pakiet dotrze do Nginx czy aplikacji. Bouncer nftables/iptables jest rekomendowany dla większości VPS:
# Zainstaluj bouncer firewall sudo apt install crowdsec-firewall-bouncer-nftables -y # Konfiguracja bouncera sudo nano /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml # Kluczowe opcje: # mode: nftables # lub iptables # api_url: http://localhost:8080 # api_key: KLUCZ # generowany automatycznie przy instalacji # Sprawdz klucz API bouncera sudo cscli bouncers list # Uruchom bouncer sudo systemctl enable --now crowdsec-firewall-bouncer # Sprawdz czy bouncer jest polaczony z agentem sudo cscli bouncers list # STATUS: aktywny - bouncer komunikuje sie z agentem # Przetestuj: dodaj testowe IP do ban sudo cscli decisions add --ip 192.0.2.1 --duration 1h --reason "test" # Sprawdz czy IP jest zablokowane w nftables sudo nft list set inet crowdsec crowdsec-blacklists # Usun test sudo cscli decisions delete --ip 192.0.2.1
Community Blocklist — pasywna ochrona przed tysiącami IP
CrowdSec automatycznie pobiera community blocklist — listę IP zgłoszonych przez innych użytkowników na całym świecie. To pasywna ochrona: bez żadnych ataków na Twój serwer dostajesz ochronę przed IP już zidentyfikowanymi jako szkodliwe. Wymagana jest rejestracja na console.crowdsec.net:
# Zarejestruj serwer w CrowdSec Console # 1. Idz na https://console.crowdsec.net i zaloz konto # 2. Wygeneruj enrollment key w konsoli # 3. Na serwerze: sudo cscli console enroll cl-XXXXXXXXXXXXXXXXXXXXXXXXXX # Zatwierdz w konsoli online (kliknij "Accept") # Sprawdz polaczenie sudo cscli console status # Community blocklist jest pobierana automatycznie # Sprawdz ilosc zabanowanych IP z community sudo cscli decisions list | grep crowdsec_community # Statystyki - ile IP zablokowales i ile dostal od community sudo cscli metrics | grep "community" # Wylacz (opcjonalnie) dzielenie sie danymi - tracisz dostep do blocklist # sudo cscli console disable --all
Monitorowanie i zarządzanie decyzjami
# Aktywne decyzje (zbanowane IP) sudo cscli decisions list # Historia alertow (co wykryl CrowdSec) sudo cscli alerts list # Top 10 atakujacych krajow sudo cscli alerts list -o json | jq -r '.[].source.cn' | \ sort | uniq -c | sort -rn | head -10 # Statystyki parserów i scenariuszy sudo cscli metrics # Reczne dodanie IP do whitelisty (trwale) sudo cscli decisions add --ip 203.0.113.5 --scope ip \ --type bypass --reason "admin IP" # Lub dodaj do lokalnej whitelisty (plik) # /etc/crowdsec/parsers/s02-enrich/whitelists.yaml # whitelist: # reason: "admin whitelist" # ip: # - "203.0.113.5" # Odbanuj IP sudo cscli decisions delete --ip 192.0.2.1 # Upgrade CrowdSec i kolekcji sudo apt upgrade crowdsec crowdsec-firewall-bouncer-nftables sudo cscli hub update sudo cscli hub upgrade
CrowdSec vs Fail2ban — porównanie
| Cecha | CrowdSec | Fail2ban |
|---|---|---|
| Community intelligence | Tak — globalna blocklist | Nie — tylko lokalne logi |
| Architektura | Agent + bouncer (oddzielone) | Monolityczna (jail + action) |
| Bouncery | nftables, nginx, haproxy, traefik | iptables, sendmail (akcje) |
| Parsery logów | Hub — setki gotowych kolekcji | Filtry regex — ręczna konfiguracja |
| Zarządzanie | cscli CLI + Console webowa | fail2ban-client CLI |
| Zasoby RAM | ~60-100 MB | ~20-40 MB |
| Próg wejścia | Wyższy (więcej konceptów) | Niższy (prostsza konfiguracja) |
| Rekomendacja | Nowe wdrożenia, community protection | Proste VPS, znajoma technologia |