Entorn multi servidor amb Crowdsec

Amb aquest títol tan indigest, vam tractar d'explicar què és el que fa una bèstia bruna a Crowdsec… com l'habitual serà tenir l'agent de Crowdsec en cadascuna de les nostres màquines de l'organització, farem que entre elles es puguin comunicar per prevenir atacs.

Això és, que si un equip amb Windows o Linux és atacat, pugui la resta de màquines de l'organització assabentar-se de l'atac i bloquejar l'adreça IP de l'atacant abans que els pugui tan sols tocar a la porta. Per defecte diem que Crowdsec funciona de manera local, cada agent de Crowdsec es comunica al seu propi servidor Local d'APIs, el que farem serà que tots es comuniquin al mateix servidor LAPI.

Servidor Local API,

Comencem, primer, a la màquina que volem que actui com a servidor API per a la resta d'agents. Així que l' habiliten en el seu fitxer de configuració ‘ /etc/crowdsec/config.yaml', indiquem la IP per la qual escoltarà i el port:

api:
...
  server:
...
    listen_uri: 192.168.2.10:8080
...

A '/etc/crowdsec/local_api_credentials.yaml’ únicament la mateixa adreça IP:

url: http://192.168.2.10:8080
...

Reiniciem per aplicar els canvis:

sudo systemctl restart crowdsec

Agents de Crowdsec,

Ara, la resta de màquines amb Crowdsec haurem de registrar-les contra el Local API del servidor, i a més deshabilitarem el LAPI de cada màquina Crowdsec ja que no es farà servir.

Per posar-lo d'offtopic, si no tens instal·lat Crowdsec a la màquina destinació a protegir, és el moment 😉 Tens en posts anteriors com protegir un Windows, Linux…

Bo, vingui, va, ens registrem contra el LAPI server des de cada agent amb:

sudo cscli lapi register -u http://192.168.2.10:8080
    INFO[14-11-2022 10:14:08 PM] Successfully registered to Local API (LAPI)
    INFO[14-11-2022 10:14:08 PM] Local API credentials dumped to '/etc/crowdsec/local_api_credentials.yaml'
    WARN[14-11-2022 10:14:08 PM] Run 'sudo systemctl reload crowdsec' for the new configuration to be effective.

Aturem el nostre propi servidor API ja que no el farem servir:

sudo cp /lib/systemd/system/crowdsec.service /etc/systemd/system/crowdsec.service

I hi afegim '-no-api’ en el fitxer de configuració de Crowdsec '/etc/systemd/system/crowdsec.service’

...
ExecStart=/usr/bin/crowdsec -c /etc/crowdsec/config.yaml -no-api
...

Finalment recarreguem els serveis per usar aquesta nova configuració:

sudo systemctl daemon-reload sudo systemctl restart crowdsec

Ara ja si ens anem al servidor LAPI, podrem veure que hi ha sol·licituds de connexions pendents amb el comando 'sudo cscli machines list':

---------------------------------------------------------------------------------------------------------
 NAME IP ADDRESS LAST UPDATE STATUS VERSION AUTH TYPE LAST HEARTBEAT
---------------------------------------------------------------------------------------------------------
 b91d17c64c4e4a2 192.168.x.xxx 2022-11-14T22:18:00Z ✔️ v1.4.1-debian password 19s 9c70ab3970dd4cc 192.168.x.xxx 2022-11-14T22:14:08Z 🚫 password ⚠️ 4m11s
---------------------------------------------------------------------------------------------------------

Validem les màquines executant 'sudo cscli machines 9c70ab3970dd4cc’

sudo cscli machines validate 9c70ab3970dd4cc INFO[14-11-2022 10:19:35 PM] machine '9c70ab3970dd4cc' validated successfully

I tornem a verificar 'sudo cscli machines list':

---------------------------------------------------------------------------------------------------------
 NAME IP ADDRESS LAST UPDATE STATUS VERSION AUTH TYPE LAST HEARTBEAT
