De qué manera modificar una instalación multiservidor de CrowdSec

por calpee

Introducción

CrowdSec es una solución de seguridad colaborativa y de código abierto desarrollada para resguardar los servicios, servidores, contenedores o máquinas virtuales de Linux expuestos a Internet con un agente del lado del servidor. Es una versión actualizada de Fail2ban que fue una fuente considerable de inspiración para los creadores del emprendimiento.

CrowdSec es gratis (bajo una licencia del MIT) y el código fuente está libre en GitHub. La solución se apoya en un motor de análisis de accionar de IP apoyado en protocolos para advertir asaltos. En el momento en que el agente de CrowdSec descubre un ataque, da múltiples géneros de medidas correctivas para llevar a cabo en frente de la IP esconde tras él (bloqueo de ingreso, Captcha, autenticación 2FA, etcétera.). El informe está alojado en la interfaz y, si es legítimo, se comparte con la red social de CrowdSec a fin de que los individuos asimismo logren resguardar sus activos de esta dirección IP.

Meses atrás añadimos ciertas peculiaridades atrayentes a CrowdSec con la publicación de v1.0.x. Entre los mucho más atrayentes es la aptitud del agente de CrowdSec para accionar como una API HTTP REST para catalogar señales de otros agentes de CrowdSec. En consecuencia, es compromiso de ese agente particularmente guardar y comunicar las señales compendiadas. En este momento vamos a llamar a este agente particularmente el servidor LAPI.

Otra característica a estimar es que la mitigación de peligros ahora no requiere celebrarse en exactamente el mismo servidor que la detección. La restricción de daños se efectúa con gorilas. Los porteros se fundamentan en la Interfaz de programación de aplicaciones HTTP REST proporcionada por el servidor LAPI.

Puertas

En el artículo describimos de qué forma llevar a cabo CrowdSec en una configuración de múltiples servidores con una señal de recurso compartido de servidor.

Infografía de objetivos de CrowdSec

Las dos cosas server-2 y server-3 están premeditados a servicios de hosting. Puede preguntar nuestro centro para saber qué servicios de CrowdSec tienen la posibilidad de asistirlo con la seguridad. Finalmente, más allá de que no menos esencial, server-1 cobijará los próximos servicios locales:

  • la Interfaz de programación de aplicaciones local requerida por los gorilas

  • la banco de información, que es alimentada por los tres agentes locales de CrowdSec y el servicio de lista de bloqueo de CrowdSec on-line. De qué forma server-1 sirve a la Interfaz de programación de aplicaciones local, lo llamamos servidor LAPI.

Decidimos emplear un backend de Postgresql para la banco de información de CrowdSec para aceptar la alta disponibilidad. Este tema se tratará en productos futuros. Si la alta disponibilidad no está bien para usted, puede omitir el paso 2.

Este producto asimismo cubre la defensa contra asaltos contra servicios alojados en server-2 y server-3 con los gorilas de CrowdSec.

Este producto es el primero de una serie.

requisitos

  • 2 servicios de hosting de servidor Ubuntu 20.04 precargados en Internet. De ahora en adelante nos referiremos a estos servidores como server-2 y server-3 .

  • Un servidor Ubuntu 20.04 preinstalado que no está conectado a Internet. De ahora en adelante vamos a denominar este servidor por server-1. sospechar que server-1La dirección IP de es 10.0.0.1. (No hay conexión a Internet en este servidor no es un requisito obligación).

  • Una red local que conecta los tres servidores.

Paso 1: Instale CrowdSec

Instalemos CrowdSec en todos y cada servidor siguiendo la guía de instalación de CrowdSec.

wget -qO - https://s3-eu-west-1.amazonaws.com/crowdsec.debian.pragmatic/crowdsec.asc |sudo apt-key add - && echo "deb https://s3-eu-west-1.amazonaws.com/crowdsec.debian.pragmatic/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee /etcétera/apt/sources.list.d/crowdsec.list > /dev/null

sudo apt update


sudo apt install crowdsec

En este momento poseemos tres instalaciones estándar de CrowdSec en ejecución.

Paso 2 (opcional): cambie el backend de la banco de información a postgresql en el servidor-1

sudo apt install postgresql

Primero requerimos conectarnos a la banco de información como usuario de postgres.

sudo -i -u postgres

psql

Merced a la documentación de Postgresql Crowdsec, en este momento tenemos la posibilidad de inicializar la banco de información.

postgres=# CREATE DATABASE crowdsec;

CREATE DATABASE

