Aller au contenu

Crowdsec

Création :

logo crowdsec

Bienvenue dans ce guide complet dédié à Crowdsec, un outil de cybersécurité collaboratif conçu pour détecter et prévenir les comportements malveillants en temps réel. Dans un contexte où les menaces informatiques sont de plus en plus sophistiquées et fréquentes, Crowdsec propose une solution innovante qui s’appuie sur la force de la communauté pour renforcer la protection des infrastructures.

À travers ce guide, je vais vous accompagner pas à pas dans la découverte et la mise en œuvre de Crowdsec, depuis son installation jusqu’à la gestion des scénarios et des décisions.

Historique

Crowdsec a été créé en 2020 par une équipe de passionnés de cybersécurité, désireux de proposer une solution moderne et collaborative pour lutter contre les menaces en ligne. Inspiré par des outils comme Fail2Ban, Crowdsec se distingue par son approche communautaire et son architecture modulaire.

L’idée de base derrière Crowdsec est simple : mutualiser les efforts de détection et de prévention des menaces à l’échelle mondiale. En partageant les informations sur les comportements malveillants détectés, les utilisateurs de Crowdsec bénéficient d’une protection collective, rendant ainsi chaque système plus résilient face aux attaques.

Depuis son lancement, Crowdsec a rapidement gagné en popularité grâce à sa capacité à s’intégrer facilement dans diverses infrastructures et à son modèle open-source, permettant à la communauté de contribuer activement à son amélioration continue. Les développeurs ont également mis un point d’honneur à rendre l’outil accessible et extensible, avec une documentation détaillée et de nombreux scénarios prêts à l’emploi.

En peu de temps, Crowdsec est devenu un acteur incontournable dans le domaine de la sécurité informatique, offrant une solution efficace et évolutive pour les entreprises et les particuliers soucieux de protéger leurs systèmes contre les menaces en constante évolution.

Fonctionnalités

Crowdsec est un outil de sécurité informatique doté de nombreuses fonctionnalités innovantes conçues pour protéger vos systèmes contre les menaces en temps réel. Il se distingue par sa capacité à détecter les comportements malveillants grâce à un moteur de détection performant qui analyse en continu les logs et les activités système. Lorsqu’un comportement suspect est identifié, Crowdsec peut automatiquement bannir les adresses IP malveillantes, empêchant ainsi toute nouvelle tentative d’attaque.

L’un des aspects les plus puissants de Crowdsec est son approche communautaire. Chaque utilisateur contribue à une base de données partagée des adresses IP malveillantes, ce qui renforce la sécurité collective. Plus la communauté grandit, plus la protection offerte par Crowdsec devient robuste et efficace.

Crowdsec est compatible avec une variété de plateformes, y compris Linux, Windows et macOS, ce qui facilite son intégration dans des environnements diversifiés. Il est également extensible grâce à des scénarios personnalisés qui permettent de détecter des comportements spécifiques à votre infrastructure. Les scénarios sont définis à l’aide de fichiers YAML, offrant une grande flexibilité et une personnalisation poussée.

En termes de gestion des logs, Crowdsec centralise les événements de sécurité, facilitant ainsi l’analyse et la mise en œuvre de mesures correctives. Il propose également un tableau de bord intuitif pour visualiser les activités détectées et les décisions prises, permettant une gestion proactive de la sécurité.

Pour ceux qui souhaitent étendre les capacités de Crowdsec, une API riche est disponible, permettant des intégrations personnalisées et l’automatisation des interactions. De plus, Crowdsec utilise des techniques de machine learning pour améliorer en continu la détection des comportements malveillants, en analysant de vastes quantités de données pour identifier des schémas et des anomalies.

Concepts Clés

Pour bien utiliser Crowdsec, il est essentiel de comprendre quelques concepts clés qui forment la base de son fonctionnement. Ces concepts permettent de saisir comment Crowdsec détecte, analyse et réagit aux menaces. Voici un tour d’horizon des éléments essentiels à connaître :

Scénarios

