Crowdsec Linux makina batean desplegatuz

Crowdsecekin jarraitzen dugu! aurreko dokumentuetan oinarrizko kontzeptuak eta nola ezarri zentralizatuta eta baita Windows-en ere ikusi genituen, beraz, gaur Crowdsec agentea Linuxeko gailu batean nola instalatu behar dugun ikusiko dugu, kanpoko mehatxuetatik babesteko.

 

Pentsa dezakezuen moduan, instalazioa makina erabiltzen duen banaketaren mende egongo da, dokumentu hau Ubuntu Server-en instalazioan oinarrituko da, Nginx bat dudala gogoratzen dut web orri bat zerbitzatzen. Beraz, ekin diezaiogun, ohikoena da, Linux zerbitzari batean egingo dugula ulertzea, zerbitzu bat argitaratua duena eta babestu nahi duguna; eta horrez gain beti ez dela Interneten argitaratuta egon behar. Comenzaremos instalándole el Crowdsec Security Engine, que es el agente que se encargará procesar sus logs, tomar sus decisionesseguido le instalaremos el bouncer (o componente de remediación) para su firewall de Linux, de su SO (iptables en este caso), por si nos interesa que actúe y pueda dar de alta reglas en él, bloqueando accesos temporales a direcciones IP malvadas. Y acabaremos registrándolo en la Consola de Crowdsec.

Con eso lo tendremos casi, ya que el post continuará, será opcional, pero si vas a querer una gestión centralizada, deberás de realizar algunos pasos adicionales; y eso es, una decisión tuya. Si te necesitas, debes leerte antes el post previo.

Este post tiene la siguiente estructura:

 

 

Instalación del Agente de Crowdsec

 

Esan dut, instalazio hau Ubuntu Server batean oinarritzen da, beste banaketa bat baduzu, begiratu honek web ofiziala. Hasi dezagun Crowdsec-en biltegi ofizialak instalatzen bidez:

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

 

Eta Crowdsec instalatzen dugu, jakina den bezala, makinan erabil dezakegun zerbitzuak detektatuko ditu eta babeserako bildumak deskargatuko dizkigu, has gaitezen:

sudo apt install crowdsec

 

 

Crowdsec Firewall iptables-en bouncer-a instalatzea

 

Crowdsec agentea instalatuta dugunean, jakin behar dugu bouncer bat instalatzen ez badugu ezin izango dugula ekintzarik egin makinan, beraz, instalatuko dugu konponbide osagai hau, nire kasuan Ubuntu erabiltzen dudanez, iptables erabiltzen dut, beraz, aurrera goaz haren instalazioarekin:

sudo apt install crowdsec-firewall-bouncer-iptables

 

 

Crowdsec Kontsolara erregistratzea

 

Imajinatzen dut dagoeneko kontu bat edukiko dugula https://app.crowdsec.net badakigu sortu dezakegula kontua GUI kontsola batetik Crowdsec guztiak modu zentralizatuan kudeatzeko, ez da derrigorrezkoa, eta Community bertsio bat dugu, honekin ere gauza asko egin daitezke, horien artean, makinen alerta ikusi, haien egoera, blocklist ezberdinetara harpidetu ditzakegu…. Beraz, jarraitzen dugu gure Crowdsec gehituz, instalazioa Linux honetan. Exekutatu beharreko komandoa kopiatu.

 

Eta sistemako kontsola batean itsatsi, ejecutamos:

sudo cscli console enroll xxxxxxxxxxxxxxxxxx

 

Volvemos a la Consola de Crowdsec y aceptamos el enroll,

 

 

Sobre el Engine recién añadido, le editamos el nombre y le pondremos uno que nos haga referencia a quién es,

 

Habitualmente, indicamos el nombre de la máquina, eta ematen diogu “Eguneratu”,

 

Eta nahi badugu, lo siguiente pueda ser añadirle algunos blocklists, horretarako, podemos pulsar sus “Blocklists”,

 

Si ya estamos suscrito a algún blocklist, podremos seleccionarlo desde “Manage”

 

Y pulsar sobre “Add Security Engine” para añadir esta máquina a esta blocklist,

 

 

Elegimos un tipo de acción y confirmamos. Máquina suscrita!

Recordar que tras registrar Crowdsec contra la Consola hay que reiniciar el servicio de Crowdsec que tenemos.

sudo systemctl restart crowdsec

 

 