postgres=# CREATE USER crowdsec WITH PASSWORD 'CREATE USER crowdsec WITH PASSWORD '';

postgres=# CREATE USER crowdsec WITH PASSWORD '';

CREATE ROLE

postgres=# GRANT ALL PRIVILEGES ON DATABASE crowdsec TO crowdsec;

GRANT

En este momento informe a CrowdSec sobre este nuevo backend de banco de información. Para llevar a cabo esto, requerimos actualizar la sección db_config del fichero /etcétera/crowdsec/config.yaml.

db_config:

  log_level: info

  type: postgres

  usuario: crowdsec

  password: ""

  db_name: crowdsec

  host: 127.0.0.1

  port: 5432

Tras regresar a registrar la PC local en la banco de información, tenemos la posibilidad de reiniciar CrowdSec:

sudo cscli machines add -a

sudo systemctl restart crowdsec

Paso 3: Informe el servidor 2 y el servidor 3 al servidor LAPI

Debemos modificar CrowdSec primero server-1 admitir conexiones de server-2 y server-3. Asegúrese de que su cortafuegos deje conexiones desde server-2 y server-3 en el server-1desde el puerto 8080.

Configuremos el servidor API en server-1 Página. Para realizar esto, los dos debemos cambiar /etcétera/crowdsec/config.yaml y /etcétera/crowdsec/local_api_credentials.yaml.

Hacia /etcétera/crowdsec/config.yaml, en este momento es la sección de la Interfaz de programación de aplicaciones la que debe mudarse. Sencillamente actualice la dirección IP de escucha de localhost a la dirección IP local:

api:

  client:

    insecure_skip_verify: false

    credentials_path: /etcétera/crowdsec/local_api_credentials.yaml

  server:

    log_level: info

    listen_uri: 10.0.0.1:8080

    profiles_path: /etcétera/crowdsec/profiles.yaml

    online_client: # Crowdsec API credentials (to push signals and receive bad IPs)                                                                            

      credentials_path: /etcétera/crowdsec/online_api_credentials.yaml

Hacia /etcétera/crowdsec/local_api_credentials.yaml solo debemos cambiar la ip configurada consecuentemente:

url: http://10.0.0.1:8080/

login: 

password: 

Y tenemos la posibilidad de reiniciar CrowdSec:

sudo systemctl restart crowdsec

En este momento vamos a modificar las conexiones en server-2 y server-3.

Primero nos registramos en el servidor Lapi en los dos server-2 y server-3:

sudo cscli lapi register -u http://10.0.0.1:8080

De manera ya establecida, el servidor de API local está activo con cada instalación del agente de CrowdSec. En esta configuración deseamos deshabilitarlo server-2 y server-3. Para realizar esto, requerimos cambiar el fichero de servicio systemd del agente de CrowdSec.

sudo cp /lib/systemd/system/crowdsec.service /etcétera/systemd/system/crowdsec.service

Modificar en este momento /etcétera/systemd/system/crowdsec.service y añade el -no-api Factor si tiene por nombre al agente de CrowdSec en los dos server-2 y server-3.

[Unit]

Description=Crowdsec agent

After=syslog.objetivo network.objetivo remote-fs.objetivo nss-lookup.objetivo


[Service]

Type=notify

Environment=LC_ALL=C LANG=C

PIDFile=/var/run/crowdsec.pid

ExecStartPre=/usr/bin/crowdsec -c /etcétera/crowdsec/config.yaml -t

ExecStart=/usr/bin/crowdsec -c /etcétera/crowdsec/config.yaml -no-api

#ExecStartPost=/bin/sleep 0.1

ExecReload=/bin/kill -HUP $MAINPID


[Install]

WantedBy=multi-usuario.objetivo

En este momento tenemos la posibilidad de corroborar los cambios y reiniciar CrowdSec.

sudo systemctl daemon-reload

sudo systemctl restart crowdsec

Lo último que tienes que llevar a cabo es aceptar server-2 y server-3 Conexiones server-1.

sudo cscli machines list

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

 NAME                                              IP ADDRESS      LAST UPDATE           STATUS  VERSION                                                            

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

 dc6f34b3a4994700a2y también333df43728701D0iARTSQ6dxiwyMR  10.0.0.1  2021-04-13T12:16:11Z  ✔️       v1.0.9-4-debian-pragmatic-a8b16a66b110ebe03bb330cda2600226a3a862d7 

 9f3602d1c9244f02b0d6fd2y también92933y también75zLVg8zSRkyANxHbC  10.0.0.3   2021-04-13T12:24:12Z  🚫                                                                         

 ac86209y también6f9c4d7d8de43y también2ea31fe28ebvde0vWDr46Mpd3L  10.0.0.2   2021-04-13T12:22:28Z  🚫                                                                         

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