Les scénarios sont au cœur de la détection des comportements malveillants par Crowdsec. Un scénario définit un ensemble de règles et de conditions qui décrivent un comportement suspect. Par exemple, un scénario peut détecter des tentatives de brute force SSH en surveillant le nombre de tentatives de connexion échouées sur une période donnée.

Bouncer

Un bouncer est un composant chargé d’appliquer les décisions prises par Crowdsec. Il peut interagir avec divers services comme les pare-feux, les serveurs web ou les systèmes de gestion des accès pour mettre en œuvre les mesures de protection. Les bouncers garantissent que les décisions de sécurité sont effectivement appliquées.

Décisions

Les décisions sont les actions que Crowdsec prend lorsqu’un scénario détecte un comportement suspect. Une décision peut être de bannir une adresse IP, d’envoyer une alerte ou de déclencher une autre action préventive. Les décisions sont configurables et peuvent être adaptées en fonction des besoins de votre infrastructure.

Collections

Les collections sont des groupes de scénarios, de bouncers et de configurations réassemblés qui sont conçus pour faciliter le déploiement de solutions complètes adaptées à des environnements spécifiques. Les collections permettent aux utilisateurs de déployer rapidement un ensemble cohérent de configurations qui fonctionnent ensemble pour protéger efficacement leur infrastructure. Par exemple, une collection pourrait inclure des scénarios pour détecter des tentatives de brute force, des bouncers pour bloquer les IP malveillantes et des configurations spécifiques pour ajuster le comportement du système en fonction des besoins de sécurité.

Acquisition

La configuration d’acquisition définit les flux d’informations que Crowdsec doit traiter. Un flux d’information peut être un fichier, un journal d’événements journald, un flux cloudwatch, ou tout autre type de flux comme un sujet Kafka. La configuration d’acquisition contient toujours un flux et un label pour taguer les logs entrants avec un type spécifique.

Stages

Le concept de stages est central à l’analyse des données dans Crowdsec. Il permet d’avoir plusieurs “étapes” de parsing. Tous les parsers appartiennent à un stage donné. Les stages permettent de structurer et d’organiser le traitement des logs en étapes successives.

Parsers

Les parsers sont utilisés pour analyser et normaliser les logs afin qu’ils puissent être exploités et analysés. Un parser est un fichier de configuration YAML qui décrit comment une chaîne de caractères doit être analysée. Les parsers peuvent également référencer des modules d’enrichissement pour permettre un traitement spécifique des données.

Enrichers

Les enrichers sont des parsers qui ajoutent un contexte supplémentaire à un événement de log pour que Crowdsec puisse prendre une meilleure décision par la suite. Par exemple, un enrichisseur peut ajouter des informations géographiques à un événement en utilisant des données GeoIP.

PostOverflows

Les postoverflows sont des parsers appliqués sur les overflows (résultats des scénarios) avant que la décision ne soit écrite dans la base de données locale ou poussée vers l’API. Ils sont utilisés pour des processus d’enrichissement/parsing coûteux que l’on ne souhaite pas exécuter sur tous les événements entrants, mais plutôt sur une décision sur le point d’être prise.

Hubs

Les hubs de Crowdsec sont des dépôts où les utilisateurs peuvent trouver et partager des scénarios, des bouncers et d’autres configurations. Le hub centralisé de Crowdsec facilite la découverte et l’utilisation de ressources communautaires pour enrichir et adapter votre installation de Crowdsec.

Réputation IP

L’un des avantages de Crowdsec est sa capacité à maintenir une réputation IP basée sur les rapports communautaires. Les adresses IP identifiées comme malveillantes par plusieurs utilisateurs sont ajoutées à une liste noire globale, ce qui aide à prévenir les attaques avant même qu’elles ne se produisent.

API

Crowdsec dispose d’une API riche qui permet aux développeurs et aux administrateurs de créer des intégrations personnalisées et d’automatiser les interactions avec l’outil. L’API facilite l’extension des fonctionnalités de Crowdsec et son intégration dans des écosystèmes de sécurité plus larges.

Installation