Bildumak

 

Como ya sabemos. por defecto Crowdsec cuando se instala en una máquina escanea en busca de los servicios que tenemos instalados y los intenta proteger, kasu honetan, en mi Linux sólo me ha detectado el de la base, edo, bestela, el del SO y el del SSHd. Si tuviera un Nginx por ejemplo me hubiera instalado sus colecciones, o para Grafanapara listar las colecciones:

sudo cscli collection list

 

Podremos buscar más colecciones en su Hub, colecciones realizadas por ellos o por la comunidad, que puedan proteger otros servicios que dispongamos, como si por ejemplo hemos instalado Nginx a posteriori y queremos su colección, ejecutaremos:

cscli collections install crowdsecurity/nginx

 

Y deberíamos añadir en su fichero de adquisiciones ‘/etc/crowdsec/acquis.yamlel contenido de abajo, no os preocupéis que en el Hub viene detallado en cada caso qué hay que hacer, corregimos los paths de los logs de Nginxy quedaría también el servicio protegido.

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

 

Así como por ejemplo si este Nginx en este Ubuntu sirve Nextcloud, pues también le deberíamos meter su colección, y así integrar y evitar cualquier acceso indebido, leerá y tratará los logs de Nextcloud para luego tomar decisiones.

cscli collections install crowdsecurity/nextcloud

 

Y añadimos al fichero adquis.yaml lo siguiente (insisto esto lo tenéis documentado en el Hub):

filenames:
 - /var/log/nextcloud/nextcloud.log
labels:
  type: Nextcloud
---

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

 

Recordar reiniciar el servicio de Crowdsec cuando hayáis hecho algún cambio sustancial:

sudo systemctl restart crowdsec

 

 

Zerrenda zuriak

La lista blanca como ya conocemos nos servirá para que podamos excluir por ejemplo una dirección IP de que pueda ser baneada o bloqueada por Crowdsec, habitualmente puedan ser las direcciones IP de algún puesto de control, equipo de salto, eta abar… Así como entre otras también podremos excluir países, adibidez.

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 fichero lo encontraremos en '/etc/crowdsec/hub/parsers/s02-enrich/crowdsecurity/whitelists.yaml', y veremos que podremos añadir sencillamente cualquier IP o rango IP en la lista blanca de exclusiones.

Si queremos excluir países, debemos instalar antes el parser geoip-enrich que nos alimentará los logs con datos de geolocalización, como por ejemplo países, ciudades o coordenadas GPS:

cscli parsers install crowdsecurity/geoip-enrich

Y bastará con añadir la siguiente expresión en el fichero de lista blanca:

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

Recordar al finalizar reiniciar el servicio de Crowdsec para recargar estos cambios.

sudo systemctl restart crowdsec

Jakinarazpenak

 

notifications:
  - slack_default
  - splunk_default
  - http_default
  - email_default

Jakinarazpenak gaituko ditugu '/etc/crowdsec/profiles.yaml' fitxategia editatuz, non deskomentatu eta gure interesa duten jakinarazpen motak aukeratu ditzakegun, Splunk-era izan daitezke, Slack-era, posta elektroniko bidez, edo HTTP bidez (adibidez Telegram).

 

Adibidez posta jakinarazpenak nahi baditugu, '/etc/crowdsec/notifications/' direktorioan’ email.yaml fitxategia editatuko genuke (edo slack.yaml edo splunk.yaml edo http.yaml), non gure posta zerbitzariaren parametroak konfiguratu ditzakegun. Telegramekoak post batean ikusi genituen zaharkitua.

 

 

Probatzen

Amaituko dugu probatuz, ezta?? bestela nola sinetsi honek funtzionatuko duenik? 🙂 Sartutako akatsen probak egin ditzakezue nahi duzuen moduan, edo ahulgune eskaneatzaile batekin balioztatu, edo webguneko baten bidez… en ese documento viejuno tenéis un ejemplo con nikto.

Podéis ver las decisiones que ha tomado vuestra máquina con:

cscli decisions list

En este caso ha baneado la dirección IP 192.168.1.122 por que le he puesto un escaner de vulnerabilidades a checkearlo y enseguida le ha detectado que estaba rastreando cosas que no debe…

O desde el servidor LAPI si es que lo hemos registrado (que es lo que viene a continuación)

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

