Desplegant Crowdsec en una màquina Linux

Seguim amb Crowdsec! ja vam veure en documents anteriors els conceptes bàsics i com desplegar-lo de manera central i fins i tot en un Windows, així que avui veurem els passos que hem de seguir si volem instal·lar l'agent de Crowdsec en un equip amb Linux per protegir-lo d'amenaces externes.

 

Com imaginareu, la instal·lació dependrà de la distribució que usi la màquina, aquest document estarà basat en la instal·lació en un Ubuntu Server, que té crec recordar un Nginx servint alguna pàgina web. Així que hi anem, habitualment, s'entén que ho farem en un servidor Linux, que tingui algun servei publicat i vulguem protegir; i no per això obligatòriament hagi d' estar a Internet publicat. Començarem instal·lant-li el Crowdsec Security Engine, que és l' agent que s' encarregarà processar els seus logs, prendre les seves decisions… seguit li instal·larem el bouncer (o component de remediació) per al seu firewall de Linux, del seu SO (iptables en aquest cas), 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ò ho tindrem gairebé, ja que el post continuarà, serà opcional, però si vas a voler una gestió centralitzada, hauràs de realitzar alguns passos addicionals; i això és, una decisió teva. Si et necessites, has de llegir-te abans el post previ.

Aquest post té la següent estructura:

 

 

Instal·lació de l'Agent de Crowdsec

 

El que s'ha dit, aquesta instal·lació està basada en un Ubuntu Server, si tens una altra distribució, échale un vistazo a la web oficial. Comencem instal·lant els repositoris oficials de Crowdsec mitjançant:

curl -s https://install.crowdsec.net | sudo sh

 

E instalamos Crowdsec, que com sabem ja, detectarà els serveis que podem estar fent servir a la màquina i ens descarregarà també les seves col·leccions per protegir-los, comencem:

sudo apt install crowdsec

 

 

Instal·lació del bouncer de Crowdsec Firewall iptables

 

Un cop instal·lat l'agent de Crowdsec també sabem que si no instal·lem un bouncer no podrem realitzar accions en aquesta màquina, així que instal·larem aquest component de remediació, en el meu cas en ser Ubuntu ús iptables, així que procedim a la seva:

sudo apt install crowdsec-firewall-bouncer-iptables

 

 

Registrant Crowdsec contra la Consola de Crowdsec

 

Imagino que ja tindrem un compte en https://app.crowdsec.net sabem que 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 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 Linux. Ens copiam el comandament que hem d'executar.

 

I ho enganxem en una consola del sistema, executem:

sudo cscli console enroll xxxxxxxxxx

 

Tornem a la Consola de Crowdsec i acceptem l'enroll,

 

 

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, i li donem a “Update”,

 

I si volem, el següent pugui ser afegir-hi alguns blocklists, per a això, podem polsar els seus “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 Crowdsec que tenim.

sudo systemctl restart crowdsec

 

 

Col·leccions

 

Com ja sabem. 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 Linux només m'ha detectat el de la base, o sigui, el del SO i el del SSHd. Si tingués un Nginx per exemple m'hagués instal·lat les seves col·leccions, o per a Grafana… per llistar les col·leccions:

sudo cscli collection 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 hem instal·lat Nginx a posteriori i volem la seva col·lecció, executarem:

cscli collections install crowdsecurity/nginx

 

I hauríem d'afegir en el seu fitxer d'adquisicions '/etc/crowdsec/acquis.yaml’ el contingut de baix, no us preocupeu que al Hub ve detallat en cada cas què cal fer, corregim els paths dels logs de Nginx… i quedaria també el servei protegit.

filenames:
  - /var/log/nginx/access.log
  - /var/log/nginx/error.log labels:
  type: nginx
---

 

Així com per exemple si aquest Nginx en aquest Ubuntu serveix Nextcloud, doncs també li hauríem de posar la seva col·lecció, i així integrar i evitar qualsevol accés indegut, llegirà i tractarà els logs de Nextcloud per després prendre decisions.

cscli collections install crowdsecurity/nextcloud

 

I afegim al fitxer adquis. (insisteixo això ho teniu documentat al Hub):

filenames:
 - /var/log/nextcloud/nextcloud.log labels:
  type: Núvol següent
---

source: journalctl journalctl_filter:
  - "SYSLOG_IDENTIFIER = Nextcloud"
labels:
  type: syslog
---

 

Recordar reiniciar el servei de Crowdsec quan hauríeu fet algun canvi substancial:

sudo systemctl restart crowdsec

 

 

Llista blanca

La llista blanca com ja coneixem ens servirà perquè puguem excloure per exemple una adreça IP que pugui ser xadejada 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 '/etc/crowdsec/hub/parsers/s02-enrich/crowdsecurity/whitelists.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.

sudo systemctl restart crowdsec

Notificacions

 

notifications:
  - slack_default
  - splunk_default
  - http_default
  - email_default

Podrem habilitar notificacions editant el fitxer '/etc/crowdsec/profiles.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 '/etc/crowdsec/notifications/’ 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.122 perquè li he posat un escaner de vulnerabilitats a checkejar-lo i asseguda li ha detectat que estava rastrejant coses que no ha de…

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 en '/etc/crowdsec/parsers/s02-enrich/whitelist-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, editant el fitxer '/etc/crowdsec/config.yaml', li afegim l'enable false.

 

A continuació ens registrem contra el servidor LAPI que tenim desplegat a la xarxa:

sudo 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 Linux, 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 Linux 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.

 

Recordar sempre reiniciar Crowdsec després de qualsevol modificació:

sudo systemctl restart crowdsec

 

 

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 l'Ubuntu, per a iptables; 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 Ubuntu, executarem:

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

Anotem l'API Key que ens ha donat,

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

Editem el fitxer /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml i posem la IP del servidor LAPI, el seu port i l'API Key que ens va donar el comandament anterior. Guardem el fitxer i reiniciem el servei del bouncer del firewall:

sudo systemctl restart crowdsec-firewall-bouncer

I ja sortirà el FW de l'equip Ubuntu registrat, ho verifiquem amb:

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

Espero que us hagi resultat interessant, volia fer una guia de 3 documents base i amb això queda rascat, ja hem après a instal·lar Crowdsec en un equip Linux, en un Windows, i hem generat una gestió centralitzada on tots els agents parlen entre si i s'aixequen si hi ha algun atacant, a més amb llistes publicades als firewalls o interns perquè puguin bloquejar ells també i aïllar qualsevol possible atacant. Doncs el de sempre, es va fent tard, mirar que hores… 😉 que teniu molt bona setmana!

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