Passa al contenuto principale

CrowdSec

CrowdSec è uno strumento di rilevamento di attività dannose. Cerca pattern conosciuti, come tentativi di accesso malevoli, nei log delle applicazioni e blocca l'indirizzo IP dell'attaccante.

Puoi installare una sola istanza di CrowdSec per ogni nodo.

Protezioni predefinite​

Una volta installato, CrowdSec è già completamente funzionante e inizia a proteggere automaticamente le applicazioni NS8, prima di qualsiasi configurazione manuale:

  • Applicazioni web (sempre attive): ogni applicazione servita tramite il reverse proxy della piattaforma riceve una protezione HTTP generica indipendentemente dall'applicazione — inclusi gli endpoint HTTP di NethVoice — rilevamento di tentativi di accesso forzato (ad esempio, 5 risposte 401/403 a richieste POST in 10 secondi bloccano l'IP), rilevamento di scansioni/probing, user-agent malevoli, probing di file sensibili (.env, .git, ...), traversal di percorsi, SQL injection, probing XSS, abuso di proxy aperti, probing di interfacce amministrative e probing di exploit di CVE noti (decine di CVE di prodotti, ad esempio Log4j2, Spring4Shell, VMware vCenter, Fortinet, Pulse Secure).
  • Applicazioni specifiche: Nextcloud e WordPress ricevono scenari aggiuntivi consapevoli dell'applicazione (tentativi di accesso forzato, enumerazione utenti, scansione di wp-config) oltre a quelli generici sopra indicati.
  • SSH: tentativi di accesso forzato (inclusi varianti lente/basate sul tempo) e controllo della CVE-2024-6387 (regreSSHion).
  • Mail: rilevamento di abuso/tentativi di accesso forzato per Postfix (abuso di relay, spam, HELO/comandi non validi) e Dovecot (spam).
  • Database: rilevamento di tentativi di accesso forzato per MariaDB e PostgreSQL.
  • FTP: rilevamento di tentativi di accesso forzato e enumerazione utenti per ProFTPD e vsftpd.
  • NethVoice: forza bruta HTTP contro l'API middleware, l'API dei report e il login amministrativo, oltre alla scansione dei percorsi di exploit; forza bruta SIP contro Kamailio. Abilitato di default su una nuova installazione di NethVoice insieme a CrowdSec; in caso di aggiornamento, rimane disabilitato fino a quando non lo abiliti dalla pagina Collections (vedi sotto).
  • WebTop: forza bruta contro la pagina di login di WebTop. La collection nethesis/webtop blocca il vero IP del client dopo ripetuti login falliti. È abilitata di default e puoi disabilitarla dalla pagina Collections.
  • Whitelist di attori legittimi: crawler/bot legittimi noti sono automaticamente esclusi dai blocchi.

Interfaccia web​

Il menu laterale del modulo offre accesso alle seguenti pagine: Status, Activity, Threat Shield IP, Collections, Settings e About.

Status​

Mostra una panoramica dell'applicazione (azione di riavvio), il nodo di installazione, lo stato del backup e un link ai log.

Attività​

I rilevamenti sono attività sospette individuate da CrowdSec, come ripetuti fallimenti di login o schemi di attacco noti. Un rilevamento non comporta sempre il blocco di un IP.

La barra sopra la tabella contiene Unban all, Delete all detections e Refresh, che ricarica l'elenco.

La tabella elenca Detected at, Scenario, Source IP, Country, Action (Banned finché il blocco è attivo, Ban expired quando è scaduto, oppure - quando non è stato applicato alcun blocco) e il conteggio degli Events. Usa il campo Filter detections per filtrare per IP o scenario, il selettore Action (All, No action, Banned o Ban expired) per mostrare solo i rilevamenti con quell'azione e il selettore Events to show per limitare il numero di eventi recenti caricati. Se nessun rilevamento corrisponde ai filtri, fai clic su Reset filters per azzerarli.