Si ya hemos desplegado el Crowdsec Mirror, podremos verificar que la dirección IP baneada sale en la URL donde publicamos nuestra blocklist http://DIRECCION_IP_CROWDSEC_MIRROR:41412/security/blocklist

Si queremos banear una dirección IP, lo haremos con:

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

Si queremos desbanear una dirección IP, lo haremos con:

cscli decisions delete --ip DIRECCIÓN_IP

Podremos investigar las alertas que hemos tenido con:

cscli alert list

Con el comando anterior las listamos, y ahora seleccionando el ID de una alerta en particular y podremos saber qué fichero de log la generó, qué estaba haciendo, el path, el estado http… en este caso de la imagen son muchos 404 al path /apps/files_sharing/publicpreview/

cscli alert inspect ID_ALERTA [-d]

Y, si es que lo necesitamos, crear nuestro propio fichero de Whitelist para hacer exclusiones en casos de falsos positivos, pej en '/etc/crowdsec/parsers/s02-enrich/whitelist-permite-pdfs.yaml, pudiendo usar estas expresiones de ejemplo para hacer los filtros de exclusión:

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

Betiko moduan, ahaztu gabe Crowdsec zerbitzua berrabiarazi konfigurazio-aldaketa bakoitzarekin.

Crowdsec gure LAPI zerbitzarian erregistratzea

 

api:
...
  zerbitzaria:
    gaitu: false
...

 

Tokiko LAPIa desgaitzeko beharra dugu, ‘/etc/crowdsec/config.yaml’ fitxategia editatuz, enable false gehitzen diogu.

 

Ondoren, gure sarean ezarritako LAPI zerbitzariarekin erregistratzen gara:

sudo cscli lapi register -u http://CROWDSEC_LAPI_IP_HELBIDEA:8080 --machine MAKINA_IZENA

 

LAPI zerbitzarian Linux makina-erregistro eskaera ikus dezakegu, zerrendatzen dugu:

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

 

Onartzen dugu erregistro-eskaera eta berriz zerrendatzen dugu egoera egiaztatzeko:

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

 

Orain gure Crowdsec Linux-en LAPI zerbitzaritik edozein erabaki komunikatuko eta irakurriko du, Beraz, zerbitzari zentralarekin erabiliz. Crowdsec-eko gainerako agenteek berdina egingo balute, denek informazio bera izango lukete komunean, eta beraz, makina batek IP bat gaiztoa izan daitekeela susmatzen duenean, Crowdsec-eko gainerako agenteek momentuan jakinen dute.

 

Beti gogoratu Crowdsec berrabiaraztea edozein aldaketa egin ondoren:

sudo systemctl restart crowdsec

 

 

Crowdsec bouncer-a gure LAPI zerbitzarian erregistratzea

Eta amaitzeko, guk ditugun bouncer-ak ere erregistratu behar ditugu, kasu honetan Ubuntu firewall-eko bouncer-a, iptables-erako; bouncer horrek LAPI zentraletik irakurtzea nahi badugu, pauso hauek jarraitu behar ditugu, Hortaz, esan duguna bezala, norbaitek edo zerbait LAPI zentralera IP bat gehitzen duenean, este firewall de sistema operativo hará una regla de denegación de acceso a dicha IP maligna.

Desde el servidor LAPI, podremos primero si queremos listar los bouncer que tenemos registrados con:

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

Y para dar de alta al bouncer del firewall de este Ubuntu, ejecutaremos:

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

Anotamos la API Key que nos ha dado,

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

Editamos el fichero /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml y ponemos la IP del servidor LAPI, su puerto y la API Key que nos dio el comando anterior. Guardamos el fichero y reiniciamos el servicio del bouncer del firewall:

sudo systemctl restart crowdsec-firewall-bouncer

Y ya saldrá el FW del equipo Ubuntu registrado, lo verificamos con:

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

Espero que os haya resultado interesante, quería hacer una guía de 3 documentos base y con esto queda zanjado, ya hemos aprendido a instalar Crowdsec en un equipo Linux, en un Windows, y hemos generado una gestión centralizada donde todos los agentes hablan entre sí y se chivan si hay algún atacante, además con listas publicadas a los firewall perimetrales o internos para que puedan bloquear ellos también y aislar a cualquier posible atacante. Pues lo de siempre, se va haciendo tarde, mirar que horas😉 ¡que tengáis muy buena semana!

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