Desplegant Crowdsec en una màquina Windows

Bo, ja hem vist en el document anterior una mica els conceptes i idees de com desplegar Crowdsec en la nostra organització, avui el que tenim al menú és com instal·lar Crowdsec en una màquina Windows i protegir-la. Protegir-la de botnets, atacs, curiosos, avorrits…

Així que hi anem, comencem amb un Windows! Habitualment, s'entén que ho farem en un Windows Server, un servidor que tingui algun servei publicat i vulguem protegir; no obligatòriament hagi de ser a Internet. Començarem instal·lant-li el Crowdsec Security Engine, que és l' agent que s' encarregarà de tot, processar els seus logs, prendre les seves decisions… seguit li instal·larem el bouncer (o component de remediació) per al seu firewall de Windows, del seu SO, per si ens interessa que actuï i pugui donar d'alta regles en ell, bloquejant accessos temporals a adreces IP malvades. I acabarem registrant-lo a la Consola de Crowdsec.

Amb això gairebé el tindrem, ja que el document continuarà, serà opcional, però si vas a voler una gestió centralitzada, hauràs de fer alguns passos més; i això és, una decisió teva. Si t'interessa, has de llegir-te abans el post previ.

Aquest post té la següent estructura:

 

 

Instal·lació de l'Agent de Crowdsec

 

Abans de seguir, caldrà prèviament instal·lar el requisit .NET Runtime: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-6.0.11-windows-x64-installer

 

Ja podrem procedir, descarreguem l'instal·lador MSI i començar la instal·lació de Crowdsec Engine, de https://github.com/crowdsecurity/crowdsec/releases/. Crowdsec durant la instal·lació necessitarà accés a Internet, per descarregar-se alguns elements com les col·leccions… així com per al funcionament habitual, l'agent necessita accés a un parell de llocs de Crowdsec, us recomano llegirs els llocs/ports que pugui necessitar.

"Següent",

 

“Install”,

 

Esperem uns segons mentre instal·la...

 

I finalitzar! Ja tenim Crowdsec instal·lat!

 

Instal·lació del bouncer de Crowdsec Windows Firewall

 

Crowdsec detectarà però no podrà realitzar accions, per a això necessitarem el bouncer per al firewall de Windows. Així que, ho descarreguem: https://github.com/crowdsecurity/cs-windows-firewall-bouncer/releases i comencem la seva instal·lació,

 

“Install”,

 

 

 

I ara ja tenim el bouncer, ens protegirà a nivell de firewall, “Finish”,

 

Registrant Crowdsec contra la Consola de Crowdsec

 

Si no tenim un compte en https://app.crowdsec.net ens la podem crear, per gestionar des d'una consola GUI de manera centralitzada tots els nostres Crowdsec, no és obligatori, i tenim una versió Community amb la qual també es poden fer moltes coses, entre elles, doncs el que hem parlat alguna vegada, veure les alertes de les màquines, el seu estat, podem subscriure-les a diferents blocklists…. Continuem doncs afegint el nostre Crowdsec, la instal·lació en aquest Windows. Ens copiam el comandament que hem d'executar.

 

I ho enganxem en una consola del sistema, executem:

cscli console enroll xxxxxxxxxx

 

Tornem a la Consola de Crowdsec i acceptem l'enroll, si no ens surt, un F5 ve bé,

 

 

Sobre l'Engine recent afegit, li editem el nom i li posarem un que ens faci referència a qui és,

 

Habitualment, indiquem el nom de la màquina, Update,

 

I si volem, el següent pugui ser afegir-hi alguns blocklists, per a això, podem polsar sobre “Browse available blocklists”,

 

Si ja estem subscrit a algun blocklist, podrem seleccionar-lo des de “Manage”

 

I polsar sobre “Add Security Engine” per afegir aquesta màquina a aquesta blocklist,

 

Elegim un tipus d'acció i confirmem. Màquina subscrita!

Recordar que després de registrar Crowdsec contra la Consola cal reiniciar el servei de Windows que tenim.

 

Col·leccions

 

Per defecte Crowdsec quan s'instal·la en una màquina escaneja a la recerca dels serveis que tenim instal·lats i els intenta protegir, en aquest cas, al meu Windows m'ha detectat que disposo d'IIS instal·lat, així com SQL Server, a més d'aquestes col·leccions, ens haurà ficat alguna addicional, així com les de Windows. Podem veure les col·leccions que tenim instal·lades amb:

cscli collections list

 

Podrem buscar més col·leccions en el seu Hub, col·leccions realitzades per ells o per la comunitat, que puguin protegir altres serveis que disposem, com si per exemple en aquest Windows tinguéssim Exchange Server… doncs seria tan senzill com executar:

cscli collections install crowdsecurity/exchange

 

I hauríem d'afegir en el seu fitxer d'adquisicions 'C:\ProgramDataCrowdSecconfigacquis.yaml’ el contingut de baix, no us preocupeu que al Hub ve detallat en cada cas què cal fer, corregim els paths dels logs d'Exchange i després de reiniciar el servei de Crowdsec tindríem la màquina llista, protegint atacs també d'OWA, autenticacions SMTP…

 

##Exchange SMTP use_time_machine: true #Process logs as if we were replaying them to get the timestamp from the filenames:
  - C:\Program FilesMicrosoftExchange ServerV15TransportRolesLogsFrontEndProtocolLogSmtpReceive*. LOG labels:
  type: exchange-smtp
---
##Exchange IMAP use_time_machine: true #Process logs as if we were replaying them to get the timestamp from the filenames:
  - C:\Program FilesMicrosoftExchange ServerV15LoggingImap4*. LOG labels:
  type: exchange-imap
---
##Exchange POP use_time_machine: true #Process logs as if we were replaying them to get the timestamp from the filenames:
  - C:\Program FilesMicrosoftExchange ServerV15LoggingPop3*. LOG labels:
  type: exchange-pop
---
##Exchange OWA #OWA failed attempts are logged in the same way as RDP failed auth source: wineventlog event_channel: Security event_ids:
 - 4625
event_level: information labels:
 type: eventlog
 ...

 

 

Llista blanca

La llista blanca com podem interpretar ens servirà perquè puguem excloure per exemple una adreça IP que pugui ser biaixada o bloquejada per Crowdsec, habitualment puguin ser les adreces IP d' algun lloc de control, equip de salt, etc.… Així com entre d'altres també podrem excloure països, per exemple.

 

name: crowdsecurity/whitelists description: "Whitelist events from private ipv4 addresses"
whitelist:
  reason: "private ipv4/ipv6 ip/ranges"
  ip:
    - "127.0.0.1"
    - "::1"
    - "192.168.1.33"
  cidr:
    #- "192.168.0.0/16"
    #- "10.0.0.0/8"
    - "172.16.0.0/12"
  # expression:
  #   - "'foo.com' in evt.Meta.source_ip.reverse"

El fitxer el trobarem a 'C:\ProgramDataCrowdSecconfigparserss02-enrichwhitelists.yaml', i veurem que podrem afegir senzillament qualsevol IP o rang IP a la llista blanca d'exclusions.

 

Si volem excloure països, hem d'instal·lar abans el parser geoip-enrich que ens alimentarà els logs amb dades de geolocalització, com per exemple països, ciutats o coordenades GPS:

cscli parsers install crowdsecurity/geoip-enrich

 

I n'hi haurà prou amb afegir la següent expressió en el fitxer de llista blanca:

expression:
  - evt.Enriched.IsoCode == 'ES'

 

Recordar en finalitzar reiniciar el servei de Crowdsec per recarregar aquests canvis.

 

Notificacions

 

notifications:
  - slack_default
  - splunk_default
  - http_default
  - email_default

Podrem habilitar notificacions editant el fitxer 'C:\ProgramDataCrowdSecconfigprofiles.yaml', on podrem descomentar i seleccionar el tipus de notificació que ens interessi, que poden ser a Splunk, a Slack, per email, o amb HTTP (per exemple Telegram).

 

Si volem per exemple notificacions de correu, en el directori 'C:\ProgramDataCrowdSecconfignotifications’ editaríem el fitxer YAML email.yaml (o slack.yaml o splunk.yaml o http.yaml), on configurarem els paràmetres del nostre servidor de correu. Els de Telegram ho vam veure en un post viejuno.

 

Provant-ho

 

Finalitzarem provant-ho ¿no?  si no com ens fiem que això funcioni? 🙂 Podeu fer les proves d'accessos incorrectes que voleu, o validar-lo amb un escaner de vulnerabilitats, o de webs… en aquest document veieu un exemple amb nikto.

 

Podeu veure les decisions que ha pres la vostra màquina amb:

cscli decisions list

 

En aquest cas ha banejat l'adreça IP 192.168.1.253 per fer un Windows Brute Force, serà que he ficat malament diverses vegades l'usuari en accedir al servidor per RDP, o SMB…

 

O des del servidor LAPI si és que l'hem registrat (que és el que ve a continuació)

docker exec -it crowdsec-crowdsec-1 cscli decisions list

 

Si ja hem desplegat el Crowdsec Mirror, podrem verificar que l'adreça IP xa' n surt a la URL on publiquem la nostra blocklist http://DIRECCION_IP_CROWDSEC_MIRROR:41412/security/blocklist

 