Per aprire il log completo degli eventi di un rilevamento, seleziona Show details dal menu della sua riga. Le righe bloccate hanno anche un link Unban e la finestra dei dettagli di un rilevamento bloccato ha un pulsante Unban. Unban all sblocca tutti gli indirizzi bloccati dai rilevamenti di CrowdSec. Un indirizzo sbloccato può essere bloccato di nuovo se CrowdSec rileva nuove attività sospette.

Unban e Unban all rimuovono solo i blocchi temporanei. Gli indirizzi della Local blocklist e delle liste di blocco di Threat Shield IP restano bloccati.

Delete all detections elimina definitivamente dal database tutti i rilevamenti e i blocchi che hanno creato. Gli indirizzi bloccati restano nel firewall fino alla scadenza del blocco. I blocchi di Threat Shield IP, della lista di blocco della community e della Local blocklist vengono riapplicati automaticamente; gli altri blocchi aggiunti a mano, per esempio con cscli, vengono persi.

Threat Shield IP​

Questa pagina gestisce le liste di indirizzi IP sempre bloccati o mai bloccati. È organizzata in cinque schede: Blocklist feeds, Allowlist feeds, Local blocklist, Local allowlist e CrowdSec community blocklist.

Gli attaccanti di solito colpiscono molti server contemporaneamente. I sistemi NethServer e NethSecurity con una subscription condividono gli attaccanti che bloccano, così ogni sistema può bloccarli prima che attacchino.

Funziona così:

  • Quando CrowdSec blocca un indirizzo IP, il server invia quell'indirizzo a Nethesis.
  • Quando abbastanza sistemi segnalano lo stesso indirizzo, Nethesis lo aggiunge alla lista di blocco Nethesis collective defense - Level 2.
  • I server con l'add-on Threat Shield possono abilitare questa lista di blocco e altre liste di blocco gestite da Nethesis. CrowdSec scarica le liste di blocco abilitate ogni 30 minuti e blocca i loro indirizzi IP nel firewall.

I server con una subscription applicano anche la Nethesis global allowlist. Gli indirizzi in questa lista, come i server delle subscription Nethesis, non vengono mai bloccati.

Il comportamento dipende dalla subscription:

ServerInvia gli indirizzi bloccatiNethesis global allowlistListe di blocco Enterprise
Senza subscriptionNoNoNon disponibili
Con subscriptionSìSìNon disponibili
Con subscription e add-on Threat ShieldSìSìDisponibili, disabilitate di default

L'add-on Threat Shield è disponibile sia per la subscription Community sia per quella Enterprise. Le liste personalizzate, la Local blocklist e la Local allowlist funzionano anche senza subscription.

Non serve alcuna configurazione. L'invio parte quando il server ha una subscription e si ferma quando la subscription viene rimossa. Se il server perde la subscription o l'add-on, gli indirizzi importati dalle liste di blocco Enterprise vengono rimossi.

Liste di blocco​

Threat Shield IP blocca gli indirizzi IP delle liste di blocco abilitate. La tabella elenca Name, Type, Description, Status, Confidence, Entries, Banned e Last update. Banned conta i pacchetti di rete provenienti dagli indirizzi della lista e bloccati dal firewall nelle ultime 24 ore. Un indirizzo presente in più liste viene conteggiato per quella con la confidenza più alta.

La colonna Type distingue i due tipi di lista:

  • Enterprise: liste di blocco gestite da Nethesis e Yoroi. Richiedono una subscription con l'add-on Threat Shield. Senza l'add-on, il loro interruttore Status è spento e i loro conteggi mostrano -; le liste selezionate vengono mantenute.
  • Custom: liste di blocco scaricate da un URL a tua scelta, vedi Liste personalizzate.

Attiva l'interruttore Status delle liste da abilitare e fai clic su Save. L'importazione parte subito dopo il salvataggio. Tutte le liste vengono aggiornate ogni 30 minuti. Disabilitare una lista rimuove i suoi indirizzi dal firewall. Se una lista non può essere aggiornata, un errore sopra la tabella la indica.

Lista di bloccoConfidenza
Yoroi malware - Level 110
Yoroi malware - Level 28
Yoroi suspicious - Level 110
Yoroi suspicious - Level 28
Nethesis suspicious - Level 36
Nethesis collective defense - Level 28

La confidenza va da 1 a 10. Un valore più alto indica un rischio minore di bloccare un indirizzo legittimo. Con una subscription Community la confidenza non viene mostrata. Le liste personalizzate mostrano Unknown.

Per verificare se un indirizzo è bloccato da una lista di blocco abilitata, inseriscilo in Search IP in blocklists e fai clic su Search. In caso affermativo, il risultato indica le liste di blocco che lo contengono. La ricerca accetta un singolo indirizzo IPv4 o IPv6, non una rete, e funziona anche senza subscription, quindi si possono cercare anche le liste personalizzate.

Liste di permessi​

Threat Shield IP non blocca mai gli indirizzi IP e le reti delle liste di permessi abilitate. La tabella elenca Name, Description e Status.

La Nethesis global allowlist contiene gli indirizzi IP dei servizi Nethesis. È abilitata automaticamente con una subscription e non può essere disabilitata, modificata o eliminata. Con una subscription, le liste di blocco vengono importate solo dopo che questa lista di permessi è stata scaricata.

Aggiungi le tue liste di permessi con Create custom feed, vedi Liste personalizzate. Attiva l'interruttore Status delle liste da abilitare e fai clic su Save. Tutte le liste di permessi vengono aggiornate ogni 30 minuti. Se una lista non può essere aggiornata, un errore sopra la tabella la indica.

Liste personalizzate​

Le liste personalizzate sono liste di blocco o di permessi scaricate da un URL. Funzionano anche senza subscription. Per aggiungerne una, fai clic su Create custom feed nella scheda Blocklist feeds o Allowlist feeds, compila il modulo e fai clic su Create:

  • Status: abilita o disabilita la lista.
  • Name: da 3 a 16 lettere minuscole e cifre, iniziando con una lettera. I nomi che iniziano con nethesis, yoroi o crowdsec sono riservati. Il nome non può essere cambiato in seguito.
  • Description (optional): un breve testo mostrato nella tabella.
  • List URL: un URL http:// o https:// di un file di testo con una voce per riga. Le voci IPv4 e IPv6 possono essere mescolate. Una lista di blocco contiene singoli indirizzi IP: le reti vengono ignorate, come pure gli indirizzi di loopback, link-local, multicast e riservati. Anche gli indirizzi privati vengono ignorati, a meno che Local network blocking sia abilitato in Settings. Una lista di permessi contiene indirizzi IP e reti.

Di ogni lista vengono importate fino a 100.000 voci. Se il file non può essere scaricato, viene usata l'ultima copia scaricata.

Per modificare una lista personalizzata, fai clic su Edit nella sua riga. Per rimuoverla, seleziona Delete dal menu della riga. Gli indirizzi di una lista di blocco eliminata non vengono più bloccati; gli indirizzi di una lista di permessi eliminata possono essere bloccati di nuovo.

Se il server che ospita la lista richiede l'autenticazione HTTP Basic, scrivi nome utente e password nell'URL, per esempio https://user:password@example.com/blocklist.txt. Codifica con la percent-encoding gli eventuali caratteri @ o : al loro interno.

avviso

Il nome utente e la password nell'URL sono salvati in chiaro. Chiunque abbia accesso alla configurazione del sistema o ai suoi backup può leggerli.

Lista di blocco locale​

Indirizzi IP sempre bloccati da questo server. Inserisci un indirizzo IPv4 o IPv6 per riga in Local blocklist entries e fai clic su Save, per esempio:

203.0.113.25
2001:db8::7

Le reti non sono supportate e un indirizzo presente in una lista di permessi viene rifiutato. La lista contiene fino a 1000 indirizzi. Gli indirizzi sono bloccati in modo permanente: restano bloccati dopo Unban all, Delete all detections e i riavvii. Per sbloccare un indirizzo, rimuovilo dalla lista e fai clic su Save.

I blocchi temporanei impostati da CrowdSec si gestiscono dalla pagina Activity.

Lista di permessi locale​

Indirizzi IP, intervalli CIDR e nomi di dominio attendibili che non devono mai essere bloccati. Inserisci un elemento per riga in Local allowlist entries e fai clic su Save, per esempio:

192.168.1.10
192.168.1.0/24
trusted.example.com

Lista di blocco della community di CrowdSec​

Indirizzi IP condivisi dalla community di CrowdSec e ricevuti tramite l'API centrale (CAPI). Di default, CrowdSec invia alcune telemetrie ai server di proprietà di CrowdSec; i server utilizzano tali dati per comporre una lista di blocco della community che viene restituita alla tua installazione. Se non desideri condividere tali dati, disabilita l'interruttore Central API and signal sharing — ciò disabilita anche l'interruttore Community blocklist sottostante.

Puoi connettere la tua istanza alla console di CrowdSec compilando il campo Enroll key (optional). Il tag Central API status mostra se l'istanza è connessa. Il numero di IP attualmente elencati nella lista di blocco della community è mostrato accanto a un campo di ricerca che consente di verificare se un determinato IP è incluso.

Disabilitare la Central API o la lista di blocco della community elimina automaticamente le decisioni provenienti dalla CAPI da questo server.

CrowdSec fornisce una lista di blocco della community condivisa tra tutti gli utenti; abilitare Central API and signal sharing e iscrivere la tua istanza nella console la attiva. Per accedere alla lista di blocco completa (oltre alla versione Lite), devi condividere almeno alcune decisioni di blocco con la Central API ogni 24 ore. Se il tuo server ha pochi o nessun blocco, sarà considerato in uno stato di blocco, impedendo l'accesso alla lista di blocco completa.

Interrompere l'invio degli indirizzi bloccati​

L'invio degli indirizzi bloccati a Nethesis è abilitato di default per i cluster con una subscription. Per disattivarlo, esegui questi comandi in una shell di root del nodo, sostituendo crowdsec1 con il nome dell'istanza dell'applicazione:

runagent -m crowdsec1 sh -c 'echo NETHESIS_INSIGHTS_PUSH=False >> "$AGENT_STATE_DIR/environment"'
systemctl reload crowdsec1

Questa impostazione è disponibile solo da riga di comando. Le liste di blocco, compresa Nethesis collective defense - Level 2, e la Nethesis global allowlist continuano a funzionare.

Per riprendere l'invio degli indirizzi bloccati, rimuovi l'impostazione e ricarica il servizio:

runagent -m crowdsec1 sh -c 'sed -i "/^NETHESIS_INSIGHTS_PUSH=/d" "$AGENT_STATE_DIR/environment"'
systemctl reload crowdsec1

Collezioni​

Le collezioni aggiungono supporto per il rilevamento di servizi specifici, come SSH, Nginx o WordPress. Abilita solo le collezioni che corrispondono ai servizi installati su questo server; un link al CrowdSec Hub consente di verificare cosa rileva ogni collezione prima di abilitarla.

La tabella elenca Nome, Stato, Versione e Descrizione, con un'azione Enable/Disable per riga. Ad esempio, la collezione nethesis/nethvoice rileva attacchi di forza bruta e scansioni di exploit contro l'applicazione NethVoice (SIP e HTTP); viene fornita disabilitata dopo un aggiornamento e deve essere abilitata da questa pagina.