Pour commencer à utiliser Crowdsec, vous devez d’abord l’installer sur votre système. Voici les étapes détaillées pour installer Crowdsec sur un système Linux. Ce guide couvre l’installation depuis les dépôts officiels ainsi que la configuration initiale.

Crowdsec peut être installé directement depuis les dépôts officiels. Suivez ces étapes pour installer Crowdsec sur une distribution basée sur Debian ou Ubuntu :

  1. Mettez à jour votre système
Terminal window
sudo apt-get update
sudo apt-get upgrade
  1. Ajouter le dépôt Crowdsec :
Terminal window
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
  1. Installer Crowdsec :
Terminal window
sudo apt-get install crowdsec

Vérification de l’Installation

Après l’installation, il est important de vérifier que Crowdsec est correctement installé et fonctionne. Utilisez la commande suivante pour vérifier le statut du service Crowdsec :

Terminal window
sudo systemctl status crowdsec

Vous devriez voir une sortie indiquant que le service Crowdsec est actif et en cours d’exécution.

Utilisation de la CLI cscli

L’outil en ligne de commande cscli est l’outil indispensable pour gérer et configurer Crowdsec. Il offre une interface complète pour interagir avec Crowdsec, permettant d’installer des scénarios, des bouncers, des parsers, des collections et bien plus encore.

Vous pouvez obtenir la liste des commandes avec l’aide intégrée :