En este número observamos 2 máquinas que aún no fueron validadas. En este momento validémoslos.

sudo cscli machines validate 9f3602d1c9244f02b0d6fd2y también92933y también75zLVg8zSRkyANxHbC

sudo cscli machines validate ac86209y también6f9c4d7d8de43y también2ea31fe28ebvde0vWDr46Mpd3L

server-2 y server-3 en este momento tienen la posibilidad de mandar datos a server-1 Agente de CrowdSec. Es posible que sea preciso reiniciar CrowdSec server-2 y server-3.

sudo systemctl restart crowdsec

En el server-1, El comando sudo cscli machines list en este momento debería enseñar tres máquinas validadas.

Paso 4: configure el control de daños

En este momento nos agradaría disponer Risk Mitigation en nuestros servidores de Internet. Primero requerimos producir 2 tokens API para server-2 y server-3 en el server-1.

sudo cscli bouncers add server-2

Api key for 'server-2':


   02954y también85c72cf442a4dee357f0ca5a7c


Please keep this key since you will not be able to retrive it!

sudo cscli bouncers add server-3

Api key for 'server-3':


   3b1030ce0840c343eecd387ac5a3a614


Please keep this key since you will not be able to retrieve it!

En la actualidad no hay packs libres para el cortafuegos bouncer. Esta es una alta prioridad en nuestra lista de tareas atentos.

Entonces con los dos server-2 y server-3:

wget https://github.com/crowdsecurity/cs-cortafuegos-bouncer/releases/download/v0.0.10/cs-cortafuegos-bouncer.tgz

tar zxvf cs-cortafuegos-bouncer.tgz

cd cs-cortafuegos-bouncer-v0.0.10/

sudo ./install.sh

iptables y nftables no están instalados, el script de instalación pide su permiso para disponer. Va a ser lo mismo para ipset Instalación.

En este momento es el instante de emplear el token que producimos al principio de este paso. Las dos cosas api_key y api_url precisa ser actualizado en /etcétera/crowdsec/cs-cortafuegos-bouncer/cs-cortafuegos-bouncer.yaml:

mode: iptables

piddir: /var/run/

update_frequency: 10s

daemonize: true

log_mode: archivo

log_dir: /var/log/

log_level: info

api_url: http://10.0.0.1:8080/

api_key: 02954y también85c72cf442a4dee357f0ca5a7c

disable_ipv6: false

#if present, insert rule in those chains

iptables_chains:

  - INPUT

#  - FORWARD

#  - DOCKER-USER

En este momento tenemos la posibilidad de reiniciar el cortafuegos bouncer.

sudo systemctl restart cs-cortafuegos-bouncer

Conclusión y perspectivas

Hemos descrito de qué forma modificar una instalación multiservidor de CrowdSec. El valor agregada de los elementos server-2 y server-3 es bastante con limite puesto que la mayor parte de las tareas se están aplazando server-1. Esto quiere decir que solo puede añadir lo siguiente a la configuración:

  • registrar y validar el agente de CrowdSec en el servidor LAPI

  • Adición y validación de nuevos porteros Tenga presente que no es requisito disponer porteros y agentes de CrowdSec en exactamente el mismo servidor. En consecuencia, el agente de CrowdSec debe instalarse donde se desarrollan los registros.

Por supuesto, hay observaciones con esta configuración:

  • La comunicación entre agentes es mucho más clara que http. O sea aceptable en una red local, pero es imposible en Internet. CrowdSec deja la utilización de https para esta comunicación, un producto futuro cubrirá este tema.

  • El chequeo o las señales tampoco se tratan en el artículo. CrowdSec deja una monitorización muy fuerte a través del raspador Prometheus. Un producto asimismo cubrirá este tema.

  • La banco de información de CrowdSec no posee una alta disponibilidad. Además de esto, el agente de CrowdSec está en server-1 es un solo punto de falla.

En este momento quizás se esté preguntando: ¿De qué forma se crea una configuración de CrowdSec de alta disponibilidad con múltiples máquinas? Estén alerta a nuestro próximo producto.

El equipo de CrowdSec siempre y en todo momento está feliz de recibir comentarios sobre la solución y su empleo. Si deseas conocerla y charlar, aquí tienes ciertos links útiles. ¡Dales una llamada!

Fuente original

You may also like