---------------------------------------------------------------------------------------------------------
 b91d17c64c4e4a 192.168.x.xxx 2022-11-14T22:19:00Z ✔️ v1.4.1-debian password 40s 9c70ab3970dd4cc 192.168.x.xxx 2022-11-14T22:19:35Z ✔️ password 5s
---------------------------------------------------------------------------------------------------------

Sense oblidar-nos recarregar Crowdsec en cada agent un cop li hàgim validat, amb:

sudo systemctl restart crowdsec

Mitigacions,

Ara, per mitigar, per aplicar accions que ens permetin reduir els riscos de vulnerabilitat davant certes amenaces, haurem de fer servir els bouncers. Primer, des del servidor d'APIs li crearem els tokens que necessitin els bouncers dels agents. Ho farem amb cada bouncer que necessitem en cada agent, exemple 'sudo cscli bouncers add OS-JITSI-05-fw’

Api key for 'OS-JITSI-05-fw':
    xxxxxxxxxxx!

A cada agent de Crowdsec haurem d'instal·lar el bouncer que necessitem, en aquest cas ens basarem en els bouncer de tipus firewall, per a cada OS, hi ha un bouncer compatible: Windows firewall, iptables, nftables, ipset, pf… Si tenim iptables:

sudo apt install crowdsec-firewall-bouncer-iptables -y

I editem el fitxer de configuració del bouncer del firewall ‘ /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml’ indicant l'adreça IP del nostre LAPI server i el token que acabem de generar-li:

...
api_url: http://192.168.2.10:8080/
api_key: xxxxxxxxxxxx
...

Reiniciem el servei del bouncer del firewall:

sudo systemctl restart crowdsec-firewall-bouncer sudo systemctl status crowdsec-firewall-bouncer

I llest! Aquesta màquina quedarà preparada, podrà agregar en el firewall del SO entrades denegant l' accés a determinades adreces IP que li comuniqui el servidor d' APIs.

Podremos desde el servidor LAPI verificar l'estat dels bouncers con 'sudo cscli bouncers list':

-----------------------------------------------------------------------------------------------------------------------
 NOM ADREÇA IP VÀLID ÚLTIMA API TIPUS D'EXTRACCIÓ VERSIÓ TIPUS D'AUTENTICACIÓ
-----------------------------------------------------------------------------------------------------------------------
 OS-JITSI-05-FW 192.168.x.xxx ✔️ 2023-02-02T16:40:16Z crowdsec-firewall-bouncer v0.0.24-debian api-key OS-ELK-03-FW 192.168.x.xxx ✔️ 2023-02-02T16:40:11Z crowdsec-firewall-bouncer v0.0.24-debian api-key OS-GRA-04-FW 192.168.x.xxx ✔️ 2023-02-02T16:40:11Z crowdsec-firewall-bouncer v0.0.24-debian api-key OS-NGINX-01-FW 192.168.x.xxx ✔️ 2023-02-02T16:40:10Z crowdsec-firewall-bouncer v0.0.24-debian api-key OS-NGINX-01-mirall 192.168.x.xxx ✔️ 2023-02-02T16:40:18Z crowdsec-blocklist-mirror v0.0.1-9-g86d6 api-key OS-OTRS-01-fw 192.168.x.xxx ✔️ 2023-02-02T16:40:16Z crowdsec-firewall-bouncer v0.0.24-debian api-key
...
------------------------------------------------------------------------------------------------------------------------

I llest! Amb això va quedant la malla tancada! Tots els nostres Crowdsec de l'organització es parlaran mitjançant un únic servidor d'API, per la qual cosa tots quedaran igualment protegits, compartint una única llista d'adreces IPs negra, bloquejant en els seus respectius FWs a les IPs dels atacants…

Abracitos! Que vagi MOLT bé 😉

Posts recomanats

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dubtis a contactar amb mi, us intentareu ajudar sempre que pugui, compartir és viure ;) . Gaudir dels documents!!!