Desplegando Crowdsec de manera centralizada

Nola pasatzen den denbora… dagoeneko bi urte dira Crowdsec-i buruz lehenengo aldiz hitz egin genuela… Asmoa daukat bere ezarpen aukerei buruzko dokumentu eguneratu batzuk egitea, oso erakargarria den produktua delako gure erakundeak mehatxuetatik babesteko eta aukeraketa interesgarri ugari eskaintzen dizkigulako.

En anteriores posts quizá más detallados ya describimos las posibilidades de Crowdsec, pero por hacer una introducción para los que no lo conozcan, es un software que se puede instalar en distintos tipos de máquinas, con SO Windows, Linux… Y el objetivo es proteger dicha máquina (o tu red), leyendo los logs de la máquina tomará decisiones, como pueda ser banear la IP que le ha realizado un intento de ataque, o alguien se haya validado mal, eta abar…

Son varios componentes, tiene un agente que procesa los logs de la máquina, de los servicios que corra, como por ejemplo puedan ser del visor de sucesos, de un IIS, Nginx, Apache, MariaDB, Exchange, Nextcloud, SMB, RDP… compara los logs con los distintos escenarios y envía las alertas al servicio LAPI (local API); que recibe las alertas y las convierte en decisiones (basándonos en las protecciones que hayamos configurado). Y luego tenemos el bouncer (edo erremediazio osagaia), que consulta las decisiones al LAPI y las aplica; por ejemplo el bouncer del firewall, que creará reglas en el FW del SO denegando el acceso a la dirección IP que ha generado un ataque.

En principio aunque parezca lo contrario es muy sencillo, se instalan todos los componentes juntos al instalar el Agente de Crowdsec (o Engine). Al instalarse el Crowdsec en un Windows o en un Linux detectará los servicios que corre la máquina, y por tanto ya quedarán protegidos, si es un Linux y tiene (adibidez) un Nginx ya leerá y tratará los logs del SO, así como los del propio Nginx, buscando patrones que detecten el intento de abuso por parte de vulnerabilidades, escaneos, accesos no debidosAdemás se podrán añadir otros tipos de ‘coleccionespara leer otro tipo de logs, por si en ese Nginx corre un Nextcloud, y queremos que Crowdsec trate también los logs de Nextcloud

Esan dut, es sencillo, es nuevo si no lo conoces, pero está muy bien planteado, si lo instalamos en un Windows Server, ídem, detectará si tenemos por ejemplo un IIS instalado, o un SQL Servery según instalemos el Agente de Crowdsec detectará patrones en los logs del visor de sucesos para protegernos. Eta esan bezala, si ese IIS corre algún servicio en particular, pues también podremos protegerlo, sea por ejemplo un Exchange (tanto OWA como SMTP) pudiendo leer sus logs específicos.

Lo que nos quedaría es poder aplicar las acciones, que si lee algo que no le gusta en un log, actúe. Para ello, habitualmente en Windows y Linux necesitamos instalar posteriormente el bouncer del firewall, esandakoa, para que este componente de remediación pueda crear una regla en el firewall del sistema operativo, del Windows o del Linux, una regla temporal, de denegación, bloqueando el acceso de la dirección IP atacante.

Así tenemos protegidas nuestras máquinas Windows o Linux, pero entre ellas no se hablan, y sería interesante que se puedan comunicar entre ellas. Así que este paso es opcional, quizá para entornos pequeños, pero por supuesto totalmente recomendado para cualquier organización. Podremos crear fácilmente en un contenedor de Docker un servidor de Crowdsec, por decir, este servidor compartirá mediante LAPI una base de datos centralizada con todas las decisiones, Zergatik?? Por si nos interesa que si una máquina recibe un ataque, el resto de máquinas Crowdsec se enteren y efectúen una acción, como sea protegerse y banear una dirección IP en particular, todas a la vez. Y otro de los contenedores maravillosos que desplegaremos es Crowdsec blocklist mirror, pura magia, este contenedor publicará en una URL la lista negra que comparten todas las máquinas de Crowdsec. ¿Para qué? Para poder acceder a ella desde nuestros firewalls internos o perimetrales tipo Fortigate, CheckPoint, pfSense… y hacer reglas de denegación, entre redes, desde la WAN… y aislar directly a los atacantes a otro nivel.

Onena, tras esta parrafada, y ya siendo la brasa, el documento de hoy está basado en cómo desplegar esta última parte que hemos hablado, zentraleko azpiegitura ezarri dezagun, kontainerrak ezarri ditzagun eta etorkizunean beste dokumentu batzuetan ikusiko dugu Crowdsec nola instalatu Windows-en eta nola babestu, zentralizatuta edo ez; Linux bat bezalaxe.

Crowdsecen ezarpena multi-zerbitzari ingurunean

mkdir crowdsec
cd crowdsec

Adibidez Ubuntu Server batean hasten gara, bere FQDNarekin, helbide IP estatiko batekin, NTP ondo konfiguraturik, eguneratua eta Docker instalatuta. Ikus dezagun zenbat azkar ezartzen diren bi kontainer hauek. Direktorio bat sortzen dugu, sartzen gara, eta hasten gara. docker-compose.yml fitxategia hurrengo edukiarekin sortuko dugu:

version: '3'

zerbitzuak:
  crowdsec:
    image: crowdsecurity/crowdsec
    berrabiarazi: beti
    portuak:
      - '8080:8080'
      - '6060:6060'
 volumes:
      - ./crowdsec-db:/var/lib/crowdsec/data/
      - ./crowdsec-config:/etc/crowdsec/

  crowdsec-blocklist-mirror:
    container_name: crowdsec-blocklist-mirror
    irudia: crowdsecurity/blocklist-mirror
    depends_on:
      - "crowdsec"
    ports:
      - 41412:41412
    volumes:
      - ./cfg.yaml:/etc/crowdsec/bouncers/crowdsec-blocklist-mirror.yaml

bolumenak:
  crowdsec-db:
  crowdsec-config:

Esan dut, bi edukiontzi martxan jarriko ditu, bat Crowdsec izango da, hasieran LAPI zerbitzari bezala jokatuko duena 8080 eta honetan 6060 interesa badago, metrikak igorriko ditu, 41412tcp portuan blocklist publikatzen duen edukiontzia izango dugu, mirror bat.

Edukiontziak deskargatu eta martxan jartzen ditugu:

sudo docker compose up -d

La primera vez, Blocklist-Mirror edukiontzia ez da abiatuko, API gakoak behar baititu, beraz, lehen bouncerra sortzen dugu, Blocklist-entzako:

sudo docker exec -it crowdsec-crowdsec-1 cscli bouncers add BlocklistMirror

Ondo, Crowdsec edukiontzia gelditzen dugu eta konfigurazio fitxategia ezabatzen dugu, ondoren berriro sortzeko.

sudo docker stop crowdsec-crowdsec-1
rm -rf cfg.yaml/

Eta 'nano cfg.yaml' erabiliz sortzen dugu’ konfigurazio fitxategia, hau bezalakoa izan behar duena, kontuan hartu behar duzu Crowdseci eskatu diogun API gakoa adierazi behar duzuela eta LAPI zerbitzua argitaratuko dugun IP helbidea adierazi. Era berean, Blocklist-ean gehitu behar dira konektatuko diren eta blocklist URL-ra sartzeko aukera izango duten IP helbideak, adibidez gure kanpoko su-hesia.

config_version: v1.0
crowdsec_config:
  lapi_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  lapi_url: http://MAKINA_IP_HELBIDEA:8080
  update_frequency: 10s
  include_scenarios_containing: []
  exclude_scenarios_containing: []
  only_include_decisions_from: []
  insecure_skip_verify: false

blocklists:
  - format: plain_text # Onartutako formatuek hauetako edozein izan daitezke "plain_text"
    endpoint: /security/blocklist
    authentication:
      type: none # Onartutako motak hauetako edozein izan daitezke "none", "ip_based", "basic"
      user:
      password:
      trusted_ips: # IP tarteak, edo blocklist honetara sartzeko autentifikaziorik behar ez duten IPak
        - 127.0.0.1
        - ::1
        - 192.168.1.1

