En este tutorial, explicaré cómo proteger la parte de la red de sus servidores web con Crowdsec.
El tutorial está hecho en Ubuntu 20.04
Descripción general de Crowdsec
Crowdsec es una herramienta de código abierto que le permite «asegurar» o más bien agregar una capa de seguridad a sus servidores Linux (próximamente también Windows) mediante la detección de ataques a la red (escaneo de puertos, fuerza bruta SSH, escaneo de contenido web…) y prohibición de IP direcciones.
Si está familiarizado con fail2ban, Crowdsec hace lo mismo pero mejor:
- Consume muy pocos recursos
- Mutualización de direcciones IP con una base de datos compartida entre todos los usuarios de Crowndsec
- Fácil de usar
Para facilitar el intercambio de configuraciones entre usuarios, existe un hub (una especie de mercado) donde encontrará configuraciones para asegurar su servidor.
Requisitos previos para poder utilizar Crowdsec
Uno de los requisitos previos necesarios para usar Crowdsec es tener un firewall activo (IPTABLE) en su servidor.
Si no hay un firewall, Crowdsec no podrá agregar una regla para bloquear el tráfico.
Antes de activar su firewall, debe asegurarse de que el tráfico entrante 80, 443 y 22 esté autorizado.
Comience por verificar si el firewall está activo con el siguiente comando:
sudo ufw status
Si está deshabilitado, comenzaremos agregando las reglas básicas para el tráfico entrante: 22, 80 y 443:
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
Para cada regla (comando), se muestra un mensaje de confirmación para indicar que se agregó la regla.
Ahora que se crearon las reglas, habilite ufw:
sudo ufw enable
La orden requiere confirmación
Ahora que ufw está habilitado, ingrese el siguiente comando para mostrar el estado y la lista de reglas:
sudo ufw status verbose
Una última cosa que debe hacer antes de instalar Crowdsec es activar los registros del firewall, ya que se analizarán para detectar ataques.
Ingrese el siguiente comando para activar los registros:
sudo ufw logging on
El comando regresa : Logging enabled
.
Los registros se guardan en el archivo. /var/log/syslog
.
Para asegurarse de que los registros se registren correctamente, desde otro servidor, puede hacer telnet a un puerto sin abrir:
telnet ip 514
Nuestro servidor está listo, vamos a instalar Crowdsec.
instalación de crowdsec
La instalación de Crowdsec es muy sencilla, durante la instalación también detectará los diferentes componentes (Nginx, Apache2, MySQL…) que puede monitorizar y configurarse «automáticamente».
1. Agregue el repositorio a su servidor usando el siguiente script:
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
2. Actualizar lista de paquetes:
sudo apt update
3. Instalar Crowdsec:
sudo apt install crowdsec
En la captura de abajo, el proceso de instalación donde podemos ver el descubrimiento y la instalación y la configuración automáticamente para sshd y nginx.
Crowdsec ahora está instalado y «funcionando».
Antes de continuar con la configuración e instalación de un Bouncer, le mostraré cómo interactuar con el cliente cscli.
Uso del cliente cscli – Crowdsec
Hay disponible un cliente de línea de comandos para Crowdsec para configurarlo y monitorearlo.
Para mostrar la lista de comandos disponibles, use el comando:
cscli
El comando metric muestra varias estadísticas relacionadas con el servicio crowdsec:
cscli metrics
Como podemos ver en la captura, vemos los archivos fuente utilizados y sus estadísticas y también los diferentes analizadores utilizados que permiten detectar
Para mostrar registros que coincidieron con una regla:
cscli alerts list
Para obtener los detalles de una alerta:
cscli alerts inspect ID
Para ver la lista de baneos (bloqueos):
cscli decisions list
Por el momento aún no tenemos instalado Bouncer, si usas el comando por el momento tendrás el siguiente mensaje:
No active decisions
.
Cuando hayamos instalado un gorila, explicaré cómo prohibir una dirección IP manual y cómo eliminarla.
Mostrar la lista de analizadores:
cscli parsers list
Recordatorio: los analizadores son las configuraciones que permitirán leer e interpretar los registros.
Mostrar la lista de escenarios:
cscli scenarios list
Recordatorio: los escenarios son las configuraciones que detectarán los comportamientos y las acciones a realizar.
El último elemento que podemos tener son también los postoverflows
cscli postoverflows list
Los postoverflows son archivos de configuración que contienen listas blancas para evitar el bloqueo de ciertos servicios como CloudFlare, bots de indexación…
Installar un bouncer
Ahora, veremos cómo instalar un Bouncer, que nos permitirá bloquear ataques.
La lista de Bouncers está disponible en Crowdsec Hub. Hay varios bloqueadores disponibles que puedes ponerte:
- Firewall/iptable, que permite bloquear con el firewall del servidor
- WordPress que usar un complemento evitará el acceso al sitio
- Nginx
- Cloudflare
- …
En el tutorial, explicaré cómo configurar la hamaca. : cs-firewall-bouncer.
Instalación automática desde el repositorio
Ahora es posible instalar automáticamente ciertos bouncers disponibles en el repositorio y este es particularmente el caso del bouncer: cs-firewall-bouncer-iptables.
Ingrese el siguiente comando para instalar el Bouncer :
sudo apt install crowdsec-firewall-bouncer-iptables
Instalación manual del Bouncer de iptable
Vaya a la página en el centro de Crowdsec o Github:
- CrowdSec Hub
- crowdsecurity/cs-firewall-bouncer: Crowdsec bouncer written in golang for firewalls (github.com)
Las siguientes instrucciones son válidas al momento de escribir este tutorial, la hamaca puede haber evolucionado.
1. Fuentes de descarga:
wget https://github.com/crowdsecurity/cs-firewall-bouncer/releases/download/v0.0.12/cs-firewall-bouncer.tgz
2. Descomprimir el archivo:
tar xzvf cs-firewall-bouncer.tgz
3. Vaya a la carpeta descomprimida (adaptarse a la versión del archivo):
cd cs-firewall-bouncer-vX.Y.ZZ/
4. Inicie el script de instalación:
sudo ./install.sh
Durante la instalación, se le pedirá que instale ipset si no está presente.
La configuración de Bouncer está en el archivo. : /etc/crowdsec/cs-firewall-bouncer/cs-firewall-bouncer.yaml
.
Vea el archivo y verifique que esté en modo iptables:
cat /etc/crowdsec/cs-firewall-bouncer/cs-firewall-bouncer.yaml
Use el siguiente comando para ver el Bouncer :
sudo cscli bouncers list
Consulta el estado del Bouncer:
sudo systemctl status cs-firewall-bouncer
A partir de ahora, los ataques serán bloqueados por el firewall de Linux según los escenarios.
Instale un componente con cscli y el concentrador
En esta parte, explicaré cómo instalar un componente concentrador usando el cliente (cscli).
Como instalé Crowdsec en un servidor web, instalaremos la lista blanca para indexar robots.
En la página de configuración de CrowdSec Hub encontramos la línea a ejecutar.
sudo cscli postoverflows install crowdsecurity/seo-bots-whitelist
Si no usa la cuenta raíz, agregue sudo al frente
Vuelva a cargar la configuración para su consideración:
sudo systemctl reload crowdsec
Ahora sabe cómo instalar una configuración con el cliente.
Hay otros comandos que permiten la actualización y desinstalación.
Actualización :
cscli hub update
Desinstalación:
cscli {composant} remove {nom_du/composant}
Actuar sobre las decisiones
Es posible actuar sobre las decisiones manualmente para prohibir una dirección IP o desbanear.
Prohibir una dirección IP:
sudo cscli decisions add --ip 172.69.32.87
La dirección IP 172.69.32.87 se bloqueará durante 4 horas.
Prohibir una dirección IP durante 24 horas:
sudo cscli decisions add --ip 172.69.32.87 --duration 24h
Prohibir un rango de direcciones IP:
sudo cscli decesions add --range 172.69.0.0/16
Para eliminar una prohibición, reemplace agregar con eliminar:
sudo cscli decisions delete --ip 172.69.32.87
sudo cscli decesions delete --range 172.69.0.0/16
Para concluir
A través de este tutorial, ahora tiene toda la información necesaria para instalar, configurar y administrar Crowdsec para proteger su servidor Linux.
Personalmente, desde que descubrí este software, lo instalo en lugar de fail2ban, porque me gusta mucho su lado comunitario y su facilidad de uso.
Seguirán más tutoriales de Crowdsec donde explicaré cómo agregar fuentes de archivos y cómo crear un escenario.
Finalmente, tenga en cuenta que hay un tablero disponible basado en una imagen de Docker y que es posible usar una base de datos MySQL/PostgreSQL para agrupar decisiones entre varios de sus servidores.