CrowdSec : la cybersécurité collaborative, open source et gratuite pour Linux

  • Manchot Adélie

    CrowdSec est un nouveau projet de sécurité conçu pour protéger les serveurs, services, conteneurs ou machines virtuelles exposés sur Internet. Par certains aspects, c’est un descendant de Fail2Ban, projet né il y a seize ans. Cependant, il propose une approche plus moderne, collaborative et ses propres fondamentaux techniques afin de répondre aux contextes modernes. L’outil est open source (sous licence MIT) et gratuit, disponible pour GNU/Linux (macOS et Windows figurent sur la feuille de route) car notre but est de rendre la sécurité accessible au plus grand nombre.

    CrowdSec, écrit en Golang, est un moteur d’automatisation de la sécurité, qui repose à la fois sur le comportement et sur la réputation des adresses IP. Le logiciel détecte localement les comportements, gère les menaces et 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.

    Documentation complète du projet ici.



    Comment CrowdSec fonctionne

    Philosophie technique

    L’objectif est de déployer le logiciel dans autant d’environnements que possible. Donc, pour le rendre portable, nous avons choisi de l’écrire en Golang. Son exécution rapide, sa compatibilité avec les conteneurs, sa facilité d’utilisation dans les environnements Cloud ainsi que sa capacité à fonctionner sur des écosystèmes UNIX, macOS ou Windows : tout cela nous permet d’adresser tout le marché.

    Pour faciliter les contributions, nous avons décidé d’utiliser une grammaire très simple et efficace basée sur [[YAML]]. Les analyseurs, quant à eux, utilisent des [[expressions rationnelles]] Grok, pour faciliter l’écriture de connecteurs de données.

    Globalement, le traitement de l’information ressemble à ceci :

    Comment CrowdSec traite l’information

    Moteur d’analyse comportementale

    C’est la première couche de protection. Il utilise le scénario défini par YAML pour corréler les événements entrant dans un leaky bucket et en extraire un signal si le bucket déborde. Vous pouvez ensuite appliquer la réponse de votre choix avec des bouncers. Les bouncers sont des moyens de répondre à une adresse IP agressive. Si vous utilisez le bouncer NGINX, il peut interrompre la connexion, en renvoyer une erreur HTTP 403, un [[CAPTCHA]] ou limiter l’accès aux sous‑dossiers. L’approche découplée a du sens car, dans l’architecture moderne, vous voudrez peut‑être envoyer tous les journaux dans un SIEM, un logstash, du Cloud trail ou encore en Syslogd, mais répondre sur votre pare‑feu, votre serveur Web ou même au sein d’une application, au niveau métier.

    Moteur de réputation

    Le moteur de réputation est un principe très simple, mais difficile à mettre en place. Fondamentalement, chacune des installations CrowdSec peut bénéficier d’une liste noire d’adresses IP organisée, distribuée par notre API centrale. Elle est créée sur mesure en fonction de votre empreinte technologique. Si vous utilisez du LAMP, vous n’avez pas besoin des adresses IP qui attaquent d’autres piles techniques comme Windows, par exemple. Cette base de données est alimentée par toutes les instances CrowdSec, dont les signaux sont filtrés et traités en central par notre API. Donc, fondamentalement, vous êtes récompensé par une liste d’adresses IP bloquées, car vous contribuez à les élaborer avec votre instance locale. Les faux positifs et les tentatives d’usurpation de la part de pirates sont un réel enjeu, d’où ce besoin de traitement des signaux qui remontent des installations CrowdSec. Nous pensons avoir une recette assez solide pour y parvenir, que nous appelons le consensus. Cela implique diverses techniques, telles que la vérification des signaux par d’autres membres de confiance, notre propre réseau de leurres (honeypots), des listes de canaris (une liste blanche d’adresses IP), etc.
    Notre but est de distribuer uniquement des listes fiables à 100 %. De plus, identifier qui est dangereux et à quel moment dépend fortement d’un contexte et d’une période temporelle précise. Par exemple, une adresse IP jugée propre hier peut être compromise aujourd’hui et nettoyée par les administrateurs le lendemain. Une adresse IP à la recherche de SSH n’est pas dangereuse pour votre TSE, etc.

    Visualisation

    Le logiciel comprend un système de visualisation local et léger, basé sur Metabase. CrowdSec est également équipé de Prometheus, pour offrir une observabilité et des capacités d’alerte faciles à nos amis Ops. Nous pensons que cette partie bénéficiera à la fois d’investissements de notre côté et de développements communautaires, car la sécurité est meilleure lorsqu’elle est visible, compréhensible et fournit des signaux et rapports utilisables.

    Le moteur de réputation a, actuellement, plus de 103 000 adresses IP sous « consensus » (qui ont passé le contrôle de poisoning et anti‑faux positif) mais nous n’en diffusons qu’environ 10 % jusqu’à présent, celles qui sont corrompues sans l’ombre d’un doute. Nous travaillons sur le consensus et l’API, ce qui va permettre des requêtes externes, faites sans l’agent, seulement avec des bibliothèques (PHP, JavaScript, Python, Arduino, etc.).

    À ce jour, les membres de la communauté viennent de plus de cinquante pays répartis sur six continents.

    Carte de la communauté mondiale CrowdSec

    Nous sommes à la recherche d’utilisateurs, contributeurs et ambassadeurs et serions ravis de connaître votre avis sur cet outil. N’hésitez pas à nous contacter via notre site Web, GitHub, Discourse ou Gitter, nous sommes à votre disposition pour échanger.

    L’équipe CrowdSec

    LinuxFR