Impostazioni​

  • Blocco della rete locale: disabilitato di default, il traffico privato/LAN non viene mai bloccato. Abilita questo interruttore se desideri che CrowdSec blocchi anche gli IP offensivi sulle tue reti locali.
  • Durata del blocco: scegli Incremental per aumentare la durata per rilevamenti ripetuti dallo stesso IP, oppure Fixed per utilizzare sempre la stessa durata. In entrambi i casi, inserisci la durata in minuti come testo libero.
  • Notifica via email aggiungendo un indirizzo per riga nel campo Email recipients for notifications: le notifiche funzioneranno solo se Email notifications è stato configurato — un link alle impostazioni email del cluster viene mostrato quando non è ancora configurato.
  • Notification threshold: CrowdSec invia un'email di notifica giornaliera elencando i nuovi IP bloccati ai destinatari configurati. Se questa soglia di nuovi IP bloccati viene raggiunta prima del report giornaliero, la notifica viene inviata immediatamente. Può essere impostata tra 1 e 10000 (100 di default).

Dashboard Grafana​

CrowdSec crea automaticamente tre dashboard in Grafana. Per aprirle, abilita Grafana come spiegato in Dashboard di Grafana, poi apri la cartella modules.

  • CrowdSec Overview: come lavora CrowdSec al suo interno. Mostra le righe di log lette, i parser riusciti o falliti, i bucket, le decisioni e i rilevamenti. Usala per verificare che i log siano letti e analizzati.
  • CrowdSec Metrics: righe lette e analizzate, bucket, decisioni, bouncer, CPU e memoria. Scegli l'istanza con il selettore Instance. Usala per vedere quali scenari scattano di più, per verificare che il bouncer del firewall sia connesso e per individuare un CrowdSec lento.
  • CrowdSec Bans: da dove arrivano i blocchi locali. Mostra una mappa del mondo, i principali paesi, provider e scenari, le durate dei blocchi, gli IP bloccati più spesso e gli ultimi blocchi. Usa i selettori CrowdSec, Country e IP per filtrare. I blocchi ricevuti dalla Central API (CAPI) non sono conteggiati.

Interfaccia a riga di comando​

La maggior parte delle azioni sopra descritte è disponibile anche dalla riga di comando.

Il comando cscli è una potente interfaccia a riga di comando per accedere alle funzioni avanzate di CrowdSec. Per eseguire cscli, devi prima entrare nell'ambiente dell'applicazione. Digita il seguente comando in una shell di root

runagent -m crowdsec1 bash

A questo punto il comando cscli diventa disponibile. Per esempio, puoi stampare il messaggio di aiuto con

cscli --help

Puoi anche eseguire un singolo comando direttamente, senza aprire una shell, prefissandolo con runagent -m crowdsec1:

runagent -m crowdsec1 cscli decisions list

Alcuni comandi utili:

  • cscli decisions list — elenca i divieti attuali (IP, motivo, durata, ID decisione)
  • cscli decisions delete --id <id> — rimuove un divieto tramite il suo ID decisione, ad esempio cscli decisions delete --id 630190
  • cscli decisions delete --ip <ip> — rimuove un divieto tramite indirizzo IP
  • cscli decisions add --ip <ip> --duration 4h --reason "manual ban" — vieta manualmente un indirizzo IP per un tempo limitato; per bloccare un IP in modo permanente, usa la Local blocklist
  • cscli alerts list — elenca gli avvisi attivati (attacchi rilevati), inclusi quelli che non hanno portato a un divieto
  • cscli bouncers list — elenca i bouncer registrati (ad esempio il bouncer del firewall) e il loro stato
  • cscli collections list / cscli scenarios list — mostra quali collezioni/scenari sono installati e abilitati, utile per verificare cosa viene protetto
  • cscli metrics — mostra le metriche di parser/bucket/bouncer, utile per verificare che CrowdSec stia effettivamente elaborando i log
  • cscli explain --file <logfile> --type <log-type> — testa una riga di log contro parser e scenari, utile per eseguire il debug del motivo per cui un attacco è stato rilevato o meno
NethServer 8