Dashboards con Crowdsec: Metabase o Prometheus con Grafana
En este post veremos dos opciones de tener un seguimiento de nuestra infraestructura de Crowdsec, tendremos dos opciones, una sencillita, un contenedor de Docker con todo listo. O, porqué no, disfrutar de la vida e integrarlo en Prometheus y visualizarlo con Grafana!
Si queremos conocer el estado de nuestras máquinas con Crowdsec, lo mejor es realizarlo mediante GUI y que algunos dashboards ya hechos por la comunidad nos ayuden, lo dicho, tenemos dos opciones, una usar un contenedor de Docker con Metabase ya preconfigurado a conectar contra el LAPI local, algo sencillito y básico que puede servir. O podemos enviarle a un Prometheus las métricas de nuestros agentes y luego visualizarlo en Grafana, al gusto.
Metabase,
Necesitaremos Docker, si no lo tenemos instalado previamente:
sudo apt install docker.io -y
Y ejecutando ‘sudo cscli dashboard setup –listen 0.0.0.0’ lo desplegaremos:
sudo cscli dashboard setup --listen 0.0.0.0
? Metabase requires 1-2GB of RAM, your system is below this requirement continue ? Yes
? For metabase docker to be able to access SQLite file we need to add a new group called 'crowdsec' to the system, is it ok for you ? (Y/n) Y
INFO[12-11-2022 05:09:02 PM] Pulling docker image metabase/metabase:v0.41.5
.............................................................................................................................................
INFO[12-11-2022 05:09:32 PM] creating container 'crowdsec-metabase'
INFO[12-11-2022 05:09:38 PM] waiting for metabase to be up (can take up to a minute)
..............................
INFO[12-11-2022 05:11:50 PM] Metabase is ready
URL : 'http://0.0.0.0:3000'
username : '
cr******@cr******.net
'
password : 'xxxxxxxxxxxxxxxx'
Cuando arranque el contenedor de Metabase, ya podremos abrir un navegador a http://DIRECCION_IP:3000
Este sería el Home, donde directamente ya vemos la conexión a Crowdsec, y 3 paneles, con la lista de las decisiones activas, un histórico de las alertas o un dashboard general.
Dashboard de CS – Actives Decisions List,
Dashboard de CS – Alert History,
Dashboard de CS – Main Dashboard.
Luego el Dashboard podremos pararlo, arrancarlo o eliminarlo:
sudo cscli dashboard stop sudo cscli dashboard start sudo cscli dashboard remove --force
Prometheus + Grafana,
En cada agente de Crowdsec, en su fichero de configuración ‘/etc/crowdsec/config.yaml’, deberemos habilitar Prometheus, indicaremos un puerto de escucha por el que ofreceremos las métricas, quedando algo así:
prometheus: enabled: true level: full listen_addr: 0.0.0.0 listen_port: 6060
Y recargamos Crowdsec para que aplique los cambios anteriores:
sudo systemctl restart crowdsec
Para probar que esto funciona, podemos tirar un curl a dicho puerto, desde la propia máquina o una remota, desde shell ejecutamos ‘curl http://DIRECCION_IP:6060/metrics’ para validar:
curl http://192.168.x.xxx:6060/metrics # HELP cs_active_decisions Number of active decisions. # TYPE cs_active_decisions gauge cs_active_decisions{action="ban",origin="CAPI",reason="crowdsecurity/CVE-2022-xxxxx"} 16 cs_active_decisions{action="ban",origin="CAPI",reason="crowdsecurity/CVE-2022-xxxxx"} 2 cs_active_decisions{action="ban",origin="CAPI",reason="crowdsecurity/CVE-2022-xxxxx"} 2 cs_active_decisions{action="ban",origin="CAPI",reason="crowdsecurity/CVE-2022-xxxxx"} 669 cs_active_decisions{action="ban",origin="CAPI",reason="crowdsecurity/apache_log4j2_cve-xxxxx"} 11 cs_active_decisions{action="ban",origin="CAPI",reason="crowdsecurity/fortinet-cve-xxxxx"} 237 cs_active_decisions{action="ban",origin="CAPI",reason="crowdsecurity/grafana-cve-xxxxx"} 27 cs_active_decisions{action="ban",origin="CAPI",reason="crowdsecurity/http-backdoors-attempts"} 101 cs_active_decisions{action="ban",origin="CAPI",reason="crowdsecurity/http-bad-user-agent"} 3632 ...
Ahora ya en nuestro servidor de Prometheus ya podremos añadir las métricas de cada agente de Crowdsec, en su fichero de configuración lo indicamos ‘/usr/local/bin/prometheus/prometheus.yml’
... scrape_configs: ... - job_name: 'crowdsec_OS-GRA-04' static_configs: - targets: ['192.168.x.xxx:6060'] labels: machine: 'OS-GRA-04' - job_name: 'crowdsec_OS-JITSI-05' static_configs: - targets: ['192.168.x.xxx:6060'] labels: machine: 'OS-JITSI-05' ...
Y reiniciaríamos Prometheus para que pueda leer ya los datos de nuestros Crowdsec!
sudo service prometheus restart
Si no tenemos el conector contra el Prometheus desde Grafana, lo hacemos, creamos el Data Source.
Podremos descargar de https://github.com/crowdsecurity/grafana-dashboards unos dashboards ya preconfigurados, así que simplemente descargamos el fichero JSON y lo importamos en Grafana. Este sería el dashboard con los detalles por máquina agente o ‘Crowdsec Details per Machine’.
Dashboard de Crowdsec Insight, un vistazo breve.
Y este último ‘Crowdsec Overview’ a modo resumen,
Bueno, pues espero que os haya resultado interesante o al menos curiosa la manera tan simple de conocer el estado de nuestras máquinas con Crowdsec.
Un abrazo!