
Proteggiamo le nostre macchine con Crowdsec – Parte I
Attenzione, questo è il… Mi dispiace, Ma è vero… Per chi ancora non lo conoscesse, in una serie di post intendo mostrare alcune delle meraviglie di Crowdsec e come possiamo proteggere la nostra infrastruttura da attacchi o accessi impropri.
Prima di iniziare a descrivere il prodotto come tale, della sua architettura… Iniziamo a pensare che ero un utente felice di fail2ban fino a quando non ho scoperto Crowdsec. Si scopre che Crowdsec, è un IDS e un IPS, Rileva e blocca l'accesso alle macchine, Non mi interessa se si tratta di una macchina su una LAN, rispetto a un servizio pubblicato su Internet, essere un Linux, Finestre o contenitore. Crowdsec se rileva un attacco DDoS, una scansione delle porte, Una scansione delle vulnerabilità, o semplicemente accessi errati (A quel sito web se si tratta di un sito web, a quell'RDP se si tratta di un Windows, Ssh, CIFS…). Crowdsec rileverà l'accesso improprio e intraprenderà un'azione, La cosa più normale, Fallo bannare, come? beh, tra gli altri, dal firewall del sistema operativo (Finestre, Linux…). Quindi Crowdsec creerà una regola nel FW del sistema operativo per bloccare quell'IP di origine. Inoltre, Ovviamente, Crowdsec leggerà anche i log delle nostre app, servizi… e in base a ciò che vedo, Agire, Attenzione agli aggressori.
Bene, Se solo fosse, Non ti ho detto che era il, Ancora, Ancora… Crowdsec è un software gratuito, che ha una parte commerciale se volete e che non vedremo in questa serie di post, Quindi quello che vedremo in questa serie sarà tutto aperto. Totale, che Crowdsec rileva i comportamenti, Gestione delle minacce e basata sulla reputazione, ma ha anche una blacklist di indirizzi IP pubblici, condiviso e coltivato da tutti noi che utilizziamo Crowdsec; Quindi, quando c'è una maggioranza che rileva una minaccia, Saremo tutti allertati e avvisati!
Aspetta, non abbiamo finito, si scopre che Crowdsec può essere installato come abbiamo detto su Windows, macOS, Linux, Kubernetes, Scaricatore, OpenWRT… beh, grazie all'API di Crowdsec, le nostre macchine saranno anche in grado di condividere tra loro una blacklist di IP. Cioè, che se qualcuno mi attacca una macchina, il resto bloccherà il tuo accesso prima che tu provi, curioso… Bene, Crowdsec rileverà effettivamente e il "buttafuori"’ Agire (Allora arriviamo a questo).
C'è ancora molto da fare, Lo vedremo a poco a poco, notifiche what if di Telegram, La console Web che hai, che si integra con Prometheus, Grafana… Ma, Volete sapere, secondo me, la cosa più curiosa di tutte?? Forse pensi che sia una stronzata, Per me è la bomba. Attento!!! perché è, che se abbiamo un firewall aziendale in azienda, Un vero e proprio perimetro, un Fortigate per esempio, un pfSense… Possiamo fare in modo che questi firewall si nutrano anche in quelle liste nere! Oh! E avere regole nei nostri firewall (In cima a tutto) che negano l'accesso a detti IP neri ad altre macchine, Segmenti di rete… Oh mio Dio!
È leggero, modulare, Semplice da configurare… Bene, Cominciamo perché parlo molto 😉
In questo primo post andremo a sapere: Come installare Crowdsec su un Linux, I comandi di base, Come installare Crowdsec su Windows, Utilizzo della console, facciamo un attacco di prova e infine come gestire gli avvisi tramite Telegram. Quasi niente.
In altri post vedremo come fare un'installazione multi-server, Questo è, che le nostre macchine condividano le informazioni, o integrarlo con il nostro firewall Fortigate…
Inutile raccomandare il suo doc ufficiale: https://docs.crowdsec.net
Installa Crowdsec su Linux
L'installazione è molto semplice, partiamo da un esempio che vogliamo proteggere un Nginx che gira su un Ubuntu, Installiamo con:
ricciolo -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | Sudo Bash sudo apt install crowdsec -y ... INFORMAZIONI[11/12/2022:04:24:15 Pomeriggio] crowdsec_wizard: Installing collection 'crowdsecurity/linux' INFO[11/12/2022:04:24:21 Pomeriggio] crowdsec_wizard: Installing collection 'crowdsecurity/nginx' INFO[11/12/2022:04:24:24 Pomeriggio] crowdsec_wizard: Installing collection 'crowdsecurity/sshd' ...
Come possiamo vedere, durante l'installazione dell'agente Crowdsec per Linux, rileva che abbiamo servizi SSHd e Nginx, e quindi automaticamente e senza fare nient'altro, Rileverà già le anomalie.
La prossima cosa è, se vogliamo un'azione per bannare gli indirizzi IP di origine, poiché abbiamo bisogno di avere un firewall installato ed eretto sul sistema operativo, che di solito tutti lo portano, Capiamo che usiamo iptables, Supporterebbe anche gli NFTables, Ipset o P, dipende dal nostro sistema operativo. E installiamo la sdraietta corrispondente:
sudo apt install crowdsec-firewall-bouncer-iptables -y
Bene, in linea di principio ora sarebbe pronto, Protetto dalla macchina! 🙂 Prendilo ora! Facciamo ora lo stesso processo su un Windows, per vedere le somiglianze, e poi seguiamo più nel dettaglio forse i comandi più interessanti, parleremo dell'API… È vero che abbiamo altri dettagli, che vedremo.
Installa Crowdsec su Windows
Cosa ho detto, Facciamo lo stesso esercizio, installare Crowdsec su un computer Windows, con l'obiettivo di proteggerlo. E se qualcuno tenta di accedere tramite RDP e inserisce la password errata (Default 5 tempi) Beh, bandiscilo, o da CIFS, O quello che vuoi, Fai una scansione 😉
Innanzitutto, scaricare e installare il requisito di .NET Runtime: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-6.0.11-windows-x64-installer (o una versione superiore, Dipende da quando leggi questo).
E possiamo procedere, abbiamo scaricato il programma di installazione MSI da https://github.com/crowdsecurity/crowdsec/releases/
“Seguente”,
“Sì piccola”,
“Sì”,
Attendiamo qualche secondo durante l'installazione…
E finire! Abbiamo già installato Crowdsec!
Ma attenzione, non abbiamo finito, allo stesso modo Crowdsec rileverà ma non sarà in grado di eseguire azioni, per questo avremo bisogno del buttafuori per il firewall di Windows. Così, Lo scarichiamo e lo installiamo: https://github.com/crowdsecurity/cs-windows-firewall-bouncer/releases
“Installare”,
…
E ora è. PC Windows protetto!
Esegui attacco di prova
Innanzitutto, Perché non convalidiamo che funzioni? Ecco come vediamo alcuni primi comandi iniziali. Niente, Molto semplice, impavido, Come testarlo?
Bene, il computer Windows stesso cerca di convalidarti 5 volte con credenziali errate da RDP (Desktop remoto), o tramite CIFS e una cartella condivisa… Se vuoi, lo complichi e fai una scansione delle porte, o vulnerabilità… vedrai come la macchina Windows ti blocca.
Creerà una regola nel firewall nativo con un'eccezione che nega qualsiasi accesso da detto IP dannoso.
E il team Linux, se, ad esempio, porta un Nginx come nel caso precedente, Bene, possiamo scaricare Nikto che è uno scanner di server web, e controlliamo se lo rileva:
git clone https://github.com/sullo/nikto cd nikto/programma git checkout nikto-2.5.0 ./nikto.pl -h https://XXX.XXX.XXX.XXX
Dopo questo la stessa cosa, La macchina Linux ci negherà immediatamente l'accesso con un'eccezione nel firewall.
Comandi di base
Come scusa passiamo al punto successivo del documento, Comandi minimi che potremmo essere interessati a conoscere (Ne sapremo di più in seguito):
Visualizza l'elenco dei ban o dei blocchi:
sudo elenco delle decisioni cscli
E questo ci tornerà che non ci sono divieti, Se non abbiamo fatto il test.
O che abbia rilevato un blocco e ci mostri il suo IP, Il tuo motivo, Tempo di blocco…
Vietare manualmente un IP:
sudo decisioni cscli add --ip DIRECCIÓN_IP --reason "Descrizione"
Deban, o sbloccare un indirizzo IP:
Sudo cscli decisioni delete --IP DIRECCIÓN_IP
Con 'sudo cscli alerts list’ Vedremo gli avvisi che sono scattati, con 'sudo cscli alerts inspect ID’ Avremmo avuto maggiori dettagli su ogni avviso.
Con 'sudo /usr/share/crowdsec/wizard.sh -c’ possiamo abilitare/disabilitare i servizi da monitorare con Crowdsec.
In questo file '/etc/crowdsec/parsers/s02-enrich/whitelists.yaml’ Avremo la possibilità di escludere una macchina e inserirla nella whitelist, Per impostazione predefinita, porta 3 intervalli esclusi e se non sei stato rilevato dall'attacco di prova, Forse hai intenzione di girare 😉 da queste parti
Nome: Descrizione di Crowdsecurity/Whitelist: "Whitelist di eventi da indirizzi ipv4 privati"
Lista bianca:
ragione: "IP/intervalli IPv4/IPv6 privati"
IP:
- "127.0.0.1"
- "::1"
Cidr:
#- "192.168.0.0/16"
#- "10.0.0.0/8"
- "172.16.0.0/12"
# espressione:
# - "'foo.com' in evt.Meta.source_ip.reverse"
Notifiche di Telegram
Bene, quest'ultimo giorno continueremo, che c'è molto da vedere e raccontare 🙂 Per impostazione predefinita e senza rovinare Telegram potremmo inviare notifiche a Slack, Sfarfallio, E-mail…
Modifichiamo il file del profilo '/etc/crowdsec/profiles.yaml’ E non commentiamo questi 2 poema:
Notifiche: - http_default
Modifichiamo come dice in '/etc/crowdsec/notifications/http.yaml’ Rimanere qualcosa del genere, dobbiamo prendere in considerazione la modifica dell'ID del gruppo Telegram e del Token:
digitare: Nome HTTP: http_default log_level: Formato informazioni: | { "chat_id": "-ID_CHAT_TELEGRAM", "Testo": " {{gamma . -}} {{$Vigile := . -}} {{gamma. Decisioni -}} {{.Valore}} otterrà {{.Digitare}} per il prossimo {{.Durata}} per l'attivazione {{.Scenario}}.\rn https://www.shodan.io/host/{{.Valore}} {{Fine -}} {{Fine -}} " } URL: https://api.telegram.org/botTOKEN/sendMessage metodo: Intestazioni POST: Tipo di contenuto: "Applicazione/JSON"
Come al solito, eventuali modifiche necessarie per riavviare il servizio Crowdsec:
sudo systemctl restart crowdsec
Et voilà!! I messaggi di Telegram arriveranno all'istante!
Venire, Un altro giorno continuiamo, Questo sta andando all'inferno, Lasciamo tante cose da vedere, Dobbiamo parlare di più comandi, API, dalla loro dashboard o console web che ti avevo detto che avremmo visto, Ma per favore… Questo è molto lungo Dobbiamo 🙂 far parlare tra loro tutti i nostri agenti, (se dovesse interessare), la parte di integrazione con i nostri firewall perimetrali… Vedi la parte Prometheus, Grafana…
Bene, Spero che sia una soluzione interessante, che sono sicuro che molti di noi hanno pubblicato servizi su Internet senza questa protezione. O perché no, implementarlo sulle macchine interne della nostra organizzazione, tra di loro formano una rete e si proteggono a vicenda…
Bene, Che grande abbraccio!