Si volem nyafar una adreça IP, ho farem amb:

cscli decisions add --ip DIRECCIÓN_IP --reason "Descripció"

 

Si volem desbanejar una adreça IP, ho farem amb:

cscli decisions delete --ip DIRECCIÓN_IP

 

 

Podrem investigar les alertes que hem tingut amb:

cscli alert list

 

 

Amb el comandament anterior les llistem, i ara seleccionant l'ID d'una alerta en particular i podrem saber quin fitxer de log la va generar, què estava fent, el path, l' estat http… en aquest cas de la imatge són molts 404 al path /apps/files_sharing/publicpreview/

cscli alert inspect ID_ALERTA [-d]

 

Y, si és que ho necessitem, crear el nostre propi fitxer de Whitelist per fer exclusions en casos de falsos positius, pej a 'C:\ProgramDataCrowdSecconfigparserss02-enrichwhitelist-permet-pdfs.yaml, podent usar aquestes expressions d' exemple per fer els filtres d' exclusió:

name: crowdsecurity/mylistablancapdfs description: "Ignora PDFs"
whitelist:
  reason: "ignora PDFs"
  expression:
    #- evt.Meta.http_path startsWith '/apps/files_sharing/publicpreview/'
    #- evt.Meta.http_status == '404' && evt.Meta.http_path startsWith '/apps/files_sharing/publicpreview/'
    - evt.Parsed.request contains '/apps/files_sharing/publicpreview/'

 

 

Com sempre, sense oblidar reiniciar el servei de Crowdsec amb cada canvi de configuració.

 

 

Registrant Crowdsec contra el nostre servidor LAPI

 

api:
...
  server:
    enable: false
...

 

Hem de deshabilitar el LAPI local, editem el fitxer 'C:\ProgramDataCrowdSecconfigconfig.yaml'.

 

Ara ens registrem contra el servidor LAPI que tenim desplegat a la xarxa:

cscli lapi register -u http://DIRECCION_IP_CROWDSEC_LAPI:8080 --machine NOMBRE_MAQUINA

 

Al servidor LAPI podrem veure la petició de registre de la màquina Windows, llistem amb:

sudo docker exec -it crowdsec-crowdsec-1 cscli machines list

 

Acceptem la petició de registre i tornem a llistar per confirmar l'estat:

sudo docker exec -it crowdsec-crowdsec-1 cscli machines validate NOMBRE_MAQUINA

 

Ara el nostre Crowdsec a Windows comunicarà i llegirà del servidor LAPI qualsevol decisió, usant per tant el servidor central. Si la resta d'agents de Crowdsec farien el mateix, totes elles tindrien la mateixa informació en comú, i per tant, quan una màquina sospiti que una IP és malvada, la resta d'agents de Crowdsec ho sabran al moment.

 

Registrant el bouncer de Crowdsec contra el nostre servidor LAPI

I per finalitzar, hem de registrar també els bouncers que tinguem, en aquest cas el bouncer del firewall de Windows, si volem que aquest bouncer llegeixi del LAPI central, haurem de seguir aquests passos, així ho dit, quan algú o alguna cosa afegeixi una IP al LAPI central, aquest firewall de sistema operatiu farà una regla de denegació d' accés a l' esmentada IP maligna.

Des del servidor LAPI, podrem primer si volem llistar els bouncer que tenim registrats amb:

sudo docker exec -it crowdsec-crowdsec-1 cscli bouncers list

I per donar d'alta al bouncer del firewall d'aquest Windows executarem:

sudo docker exec -it crowdsec-crowdsec-1 cscli bouncers add NOMBRE_MAQUINA-FW

Anotem l'API Key que ens ha donat,

Al Windows, editem el fitxer C:\ProgramDataCrowdSecconfigbouncerscs-windows-firewall-bouncer.yaml i posem la IP del LAPI, el seu port i l'API Key que ens va donar el comandament anterior. Guardem el fitxer i reiniciem el servei “Crowdsec Windows Firewall Bouncer”.

I ja sortirà el FW de l'equip Windows registrat, ho verifiquem

sudo docker exec -it crowdsec-crowdsec-1 cscli bouncers list

I llest! Final! Ara jo crec que ja val, no? 🙂 Ja hem vist com desplegar Crowdsec per protegir un servidor de Windows, amb els seus serveis, així com algunes configuracions basiques, i la part de centralitzar-lo, espero que us hagi pogut servir d'alguna cosa, donar-li un poquet de carinyo a la vostra infraestructura amb aquest tipus de solucions, us comandament una salutació, esperant que us vagi molt bé, una abraçada,

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!!!

Sensor de llit a Home Assistant

31 d' October de 2024