listen_uri: 0.0.0.0:41412
tls:
  cert_file:
  key_file:

metrics:
  enabled: true
 endpoint: /metrics

log_media: stdout
log_level: info

Ya podremos iniciar el contenedor de Crowdsec de nuevo y el del Blocklist-Mirror finalmente, exekutatuz:

sudo docker start crowdsec-crowdsec-1
sudo docker restart crowdsec-blocklist-mirror

Probamos que podemos acceder a la URL de la blocklist desde: http://MAKINA_IP_HELBIDEA:41412/security/blocklist

Inscribirlo en la CrowdSec Console

Será totalmente commendable darnos de alta en https://app.crowdsec.net y registrar en nuestra cuenta de Crowdsec Console. Desde aquí podremos visualizar el estado de nuestros Agentes o Engine de Crowdsec, podremos suscribirlas a otras listas negras de la comunidad, gestionar las alertas, históricos… Para dar de alta nuestros Crowdsec, lo haremos desde la web, “Security Engine” > “Engines” > “Add Security Engine”, nos saldrá un desplegable que copiaremos y ejecutaremos en nuestro servidor de Crowdsec (por llamarlo de alguna manera).

Y lo ejecutamos, en este caso modificamos un poco el comando ya que lo ejecutaremos mediante Docker:

sudo docker exec -it crowdsec-crowdsec-1 cscli console enroll -e context xxxxxxxxxxxx

Volvemos a la Consola de Crowdsec (y si no lo vemos, F5), nos saldrá que ha detectado nuestra solicitud de registro, sustatu “Acept enroll”,

Una vez la tenemos ya en el inventario, podremos primeramente editarle el nombre para reconocerla mejor, sobre ella “Edit name or tags”,

Le ponemos su nombre de máquina y pulsamos en “Eguneratu”,

Podemos seguir si queremos por suscribirla a ciertas Blocklists que nos ofrece Crowdsec, la comunidad… así la máquina estará protegida de ciertas redes de bots, malvadas… horretarako, klikatu “Blocklist” donde vemos que esta suscrita a 0,

Sakatu on “Browse available blocklists”,

Y aquí nos saldrán una serie de listas, podremos escoger hasta 3 doan Community mota duen kontuarekin, zerrenden mota hauta dezakegu, gehiago gustatzen zaizkigun, behar dugun… horietako bakoitzari buruz, sakatuko dugu “Manage”,

Eta “Add Security Engine”,

Hemen Crowdsec agentzia instalaturik duten makinak ikusiko ditugu, harpidetzeko makina hautatzen dugu eta ekintza mota, IPari ukatzea edo sarbidean Captcha eskatu. “Harpidetza Konfirmatu”.

Lehenik eta behin hemen utziko dugu dokumentua, gutxi gorabehera egoera nagusia gelditu dela esan dezakegu, LAPI zerbitzuak Crowdsec-en gainerako Engines-entzat eskaintzen dituen makina edo gure perimetroko suteen hormetako zerrenda beltza. Hurrengo urratsak Crowdsec agentziak behar dugun lekuetan ezartzea izango dira, eta interesatzen bazaigu, pues los integramos a esta instalación y así entre ellos podrán tomar decisiones conjuntas.

Espero que os pueda aportar algo, aclarar si alguno tenía dudas o no lo conocía, o le apetece implementarlo en un LAB e ir probando soluciones como estas, fáciles, sencillas, familia osoarentzat. Y que aportemos seguridad y nos anticipemos a sustos… Pues que eso, ez? Ya sabéis, que me piro vampiro, que espero que os vaya MUY bien, besarkadak!

Izenburuko mezuak

Egilea

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, ez zalantzarik izan nirekin harremanetan jartzeko, ahal duzun guztietan laguntzen saiatuko naiz, partekatu ahal dudan guztietan ;) . Dokumentuez gozatu!!!