Terminal window
cscli --help
cscli is the main command to interact with your crowdsec service, scenarios & db.
It is meant to allow you to manage bans, parsers/scenarios/etc, api and generally manage you crowdsec setup.
Usage:
cscli [command]
Available Commands:
alerts Manage alerts
appsec-configs Manage hub appsec-configs
appsec-rules Manage hub appsec-rules
bouncers Manage bouncers [requires local API]
capi Manage interaction with Central API (CAPI)
collections Manage hub collections
completion Generate completion script
config Allows to view current config
console Manage interaction with Crowdsec console (https://app.crowdsec.net)
contexts Manage hub contexts
dashboard Manage your metabase dashboard container [requires local API]
decisions Manage decisions
explain Explain log pipeline
help Help about any command
hub Manage hub index
hubtest Run functional tests on hub configurations
lapi Manage interaction with Local API (LAPI)
machines Manage local API machines [requires local API]
metrics Display crowdsec prometheus metrics.
notifications Helper for notification plugin configuration
papi Manage interaction with Polling API (PAPI)
parsers Manage hub parsers
postoverflows Manage hub postoverflows
scenarios Manage hub scenarios
simulation Manage simulation status of scenarios
support Provide commands to help during support
version Display version
Flags:
-c, --config string path to crowdsec config file (default "/etc/crowdsec/config.yaml")
-o, --output string Output format: human, json, raw
--color string Output color: yes, no, auto (default "auto")
--debug Set logging to debug
--info Set logging to info
--warning Set logging to warning
--error Set logging to error
--trace Set logging to trace
-h, --help help for cscli
Use "cscli [command] --help" for more information about a command.

Configuration de l’Auto-complétion

L’auto-complétion est une fonctionnalité pratique qui permet de compléter automatiquement les commandes et les options lorsque vous utilisez cscli dans un terminal. Cela peut grandement améliorer votre efficacité et réduire les erreurs de syntaxe. Ce chapitre vous guide à travers les étapes pour configurer l’auto-complétion pour cscli sur différentes plateformes de terminal.

Configuration pour Bash

Pour activer l’auto-complétion dans Bash, suivez ces étapes :

  1. Générer le script d’auto-complétion :

    Utilisez cscli pour générer le script d’auto-complétion. Exécutez la commande suivante dans votre terminal :

    Terminal window
    sudo cscli completion bash > /etc/bash_completion.d/cscli

    Cette commande crée un script d’auto-complétion pour cscli et le place dans le répertoire des scripts d’auto-complétion de Bash.

  2. Recharger le terminal :

    Après avoir ajouté le script, rechargez votre terminal ou ouvrez une nouvelle session terminal pour activer l’auto-complétion.

    Terminal window
    source /etc/bash_completion

Configuration pour Zsh

Pour activer l’auto-complétion dans Zsh, suivez ces étapes :

  1. Générer le script d’auto-complétion :

    Utilisez cscli pour générer le script d’auto-complétion pour Zsh. Exécutez la commande suivante :

    Terminal window
    sudo cscli completion zsh > "${fpath[1]}/_cscli"
  2. Ajouter le fichier de complétion :

    Ajoutez le script d’auto-complétion généré à votre fichier de configuration Zsh (.zshrc). Ouvrez .zshrc avec votre éditeur de texte préféré et ajoutez la ligne suivante si elle n’existe pas déjà :

    Terminal window
    autoload -Uz compinit
    compinit
  3. Recharger le terminal :

    Après avoir modifié .zshrc, rechargez votre terminal ou ouvrez une nouvelle session terminal pour activer l’auto-complétion.

    Terminal window
    source ~/.zshrc

Configuration pour Fish

Pour activer l’auto-complétion dans Fish, suivez ces étapes :

  1. Générer le script d’auto-complétion :

    Utilisez cscli pour générer le script d’auto-complétion pour Fish. Exécutez la commande suivante :

    Terminal window
    sudo cscli completion fish > ~/.config/fish/completions/cscli.fish
  2. Recharger le terminal :

    Après avoir ajouté le script, rechargez votre terminal ou ouvrez une nouvelle session terminal pour activer l’auto-complétion.

    Terminal window
    source ~/.config/fish/config.fish

Vérification de l’Auto-complétion

Pour vérifier que l’auto-complétion est correctement configurée, tapez une commande cscli partielle et appuyez sur la touche Tab pour voir si le terminal propose des complétions possibles. Par exemple, tapez cscli scen et appuyez sur Tab pour voir les suggestions de complétion pour scenarios.

Configuration de base

La configuration de base de Crowdsec est réalisée à travers le fichier config.yaml situé dans le répertoire /etc/crowdsec/. Ce fichier détermine les paramètres généraux de fonctionnement de Crowdsec.

Voici un exemple de configuration de base typique :

common:
daemonize: true
log_media: file
log_level: info
log_dir: /var/log/
log_max_size: 20
compress_logs: true
log_max_files: 10
config_paths:
config_dir: /etc/crowdsec/
data_dir: /var/lib/crowdsec/data/
simulation_path: /etc/crowdsec/simulation.yaml
hub_dir: /etc/crowdsec/hub/
index_path: /etc/crowdsec/hub/.index.json
notification_dir: /etc/crowdsec/notifications/
plugin_dir: /usr/lib/crowdsec/plugins/
crowdsec_service:
acquisition_path: /etc/crowdsec/acquis.yaml
acquisition_dir: /etc/crowdsec/acquis.d
parser_routines: 1
cscli:
output: human
color: auto
db_config:
log_level: info
type: sqlite
db_path: /var/lib/crowdsec/data/crowdsec.db
flush:
max_items: 5000
max_age: 7d
plugin_config:
user: nobody # plugin process would be ran on behalf of this user
group: nogroup # plugin process would be ran on behalf of this group
api:
client:
insecure_skip_verify: false
credentials_path: /etc/crowdsec/local_api_credentials.yaml
server:
log_level: info
listen_uri: 127.0.0.1:8080
profiles_path: /etc/crowdsec/profiles.yaml
console_path: /etc/crowdsec/console.yaml
online_client: # Central API credentials (to push signals and receive bad IPs)
credentials_path: /etc/crowdsec/online_api_credentials.yaml
trusted_ips: # IP ranges, or IPs which can have admin API access
- 127.0.0.1
- ::1
prometheus:
enabled: true
level: full
listen_addr: 127.0.0.1
listen_port: 6060

Après chaque modification il faudra recharger le service :

Terminal window
systemctl reload crowdsec.service

Configuration de la Base de Données

Crowdsec utilise une base de données pour stocker les événements et les décisions. Par défaut, Crowdsec utilise SQLite, mais vous pouvez configurer d’autres bases de données comme MySQL ou PostgreSQL si vous le souhaitez.

Pour utiliser MySQL, par exemple, modifiez la section db_config comme suit :

db_config:
type: mysql
db_host: localhost
db_port: 3306
db_user: crowdsec
db_password: your_password
db_name: crowdsec

La gestion des Hubs

Les hubs de Crowdsec sont des dépôts centralisés où les utilisateurs peuvent trouver, installer et partager des configurations de sécurité telles que des scénarios, des parsers, des bouncers et des collections. Les hubs facilitent l’administration de Crowdsec en offrant un accès rapide à des ressources préconfigurées et validées par la communauté. Par défaut, cscli est configuré pour utiliser le hub officiel de Crowdsec, mais il est possible de créer et d’utiliser des hubs locaux.

Si vous souhaitez avoir des informations sur le hub principal, il est accessible à l’adresse hub.crowdsec.net.

Contributions aux Hubs

La force de Crowdsec réside également dans sa communauté. Vous pouvez contribuer en partageant vos propres scénarios, parsers, bouncers, ou collections avec la communauté. Pour contribuer, vous pouvez soumettre vos configurations via le dépôt GitHub de Crowdsec ou directement sur le hub.

Utilisation de Crowdsec

Crowdsec est un outil puissant pour détecter et répondre aux comportements malveillants en temps réel. Son utilisation repose sur l’installation, la configuration et la gestion des différents composants tels que les scénarios, les parsers, les bouncers, voir les collections.

Nous allons prendre comme exemple, le renforcement de la sécurité du service sshd.

Installation de la collection sshd

La collection “crowdsecurity/sshd” est une collection préconfigurée qui permet de détecter et de répondre aux tentatives de brute force SSH sur votre serveur. Cette collection inclut des scénarios, des parsers et d’autres configurations nécessaires pour surveiller et sécuriser les connexions SSH. Voici un guide étape par étape pour installer et configurer cette collection sur votre système.

Terminal window
sudo cscli collections install crowdsecurity/sshd

Une fois la collection installée, vous pouvez vérifier que tous les composants nécessaires sont en place en listant les collections installées :

Terminal window
sudo cscli collections list
COLLECTIONS
─────────────────────────────────────────────────────────────────────────────────
Name 📦 Status Version Local Path
─────────────────────────────────────────────────────────────────────────────────
crowdsecurity/linux ✔️ enabled 0.2 /etc/crowdsec/collections/linux.yaml
crowdsecurity/sshd ✔️ enabled 0.3 /etc/crowdsec/collections/sshd.yaml
─────────────────────────────────────────────────────────────────────────────────

Gestion des parsers

Les parsers sont utilisés pour analyser les logs SSH et extraire les informations nécessaires pour les scénarios. La collection inclut des parsers spécifiques pour les logs SSH. Vérifiez leur présence avec :

Terminal window
sudo cscli parsers list
PARSERS
──────────────────────────────────────────────────────────────────────────────────────────────────────────────
Name 📦 Status Version Local Path
──────────────────────────────────────────────────────────────────────────────────────────────────────────────
crowdsecurity/dateparse-enrich ✔️ enabled 0.2 /etc/crowdsec/parsers/s02-enrich/dateparse-enrich.yaml
crowdsecurity/geoip-enrich ✔️ enabled 0.3 /etc/crowdsec/parsers/s02-enrich/geoip-enrich.yaml
crowdsecurity/sshd-logs ✔️ enabled 2.3 /etc/crowdsec/parsers/s01-parse/sshd-logs.yaml
crowdsecurity/syslog-logs ✔️ enabled 0.8 /etc/crowdsec/parsers/s00-raw/syslog-logs.yaml
crowdsecurity/whitelists ✔️ enabled 0.2 /etc/crowdsec/parsers/s02-enrich/whitelists.yaml
────────────────────────────────────────────────────────────────────────────────────────────────────────────

Configuration des Scénarios

Les scénarios sont essentiels pour détecter des comportements spécifiques. Crowdsec utilise des fichiers YAML pour définir les scénarios. Les scénarios par défaut sont stockés dans le répertoire /etc/crowdsec/scenarios/.

Pour installer un scénario, utilisez la commande cscli :

Terminal window
sudo cscli scenarios install crowdsecurity/ssh-bf

Vous pouvez lister tous les scénarios installés avec :

Terminal window
sudo cscli scenarios list
SCENARIOS
───────────────────────────────────────────────────────────────────────────────────────────
Name 📦 Status Version Local Path
───────────────────────────────────────────────────────────────────────────────────────────
crowdsecurity/ssh-bf ✔️ enabled 0.3 /etc/crowdsec/scenarios/ssh-bf.yaml
crowdsecurity/ssh-slow-bf ✔️ enabled 0.4 /etc/crowdsec/scenarios/ssh-slow-bf.yaml
───────────────────────────────────────────────────────────────────────────────────────────

Personnalisation des Scénarios

Crowdsec permet de personnaliser les scénarios pour répondre aux besoins spécifiques de votre environnement. Vous pouvez modifier les scénarios existants ou créer vos propres scénarios. Les fichiers de scénarios se trouvent généralement dans le répertoire /etc/crowdsec/scenarios/.

Le contenu du fichier ssh-bf.yaml :

# ssh bruteforce
type: leaky
name: crowdsecurity/ssh-bf
description: "Detect ssh bruteforce"
filter: "evt.Meta.log_type == 'ssh_failed-auth'"
leakspeed: "10s"
references:
- http://wikipedia.com/ssh-bf-is-bad
capacity: 5
groupby: evt.Meta.source_ip
blackhole: 1m
reprocess: true
labels:
service: ssh
confidence: 3
spoofable: 0
classification:
- attack.T1110
label: "SSH Bruteforce"
behavior: "ssh:bruteforce"
remediation: true
---
# ssh user-enum
type: leaky
name: crowdsecurity/ssh-bf_user-enum
description: "Detect ssh user enum bruteforce"
filter: evt.Meta.log_type == 'ssh_failed-auth'
groupby: evt.Meta.source_ip
distinct: evt.Meta.target_user
leakspeed: 10s
capacity: 5
blackhole: 1m
labels:
service: ssh
remediation: true
confidence: 3
spoofable: 0
classification:
- attack.T1589
behavior: "ssh:bruteforce"
label: "SSH User Enumeration"

Lancer des simulations

Les scenarios intégre des simulations. Par défaut, bien sur elles sont désactivées.

Terminal window
cscli simulations status
INFO global simulation: disabled

Pour activer une simulation en particulier tapez la commande suivante :

Terminal window
sudo cscli simulation enable crowdsecurity/ssh-slow-bf
sudo systemctl reload crowdsec

Gestion des Décisions

Les décisions sont les actions prises par Crowdsec en réponse aux comportements malveillants détectés par les scénarios. La gestion des décisions est essentielle pour assurer une protection efficace et réactive de votre infrastructure. Dans cette section, je vais expliquer comment consulter, ajouter, supprimer et gérer les décisions de Crowdsec.

Consultation des Décisions

Pour voir les décisions actuelles prises par Crowdsec, vous pouvez utiliser la commande cscli. Cette commande affiche une liste des décisions en cours, comme les adresses IP bannies et la durée du bannissement.

Pour lister les décisions :

Terminal window
sudo cscli decisions list
╭───────┬──────────┬───────────────────┬───────────────────────────┬────────────┬─────────┬───────────────────────────────┬────────┬────────────────────┬──────────╮
ID Source Scope:Value Reason Action Country AS Events expiration Alert ID
├───────┼──────────┼───────────────────┼───────────────────────────┼────────────┼─────────┼───────────────────────────────┼────────┼────────────────────┼──────────┤
15002 crowdsec Ip:183.81.169.238 crowdsecurity/ssh-slow-bf ban NL 206264 Amarutu Technology Ltd 11 2h13m13.162645522s 3
15001 crowdsec Ip:183.81.169.238 crowdsecurity/ssh-bf (simul)ban │ NL │ 206264 Amarutu Technology Ltd │ 7 │ 2h13m5.238375352s │ 2 │
╰───────┴──────────┴───────────────────┴───────────────────────────┴────────────┴─────────┴───────────────────────────────┴────────┴────────────────────┴──────────╯

Cette commande affiche des informations telles que l’adresse IP, la raison du bannissement, la durée et le scenario à l’origine de la décision.

Ajout Manuel de Décisions

Dans certains cas, vous pouvez avoir besoin d’ajouter des décisions manuellement, par exemple pour bannir une adresse IP suspecte qui n’a pas été automatiquement détectée par un scénario.

Pour bannir manuellement une adresse IP pendant une durée déterminée :

Terminal window
sudo cscli decisions add --ip 1.2.3.4 --duration 4h

Vous pouvez spécifier différents types de décisions, comme ban pour bannir une IP, ou alert pour simplement générer une alerte sans bannissement.

Suppression de Décisions

Il peut être nécessaire de supprimer des décisions, par exemple si une adresse IP a été bannie par erreur ou si vous souhaitez lever un bannissement avant la fin de la durée prévue.

Pour supprimer une décision spécifique :

Terminal window
sudo cscli decisions delete --ip 1.2.3.4

Pour supprimer toutes les décisions en cours :

Terminal window
sudo cscli decisions delete --all

Configuration des Profils de Décision

Les profils de décision définissent les politiques appliquées par Crowdsec lorsqu’une menace est détectée. Ces profils peuvent être configurés pour différentes situations, comme des attaques légères ou sévères. Les profils se trouvent dans le fichier profiles.yaml situé dans le répertoire /etc/crowdsec/.

Un exemple de profil de décision :

name: default_ip_remediation
#debug: true
filters:
- Alert.Remediation == true && Alert.GetScope() == "Ip"
decisions:
- type: ban
duration: 4h
on_success: break

Gestion des Bouncers

Les bouncers appliquent les décisions de Crowdsec. Par défaut, aucun bouncer n’est configuré. Vous devez installer et configurer des bouncers adaptés à vos besoins.

Installation du bouncer cs-firewall-bouncer

Nous allons installer le bouncer cs-firewall-bouncer qui se charger d’appliquer les décisions de ban d’IP détecté par le scénario installé précédement.

Terminal window
sudo apt install crowdsec-firewall-bouncer-iptables

Une fois installé, vous pouvez vérifier qu’il est bien actif :

Terminal window
cs-firewall-bouncer-1718185159 127.0.0.1 ✔️ 2024-06-12T09:41:44Z crowdsec-firewall-bouncer v0.0.28-debian-pragmatic-af6e7e25822c2b1a02168b99ebbf8458bc6 api-key

Test du Bouncer

Pour tester si un bouncer applique correctement les décisions, vous pouvez ajouter manuellement une décision et vérifier si elle est appliquée. Par exemple, pour tester le bannissement d’une IP avec un bouncer IPTables :

Terminal window
sudo cscli decisions add --ip 1.2.3.4 --duration 1h
sudo iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0 match-set crowdsec-blacklists src

Vérifiez que l’IP 1.2.3.4 apparaît dans les règles de bannissement :

Terminal window
ipset list crowdsec-blacklists
Name: crowdsec-blacklists
Type: hash:net
Revision: 7
Header: family inet hashsize 4096 maxelem 131072 timeout 300 bucketsize 12 initval 0x36429199
Size in memory: 124432
References: 1
Number of entries: 1
Members:
1.2.3.5 timeout 3018

Notre IP est bien banni !

Configuration des Notifications

Vous pouvez configurer Crowdsec pour envoyer des notifications en cas de détection d’événements critiques. Cela se fait en modifiant le fichier de configuration des notifications, souvent situé dans /etc/crowdsec/notifications/.

Un exemple de configuration de notification par email :

notifications:
email:
enabled: true
smtp_host: smtp.example.com
smtp_port: 587
smtp_user: your_email@example.com
smtp_pass: your_password
from: alert@example.com
to:
- admin@example.com
subject: "[Crowdsec] Alert: {alert.name}"
body: |
Alert Name: {alert.name}
Source IP: {alert.source_ip}
Details: {alert.description}

Désactivation des simulations

Une fois vos tests terminé, vous pouvez la désactiver :

Terminal window
sudo cscli simulation enable crowdsecurity/ssh-slow-bf
sudo systemctl reload crowdsec

Mise à Jour des Scénarios

Les scénarios peuvent être mis à jour régulièrement pour inclure les dernières détections et améliorations. Utilisez cscli pour mettre à jour les scénarios installés :

Terminal window
sudo cscli scenarios upgrade --all

Création de Rapports

Crowdsec permet également de créer des rapports basés sur les données collectées par les scénarios. Ces rapports peuvent fournir des informations précieuses sur les tendances de sécurité et l’efficacité des scénarios déployés.

Pour générer un rapport :

Terminal window
sudo cscli metrics

Utilisation de la Console Crowdsec

La console Crowdsec est un outil web en ligne disponible sur app.crowdsec.net qui permet de gérer et de surveiller facilement votre instance Crowdsec. Elle offre une interface graphique pour visualiser les alertes, les décisions et les métriques de sécurité en temps réel. La console simplifie la gestion de Crowdsec et offre une vue d’ensemble des activités de sécurité de votre infrastructure.

Pour accéder à la console Crowdsec, rendez-vous sur app.crowdsec.net et créez un compte.

Connectez-vous à la console et cliquez sur le bouton +, puis sur “Enroll a Security Engine”. Sur votre machine, lancez la commande cscli affichée.

enroll engine

Fonctionnalités de la Console

La console Crowdsec offre plusieurs fonctionnalités pour gérer et surveiller votre sécurité :

  1. Tableau de Bord :

    Le tableau de bord fournit une vue d’ensemble des alertes et des décisions récentes. Vous pouvez voir les activités suspectes détectées par Crowdsec et les actions entreprises pour les bloquer.

  2. Visualisation des Alertes :

    La console affiche les alertes générées par les scénarios de détection. Chaque alerte inclut des détails tels que l’adresse IP source, le type de menace et l’heure de détection.

  3. Gestion des Décisions :

    Vous pouvez consulter, ajouter et supprimer des décisions directement depuis la console. Cela inclut la possibilité de bannir manuellement des adresses IP ou de lever des bannissements.

  4. Métriques et Statistiques :

    La console fournit des métriques et des statistiques détaillées sur les événements de sécurité. Vous pouvez visualiser les tendances et analyser les données pour améliorer la sécurité de votre infrastructure.

  5. Configuration des Scénarios et Parsers :

    La console permet également de configurer et de gérer les scénarios et les parsers. Vous pouvez activer ou désactiver des scénarios et ajuster les configurations pour mieux répondre à vos besoins spécifiques.

Souscription à une liste noire (blocklist)

Avec le plan communauté, vous pouvez souscrire à 3 liste noires d’IP. Par exemple, vous pouvez souscrire à la liste “CrowdSec Paris 2024 Intelligence Blocklist”.

blocklist crowdsec

Conclusion

En adoptant Crowdsec, vous faites un pas important vers une meilleure sécurisation de vos systèmes. Grâce à ses fonctionnalités avancées et à son approche communautaire, Crowdsec offre une solution évolutive et efficace pour faire face aux menaces en constante évolution.

Le Hub Crowdsec est une ressource inestimable pour les utilisateurs cherchant à renforcer la sécurité de leurs infrastructures. Il propose une vaste bibliothèque de scénarios préconfigurés, prêts à être déployés pour détecter et réagir à une multitude de menaces. Ces scénarios couvrent une large gamme de cas d’utilisation, allant des attaques de force brute aux tentatives d’exploitation des vulnérabilités des applications web.

Bien que le hub offre une riche sélection de scénarios, il est possible d’aller encore plus loin en développant vos propres scénarios adaptés à vos besoins spécifiques. Crowdsec utilise des fichiers YAML pour définir les scénarios, ce qui permet une grande flexibilité et personnalisation.

Plus d’infos

Pour approfondir vos connaissances et obtenir de l’aide, voici quelques ressources utiles :