Marvin Pascale

[B.Log]

25 Dicembre 2021

Crowdsec

Crowdsec Crowdsec è un progetto open-source che si pone come obiettivo quello di combattere i cybercriminali. Un progetto fatto dalla comunità per la comunità dove tutti posso partecipare attivamente.

Il funzionamento che sta alla base è molto semplice: tutti condividono i risultati dei vari scan e così facendo si crea una lista globale degli ip utilizzati dagli attaccanti per sfruttare vulnerabilità o causare delle interruzioni di servizio (attacchi DDOS).

Crowdsec si integra con iptable e nftables, AWS, Cloudflare, GCP e molto altro, quindi alla componente “core” possiamo installare un “bouncer” (buttafuori) che ci serve per bloccare le richieste provenienti dagli ip presenti in blacklist.

Installazione e configurazione

Lo scenario che vi mostrerò è basato su una Debian 11 e iptables.

# curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | bash
#  apt-get install crowdsec crowdsec-firewall-bouncer-iptables

al termine dell’installazione possiamo verificare che sia tutto pronto e la lista degli scenari attivi

# cscli hub update
# cscli collections list
------------------------------------------------------------------------------------------------------------
 NAME                               📦 STATUS   VERSION  LOCAL PATH
------------------------------------------------------------------------------------------------------------
 crowdsecurity/nginx                ✔️  enabled  0.1      /etc/crowdsec/collections/nginx.yaml
 crowdsecurity/base-http-scenarios  ✔️  enabled  0.5      /etc/crowdsec/collections/base-http-scenarios.yaml
 crowdsecurity/linux                ✔️  enabled  0.2      /etc/crowdsec/collections/linux.yaml
 crowdsecurity/sshd                 ✔️  enabled  0.2      /etc/crowdsec/collections/sshd.yaml
------------------------------------------------------------------------------------------------------------

nel mio caso è tutto aggiornato per cui non occorre fare altro ma nel caso in cui uno scenario abbia bisogno di un aggiornamento è possibile aggiornarlo

# cscli collections upgrade crowdsecurity/linux

Crowdsec è pronto all’uso ma se volessimo utilizzarlo con il nostro reverse proxy preferito oppure con il nostro server web di riferimento non ci resta altro che verificare che il software analizzi i log.

Se installiamo crowdsec su un sistema dove è già presente un software esposto come sshd, nginx, apache, ecc verranno automaticamente caricati gli scenari corrispondenti ma nel caso in cui questi non venissero rilevati oppure avessimo bisogno di una configurazione diversa possiamo intervenire sui file yaml di configurazione.

Crowdsec e Nginx proxy manager

Ho già parlato di Nginx proxy manager e ora vedremo come far collaborare i due progetti.

Dopo aver installato crowdsec dobbiamo editare il file /etc/crowdsec/acquis.yaml

#Generated acquisition file - wizard.sh (service: sshd) / files : /var/log/auth.log
filenames:
  - /var/log/auth.log
labels:
  type: syslog
---
#Generated acquisition file - wizard.sh (service: linux) / files : /var/log/syslog /var/log/kern.log /var/log/messages
filenames:
  - /var/log/syslog
  - /var/log/kern.log
  - /var/log/messages
labels:
  type: syslog
#CUSTOM nginx PM
---
filenames:
  - /opt/nginx-pm/data/logs/*.log
labels:
  type: nginx
---

aggiungiamo la sezione dedicata ad nginx dando per assunto che i file di log siano in /opt/nginx-pm/data/logs. Verifichiamo i parser

#  cscli parsers list
---------------------------------------------------------------------------------------------------------------------
 NAME                            📦 STATUS           VERSION  LOCAL PATH
---------------------------------------------------------------------------------------------------------------------
 crowdsecurity/http-logs         ✔️  enabled          0.6      /etc/crowdsec/parsers/s02-enrich/http-logs.yaml
 crowdsecurity/sshd-logs         ✔️  enabled          1.6      /etc/crowdsec/parsers/s01-parse/sshd-logs.yaml
 crowdsecurity/syslog-logs       ✔️  enabled          0.7      /etc/crowdsec/parsers/s00-raw/syslog-logs.yaml
 crowdsecurity/nginx-logs        ✔️  enabled          0.9      /etc/crowdsec/parsers/s01-parse/nginx-logs.yaml
 crowdsecurity/geoip-enrich      ✔️  enabled          0.2      /etc/crowdsec/parsers/s02-enrich/geoip-enrich.yaml
 crowdsecurity/whitelists        ⚠️  enabled,tainted  ?        /etc/crowdsec/parsers/s02-enrich/whitelists.yaml
 crowdsecurity/dateparse-enrich  ✔️  enabled          0.2      /etc/crowdsec/parsers/s02-enrich/dateparse-enrich.yaml
---------------------------------------------------------------------------------------------------------------------

mentre con il comando

# cscli alerts list

è possibile vedere tutte le segnalazioni del nostro sistema.

Per cavalcare un fenomeno del momento vi mostro come attivare uno scenario per tracciare le attività sospette su log4j2

# cscli hub update
# cscli scenarios install crowdsecurity/apache_log4j2_cve-2021-44228
# systemctl reload crowdsec

Lanciamo una scansione manuale e verifichiamo i risultati

# crowdsec --dsn "file:///var/log/nginx/access.log" -no-api --type nginx
# cscli alerts list --scenario crowdsecurity/apache_log4j2_cve-2021-44228

Se volessimo vedere tutti i risultati in una comoda interfaccia web è possibile attivare una dashboard. Per avviarla è necessario avere installato Docker.

 # cscli dashboard setup --listen 0.0.0.0

verrà scaricato e avviato un container in ascolto su tutti gli indirizzi e la porta 3000.

 # docker ps
CONTAINER ID   IMAGE                             COMMAND                  CREATED        STATUS        PORTS                                                                                            NAMES
e775b7bfcad6   metabase/metabase:v0.41.5         "/app/run_metabase.sh"   23 hours ago   Up 23 hours   0.0.0.0:3000->3000/tcp                                                                           crowdsec-metabase

colleghiamoci all’indirizzo http://[ip_del_server]:3000 con username e password mostrati nell’output della creazione della dashboard. Con il primo accesso sarà possibile modificare gli accessi.


Le opinioni in quanto tali sono opinabili e nulla ti vieta di approfondire l’argomento.

Risorse: