Noticias

Cómo configurar una instalación de CrowdSec con varios servidores

Preparación

CrowdSec es una alternativa de seguridad colaborativa y de código libre que se desarrolló para proteger los servicios, servidores, contenedores o máquinas virtuales de Linux habilitados para Internet con un agente del flanco del servidor. Es una interpretación modernizada de Fail2ban que proporcionó una gran fuente de inspiración para los creadores.

CrowdSec es sin cargo (bajo una osadía del MIT) y su código fuente acondicionado en GitHub. La alternativa utiliza un motor de descomposición de comportamiento de IP basado en protocolos para detectar ataques. Si el agente de CrowdSec detecta una ataque, ofrece varios tipos de corrección para hacer frente a la IP subyacente (prohibición de entrada, captcha, autenticación 2FA, etc.). El documentación es seleccionado por la plataforma y, si es probado, compartido por la comunidad de CrowdSec para que los usuarios todavía puedan proteger sus activos de esta dirección IP.

Hace unos meses agregamos algunas características interesantes a CrowdSec con el tiro de v1.0.x. Uno de los más emocionantes es la capacidad del agente de CrowdSec para realizar como una API HTTP REST para compilar señales de otros agentes de CrowdSec. Por lo tanto, es responsabilidad de este agente singular tener las señales recopiladas y transmitirlas. A este agente singular lo llamaremos servidor LAPI a partir de ahora.

Otra característica que vale la pena mencionar es que la mitigación ya no tiene que tener emplazamiento en el mismo servidor que la detección. La valla de daños se realiza con Bravucón. Los porteros se basan en la API HTTP REST proporcionada por el servidor LAPI.

Puertas

Este artículo describe cómo implementar CrowdSec en una configuración de múltiples servidores con una señal de uso compartido de servidor.

Ambas cosas server-2 y server-3 están destinados a mantener servicios. Puedes echar un vistazo al nuestro centro para retener qué servicios CrowdSec puede ayudarlo a apuntalar. Por final, si proporcionadamente no menos importante, server-1 albergará los siguientes servicios locales:

  • la API tópico requerida por los gorilas

  • la saco de datos, que es alimentada por los tres agentes locales de CrowdSec y el servicio de tira de interrupción de CrowdSec en itinerario. Cómo server-1 Si se proporciona la API tópico, la llamaremos servidor LAPI.

Usamos un backend de Postgresql para la saco de datos de CrowdSec para permitir la incorporación disponibilidad. Este tema se tratará en publicaciones futuras. Si está proporcionadamente sin incorporación disponibilidad, puede silenciar el paso 2.

Adicionalmente, esta publicación cubre la defensa contra ataques contra servicios alojados. server-2 y server-3 con los gorilas de CrowdSec.

Este artículo es el primero de una serie.

requisitos

  • Dos servidores Ubuntu 20.04 preinstalados conectados a Internet y servicios de alojamiento. A partir de ahora nos referiremos a estos servidores desde server-2 y server-3 .

  • Un servidor Ubuntu 20.04 preinstalado no conectado a Internet. A partir de ahora nos referiremos a este servidor por server-1. Supongamos que server-1La dirección IP es 10.0.0.1. (No hay conexión a Internet en este servidor no es un requisito precioso).

  • Una red tópico que conecta los tres servidores.

Paso 1: instalación de CrowdSec

Instalemos CrowdSec en cada servidor Timonel 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/apt/sources.list.d/crowdsec.list > /dev/null

sudo apt update


sudo apt install crowdsec

Ahora hemos realizado tres instalaciones normalizado de CrowdSec.

Paso 2 (opcional): cambie el backend de la saco de datos en Server-1 a postgresql

sudo apt install postgresql

Primero necesitamos conectarnos a la saco de datos como agraciado de Postgres.

sudo -i -u postgres

psql

Gracias a ellos Documentación de Postgresql Crowdsecahora podemos inicializar la saco de datos.

postgres=# CREATE DATABASE crowdsec;

CREATE DATABASE

postgres=# CREATE USER crowdsec WITH PASSWORD 'CREATE USER crowdsec WITH PASSWORD '<password>';

postgres=# CREATE USER crowdsec WITH PASSWORD '<password>';

CREATE ROLE

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

GRANT

Ahora informemos a CrowdSec sobre este nuevo backend de saco de datos. Para hacer esto, necesitamos renovar la sección db_config del archivo /etc/crowdsec/config.yaml.

db_config:

  log_level: info

  type: postgres

  user: crowdsec

  password: "<password>"

  db_name: crowdsec

  host: 127.0.0.1

  port: 5432

Una vez que hayamos vuelto a registrar la computadora tópico en la saco de datos, podemos reiniciar CrowdSec:

sudo cscli machines add -a

sudo systemctl restart crowdsec

Paso 3: originar un documentación para el servidor 2 y el servidor 3 para el servidor LAPI

Primero necesitamos configurar CrowdSec server-1 Conexiones de aceptar server-2 y server-3. Asegúrese de que su firewall permita conexiones desde server-2 y server-3 en server-1Puerto 8080.

Configuremos el servidor API en server-1 Página. Para hacer esto, los dos tenemos que cambiar /etc/crowdsec/config.yaml y /etc/crowdsec/local_api_credentials.yaml.

Con destino a /etc/crowdsec/config.yamlAhora es la sección de la API la que debe cambiarse. Es solo cuestión de renovar la IP de monitoreo de localhost a la IP tópico:

api:

  client:

    insecure_skip_verify: false

    credentials_path: /etc/crowdsec/local_api_credentials.yaml

  server:

    log_level: info

    listen_uri: 10.0.0.1:8080

    profiles_path: /etc/crowdsec/profiles.yaml

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

      credentials_path: /etc/crowdsec/online_api_credentials.yaml

Con destino a /etc/crowdsec/local_api_credentials.yaml solo necesitamos cambiar la ip configurada en consecuencia:

url: http://10.0.0.1:8080/

login: <login>

password: <password>

Y podemos reiniciar CrowdSec:

sudo systemctl restart crowdsec

Ahora configuramos las conexiones server-2 y server-3.

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

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

De forma predeterminada, el servidor de API tópico está activo cada vez que se instala el agente de CrowdSec. En esta configuración queremos deshabilitarlo server-2 y server-3. Para hacer esto, necesitamos optimizar el archivo de servicio Systemd del agente de CrowdSec.

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

Editar ahora /etc/systemd/system/crowdsec.service y agrega el -no-api Parámetros para citar al agente de CrowdSec en los dos server-2 y server-3.

[Unit]

Description=Crowdsec agent

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


[Service]

Type=notify

Environment=LC_ALL=C LANG=C

PIDFile=/var/run/crowdsec.pid

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

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

#ExecStartPost=/bin/sleep 0.1

ExecReload=/bin/kill -HUP $MAINPID


[Install]

WantedBy=multi-user.target

Ahora podemos confirmar los cambios e iniciar CrowdSec nuevamente.

sudo systemctl daemon-reload

sudo systemctl restart crowdsec

Lo final que debes hacer es permitir server-2 y server-3 Conexiones server-1.

sudo cscli machines list

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

 NAME                                              IP ADDRESS      LAST UPDATE           STATUS  VERSION                                                            

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

 dc6f34b3a4994700a2e333df43728701D0iARTSQ6dxiwyMR  10.0.0.1  2021-04-13T12:16:11Z  ✔️       v1.0.9-4-debian-pragmatic-a8b16a66b110ebe03bb330cda2600226a3a862d7 

 9f3602d1c9244f02b0d6fd2e92933e75zLVg8zSRkyANxHbC  10.0.0.3   2021-04-13T12:24:12Z  🚫                                                                         

 ac86209e6f9c4d7d8de43e2ea31fe28ebvde0vWDr46Mpd3L  10.0.0.2   2021-04-13T12:22:28Z  🚫                                                                         

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

