Crowdsec : Présentation succinte de la solution collaborative de cybersécurité

Crowdsec Cybersécurité Open source

Ayant découvert et mis en place récemment Crowdsec, j'ai décidé d'alimenter mon blog en commençant par une série d'articles pratiques sur cette formidable solution.

Crowdsec est une jeune solution de cybersécurité libre, gratuite, massivement collaborative et d'origine française. Il permet de détecter des comportements anormaux (à partir de l'analyse des logs provenant par exemple de syslog mais pas que) et de bloquer les attaques. Il collabore également au niveau mondial avec son réseau d'utilisateurs en partageant les adresses IP détectées. Ceci permet alors à chacun de les bloquer de manière préventive. L'objectif est de bâtir une immense base de données de réputation IP et d'en garantir un usage gratuit à ceux participant à son enrichissement.

En résumé, si vous souhaitez protéger des serveurs délivrant des services accessibles depuis Internet, Crowdsec est fait pour ça.

Ce schéma (issue de https://doc.crowdsec.net/Crowdsec/v1/) résume le fonctionnement de Crowdsec : crowdsec_architecture

Comme toute solution moderne, celle-ci vient avec son vocabulaire dont voici une présentation simplifiée :

  • Parser : analyseur de logs adapté à un service.
  • Scénario : permet de détecter et de qualifier un comportement spécifique, généralement une attaque.
  • Collection : ensemble de parsers et de scénarios.
  • Bouncer : en charge des blocages (en s'appuyant sur iptables, nginx...). L'installation d'un bouncer sur un serveur ne nécessite pas obligatoirement l'installation de l'agent Crowdsec sur ce même serveur.
  • Agent Crowdsec : peut être configuré en mode "standalone" (fonctionnement de base) ou bien configuré pour se connecter à un autre agent Crowdsec qui fait office de serveur Local API.
  • Serveur local API : agent crowdsec qui se connecte au serveur Central API et configuré pour que puissent se connecter :
    • les agents Crowdsec (faisant tourner les parsers et les scénarios)
    • et les bouncers (pour récupérer et appliquer les décisions de blocages).
  • Serveur Central API : serveur Central API auquel se connecte le serveur Local API pour récupérer les décisions communautaires et participer à celles-ci.
  • cscli : ligne de commande permettant d’interagir avec Crowdsec.

Selon la documentation officielle de Crowdsec, le runtime Crowdsec-agent s'articule autour de quelques concepts simples :

  • Il lit les journaux (définis via la configuration d'acquisition)
  • Ces journaux sont analysés via des parsers et éventuellement enrichis.
  • Ces journaux normalisés sont ensuite comparés aux scénarios déployés par l'utilisateur.
  • Lorsqu'un scénario est "déclenché", Crowdsec-agent génère une alerte et éventuellement une ou plusieurs décisions associées.
    • L'alerte est ici principalement pour la traçabilité, et demeurera même après l'expiration de la décision.
    • La décision, quant à elle, est de courte durée et indique les mesures à prendre contre l'adresse IP/plage/utilisateur incriminé...
  • Ces informations (le signal, les décisions associées) sont ensuite envoyées à l'API locale de crowdsec et stockées dans la base de données.

Je ne vais pas m'étendre sur le fonctionnement théorique. D'autres l'ont déjà fait :

N'hésitez pas à consulter également la documentation officielle sur https://doc.crowdsec.net/Crowdsec/v1/

Maintenant que nous avons fait une rapide approche, il est temps de passer à la pratique. Dans cette série d'article, nous allons voir comment sécuriser des services accessibles depuis Internet. Pour le premier article, nous installerons Crowdsec en tant que serveur Local API et sécuriserons l'accès à l'API Rest pour les futurs agents et bouncers qui s'y connecteront.

Article précédent Article suivant