En este número vemos dos máquinas que aún no han sido validadas. Ahora validémoslos.

sudo cscli machines validate 9f3602d1c9244f02b0d6fd2e92933e75zLVg8zSRkyANxHbC

sudo cscli machines validate ac86209e6f9c4d7d8de43e2ea31fe28ebvde0vWDr46Mpd3L

server-2 y server-3 ahora pueden expedir datos server-1 Agente de CrowdSec. Es posible que sea necesario reiniciar CrowdSec server-2 y server-3.

sudo systemctl restart crowdsec

En server-1, El comando sudo cscli machines list ahora debería mostrar tres máquinas validadas.

Paso 4: configurar la mitigación

Ahora nos gustaría instalar Damage Control en nuestros servidores conectados a Internet. Primero necesitamos originar dos tokens API para server-2 y server-3 en server-1.

sudo cscli bouncers add server-2

Api key for 'server-2':


   02954e85c72cf442a4dee357f0ca5a7c


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!

Actualmente no hay ningún paquete acondicionado para el rebotador del cortafuegos. Esta es una incorporación prioridad en nuestra tira de tareas pendientes.

Por lo tanto en los dos server-2 y server-3::

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

tar zxvf cs-firewall-bouncer.tgz

cd cs-firewall-bouncer-v0.0.10/

sudo ./install.sh

Si iptables y nftables no están instalados, el script de instalación le pedirá permiso para instalarlo. Lo mismo sucederá para ipset Instalación.

Ahora es el momento de usar el token que generamos al eclosión de este paso. Ambas cosas api_key y api_url necesita ser actualizado en /etc/crowdsec/cs-firewall-bouncer/cs-firewall-bouncer.yaml::

mode: iptables

piddir: /var/run/

update_frequency: 10s

daemonize: true

log_mode: file

log_dir: /var/log/

log_level: info

api_url: http://10.0.0.1:8080/

api_key: 02954e85c72cf442a4dee357f0ca5a7c

disable_ipv6: false

#if present, insert rule in those chains

iptables_chains:

  - INPUT

#  - FORWARD

#  - DOCKER-USER

Ahora podemos reiniciar el rebotador del firewall.

sudo systemctl restart cs-firewall-bouncer

Conclusión y perspectivas

Hemos descrito cómo configurar una instalación de CrowdSec con varios servidores. La sobrecarga de bienes en server-2 y server-3 es suficiente pequeño ya que la mayoría de las tareas domésticas son deportadas server-1. Esto significa que la configuración solo se puede expandir para incluir:

  • Registre y valide el agente de CrowdSec en el servidor LAPI

  • Apéndice y brío de nuevos porteros Se debe tener en cuenta que no es necesario instalar porteros y agentes de CrowdSec en el mismo servidor. Por lo tanto, el agente de CrowdSec debe instalarse donde se crean los registros. Sin confiscación, el control de daños puede dejarse de flanco cuando tenga sentido.

Obviamente, existen algunas limitaciones en esta configuración:

  • La comunicación entre agentes se realiza a través de un http único. Esto es aceptable en una red tópico, pero no es posible en Internet. CrowdSec permite el uso de https para esta comunicación. Una próxima publicación tráfico sobre este tema.

  • El monitoreo o las alertas siquiera se tratan en este artículo. CrowdSec permite una monitorización muy potente a través del raspador Prometheus. Una contribución todavía abordará este tema.

  • La saco de datos de CrowdSec no tiene una incorporación disponibilidad. Adicionalmente, el agente de CrowdSec está encendido server-1 es un solo punto de error.

Ahora quizás se esté preguntando: ¿Cómo puedo crear una configuración de CrowdSec de incorporación disponibilidad para varias máquinas? Esperamos nuestro próximo artículo.

El equipo de CrowdSec siempre está adecuado de aceptar comentarios sobre la alternativa y su uso. Si desea conocerlos y charlar con ellos, aquí hay algunos enlaces efectos. ¡Dales un clamor!

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba