URL: https://linuxfr.org/news/sortie-de-crowdsec-1-0-tutoriel-d-utilisation Title: Sortie de CrowdSec 1.0 : tutoriel d’utilisation Authors: CrowdSec Ysabeau et Benoît Sibaud Date: 2020-12-13T13:31:37+01:00 License: CC By-SA Tags: linux, cybersécurité, sécurité, opensource, communauté, tutoriel et release Score: 6 Le mois dernier, [nous vous présentions CrowdSec](https://linuxfr.org/news/crowdsec-la-cybersecurite-collaborative-open-source-et-gratuite-pour-linux), un logiciel de sécurité gratuit et open source déployable sur votre serveur, qui permet de détecter et bloquer les adresses IP malveillantes et de les partager avec toute la communauté d’utilisateurs. [Alors que la release de la v.1.0 est désormais disponible](https://github.com/crowdsecurity/crowdsec/releases/tag/v1.0.0), et en attendant le package Debian très bientôt, nous vous invitons à découvrir les nouvelles fonctionnalités de la solution. ---- [CrowdSec : la cybersécurité collaborative, open source et gratuite pour Linux](https://linuxfr.org/news/crowdsec-la-cybersecurite-collaborative-open-source-et-gratuite-pour-linux) [CrowdSec 1.0](https://github.com/crowdsecurity/crowdsec/releases/tag/v1.0.0) [Documentation technique](https://doc.crowdsec.net/?_ga=2.45763236.1005702224.1607860915-2134917204.1597756444) ---- La petite nouvelle : l’API locale =========== L’architecture de CrowdSec 1.0 a évolué avec l’arrivée d’un service API Local REST. Tous les composants de CrowdSec (daemon, client et bouncers) peuvent communiquer entre eux via une API REST, plutôt que de lire/écrire directement dans la base de données. Seul le service API local interagit avec la base de données (SQLite, PostgreSQL ou MySQL) et cela présente plusieurs avantages notamment concernant les bouncers qui peuvent maintenant fonctionner en indépendance totale, utilisant l’API et non plus des accès directs à la base de données. Ainsi, les futurs changements dans le schéma de base de données n’auront plus d’impacts sur les bouncers. ![Le schéma de la base de données](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/Capture-de%CC%81cran-2020-12-10-a%CC%80-17.01.06.png?zoom=2&resize=564%2C361&ssl=1) Ce changement permet aussi de mettre en place des configurations distribuées sur plusieurs machines de manière totalement transparente. On peut imaginer une machine faisant tourner l’API locale, différents agents CrowdSec analysant les logs sur plusieurs machines et des bouncers également sur d’autres machines. Cela apporte une meilleure modularité au système CrowdSec et une certaine pérennité à la suite du projet et des déploiements chez ses utilisateurs. Installer CrowdSec ================== Ce tutoriel est pour mettre en place CrowdSec sur votre propre serveur (virtualisé ou non), en l’occurrence ici un Ubuntu 64 bits, mais c’est également réalisable sous Debian et RedHat. On installe d’abord les dépendances avec la commande : sudo apt-get installa bash gettext whiptail curl wget ![Commande sudo apt-get installa bash gettext whiptail curl wget](https://i2.wp.com/crowdsec.net/wp-content/uploads/2020/12/1.png?resize=1200%2C155&ssl=1) Ensuite on va télécharger CrowdSec et lancer le script d’installation : > curl - https://api.github.com/repos/crowdsecurity/crowdsec ![appel github](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/2.png?resize=1200%2C188&ssl=1) tar xvzf crowdsec-release.tgz cd crowdsec-v* sudo ./wizard.sh -i ![commande tar xvzf crowdsec-release.tgz](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/3.png?resize=1200%2C226&ssl=1) Une autre option est de passer par le dépôt GitHub et [récupérer la dernière version publiée du projet](https://github.com/crowdsecurity/crowdsec/releases/tag/v1.0.0) puis la décompresser. L’assistant se démarre via la commande ceci : sudo ./wizard.sh -i ![commande sudo ./wizard.sh -i](https://i1.wp.com/crowdsec.net/wp-content/uploads/2020/12/4.png?zoom=2&resize=592%2C73&ssl=1) Un assistant en curl va alors débuter. Il détecte les services en cours qui génèrent des logs et vous demande de sélectionner ceux dont vous ne voulez pas surveiller l’activité. Dans ce cas, il a trouvé les logs Nginx, SSH et ceux du système Linux utilisé. ![Services détectés](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/5.png?resize=768%2C446&ssl=1) ![Logs détectés](https://i1.wp.com/crowdsec.net/wp-content/uploads/2020/12/6-1.png?resize=768%2C451&ssl=1) Il vous sera ensuite proposé de choisir les collections que vous souhaitez installer. Les collections sont des parseurs et scénarios pré-définis propres à vos outils. Ici on sélectionne donc la collection Linux et la collection Nginx. ![Sélection des collections](https://i2.wp.com/crowdsec.net/wp-content/uploads/2020/12/7.png?zoom=2&resize=596%2C276&ssl=1) À la fin de la procédure, CrowdSec est donc en place, notamment avec le daemon « CrowdSec » qui est donc capable de lire, parser, enrichir et appliquer les nouvelles règles heuristiques à votre système. L’outil CrowdSec se compose de 3 éléments principaux : - le service CrowdSec (daemon) qui effectue toute la surveillance des logs, suit les attaques, etc. - l’outil de ligne de commande, qui est l’interface CLI permettant d’interagir avec le service pour configurer, bannir des IPs, générer des statistiques… - les bouncers, qui sont les intégrations avec d’autres outils qui permettent d’effectuer des actions comme bloquer une IP chez Cloudflare ou au niveau de votre service SSH. Utiliser Crowdsec ================= Lancer CrowdSec --------------- Pour démarrer le démon CrowdSec, utilisez la commande : systemctl start crowdsec ![Titre de l'image](https://i2.wp.com/crowdsec.net/wp-content/uploads/2020/12/8.png?zoom=2&resize=600%2C76&ssl=1) Interagir avec CrowdSec ----------------------- Pour utiliser CrowdSec, tout se passe via cette commande : cscli ![Titre de l'image](https://i1.wp.com/crowdsec.net/wp-content/uploads/2020/12/9.png?zoom=2&resize=586%2C80&ssl=1) Les commandes du client CrowdSec sont nombreuses, en voici une liste ci-dessous : - Usage: - `cscli` [command] - Avalaible commands: - `alerts`: Manage alerts - `bouncers`: Manage bouncers - `capi`: Manage interaction with Central API (CAPI) - `collections`: Manage collections from hub - `config`: Allows to view current config - `dashboard`: Manage your metabase dashboard container - `decisions`: Manage decisions - `help`: Hep about any command - `hub`: Manage Hub - `lapi`: Manage interaction with local API (LAPI) - `machines`: Manage local API machines - `metrics`: Display crowdsec prometheus metrics. - `parsers`: Install/Remove/Upgrade/Inspect parser(s) from hub - `postoverflows`: Install/Remove/Upgrade/Inspect postoverflow(s) from hub - `scenarios`: Install/Remove/Upgrade/Inspect scenario(s) from hub - `simulation`: Manage simulation status of scenarios ![Liste des commandes](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/10.png?zoom=2&resize=480%2C388&ssl=1) Observer l’activité ------------------- À l’aide de la commande `cscli metrics`, vous pouvez afficher les métriques récoltées par l’outil. ![Les métriques récoltées par crowdsec](https://i2.wp.com/crowdsec.net/wp-content/uploads/2020/12/11.png?resize=1024%2C909&ssl=1) Cela affichera un tableau contenant de nombreuses informations comme le nombre d’attaques dans les différentes collections (modules) : - http-backdoors-attempts - http-bad-user-agent - http-crawl-non_statics - http-path-traversal-probing - http-probing - http-sensitive-files - http-xss-probing - ssh-bf - ssh-bf-user-enum Activer l’interface web ----------------------- CrowdSec utilise une interface web Metabase qui vous permettra de visualiser l’ensemble des IPs analysées et les scénarios appliqués. Pour lancer cette interface, vous devrez installer Docker avec la commande : apt install docker.io ![Titre de l'image](https://i1.wp.com/crowdsec.net/wp-content/uploads/2020/12/12.png?resize=1024%2C132&ssl=1) Puis initialiser le dashboard avec la commande : cscli dashnoard setup ![Titre de l'image](https://i2.wp.com/crowdsec.net/wp-content/uploads/2020/12/13.png?w=1226&ssl=1) Vous aurez alors en retour un point d’accès avec un port (`http://IP:3000`) ainsi qu’un login et un mot de passe. Connectez-vous à l’interface web puis entrez le login et le mot de passe. ![Animation montrant l'interface web](https://i2.wp.com/crowdsec.net/wp-content/uploads/2020/12/13.gif?resize=768%2C361&ssl=1) Bannir une IP ------------- Avec le client CrowdSec, vous pouvez avec la commande « ban », ajouter ou supprimer manuellement des IPs à bloquer. Et la commande « ban list » vous permet de lister les IPs bloquées sur votre système. cscli decisions list ![ cscli decisions list](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/15.png?resize=1200%2C150&ssl=1) Ajouter un banissement manuellement pendant 24 heures : cscli decisions add --ip 1.2.3.4 --duration 24h ![ cscli decisions add](https://i2.wp.com/crowdsec.net/wp-content/uploads/2020/12/16.png?w=1224&ssl=1) Ajouter un banissement sur une ip et réclamer un captcha / un ban / un throttle : cscli decisions add --ip 1.2.3.4 -- duration 24h --type ![cscli decisions add --ip 1.2.3.4 -- duration 24h](https://i1.wp.com/crowdsec.net/wp-content/uploads/2020/12/17.png?zoom=2&resize=601%2C94&ssl=1) Ajouter un banissement sur une rangée complète d’IPs : cscli decisions add --range 1.2.3.0/24 ![cscli decisions add --range](https://i2.wp.com/crowdsec.net/wp-content/uploads/2020/12/18.png?resize=1200%2C161&ssl=1) Lister et retirer des règles de blocage --------------------------------------- **Lister les règles de blocage** Pour visualiser vos règles : cscli decisions list ![Titre de l'image](https://i2.wp.com/crowdsec.net/wp-content/uploads/2020/12/19.png?w=1238&ssl=1) **Retirer un blocage** Vous pouvez défaire vos blocages manuels. Si vous voulez supprimer le ban de l’IP 1.2.3.4 : cscli decisions delete -i 1.2.3.4 ![cscli decisions delete -i 1.2.3.4](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/20.png?w=1234&ssl=1) Supprimer le banissement de la rangée 1.2.3.0/24 : cscli decisions delete -r 1.2.3.0/24 ![cscli decisions delete -r 1.2.3.0/24](https://i1.wp.com/crowdsec.net/wp-content/uploads/2020/12/21.png?w=1232&ssl=1) Ou pour supprimer toutes les règles de bannissement exigeant un captcha : cscli decisions delete --type captcha ![cscli decisions delete --type captcha](https://i2.wp.com/crowdsec.net/wp-content/uploads/2020/12/22.png?resize=677%2C79&ssl=1) Installation d’un bouncer ------------------------- Par défaut, CrowdSec ne bloque pas les adresses IP détectées. Pour ce faire, il faudra vous rendre sur le Hub et [installer le bouncer de votre choix (un bloqueur si vous préférez)](https://hub.crowdsec.net/browse/#bouncers). On trouve des bouncers pour WordPress, Cloudflare, Nginx ou pour des Firewalls comme iptables ou nftables. Ici le test se fera sur cs-firewall-bouncer qui va nous permettre de « connecter » CrowdSec avec iptables. On l’installe avec la commande : apt install iptables ![apt install iptables](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/23.png?w=1228&ssl=1) Puis on télécharge le bouncer Firewall de CrowdSec via l’archive ici. Et pour l’installer : tar xvzf cs-firewall-bouncer.tgz sudo ./install.sh ![installation du bouncer](https://i1.wp.com/crowdsec.net/wp-content/uploads/2020/12/24.png?w=1206&ssl=1) Avant de lancer le service, pensez bien à éditer le fichier de configuration suivant pour y ajouter l’URL de l’API et la clé qui lui correspond. Pensez également à bien préciser le mode choisi : iptables ou nftables. nano/etc/crowdsec/cs-firawall-bouncer/cs-bouncer.yaml ![fichier de configuration](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/25.png?w=1220&ssl=1) L’adresse de l’API est `http://localhost:8080` et pour générer une clé API toute neuve, entrez la commande suivante : cscli bouncers add LE-NOM-DE-VOTRE-BOUNCER ![Commande cscli bouncers](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/26.png?w=1284&ssl=1) Puis lancez le bouncer : systemctl starts cs-firewall-bouncer ![systemctl starts cs-firewall-bouncer](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/27.png?w=1220&ssl=1) Et pour vérifier le statut de votre bouncer utilisez le paramètre « status » : systemctl status cs-firewall-bouncer ![systemctl status cs-firewall-bouncer](https://i2.wp.com/crowdsec.net/wp-content/uploads/2020/12/28.png?w=1230&ssl=1) Puis, pour consulter la liste des bouncers connectés à l’API local : cscli bouncers list ![cscli bouncers list](https://i2.wp.com/crowdsec.net/wp-content/uploads/2020/12/29.png?resize=639%2C83&ssl=1) Installer des collections, scénarios, parseurs ---------------------------------------------- Vous pouvez également visualiser les scénarios / parseurs en place, en installer de nouveaux, les supprimer ou les mettre à jour. Commande : cscli parsers|scenarios|collections|postoverflows ![Collection](https://i1.wp.com/crowdsec.net/wp-content/uploads/2020/12/30.png?resize=1024%2C780&ssl=1) Pour installer une nouvelle configuration, vous pouvez le faire en ligne de commande. Par exemple, pour installer le scénario ssh-bf présent sur le Hub : cscli scenarios install crowdsecurity/ssh-bf ![cscli scenarios install crowdsecurity/ssh-bf](https://i1.wp.com/crowdsec.net/wp-content/uploads/2020/12/31.png?w=1216&ssl=1) Il faut ensuite relancer CrowdSec : systemctl reload crowdsec ![systemctl reload crowdsec](https://i1.wp.com/crowdsec.net/wp-content/uploads/2020/12/32.png?resize=645%2C86&ssl=1) Vous pouvez ensuite visualiser les scénarios en place : cscli scenarios list ![Titre de l'image](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/33.png?resize=663%2C232&ssl=1) Et pour obtenir le détail d’un scénario : cscli scenarios inspect crowdsecurity/ssh-bf ![Liste des scénarios](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/34.png?resize=1200%2C919&ssl=1) Pour mettre à jour un scénario : cscli scenarios upgrade crowdsecurity/ssh-bf ![cscli scenarios upgrade crowdsecurity/ssh-bf](https://i1.wp.com/crowdsec.net/wp-content/uploads/2020/12/35.png?w=1258&ssl=1) Enfin, pour supprimer un scénario : cscli scenarios remove crowdsecurity/ssh-bf ![cscli scenarios remove crowdsecurity/ssh-bf](https://i2.wp.com/crowdsec.net/wp-content/uploads/2020/12/36.png?w=1322&ssl=1) N’oubliez pas de relancer CrowdSec : systemctl reload crowdsec ![systemctl reload crowdsec](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/37.png?w=1252&ssl=1) Mise à jour ----------- Pour mettre à jour l’ensemble de vos scénarios, parseurs, collections et postoverflows via le Hub, utilisez la commande : cscli hub update ![cscli hub update](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/38.png?w=1250&ssl=1) En procédant ainsi, CrowdSec ne se contente pas de détecter les attaques en utilisant vos logs, mais peut également déclencher une palette d’actions une fois que quelque chose est détecté, comme : - bloquer les adresses IP dans Cloudflare ; - exécuter vos propres scripts ; - établir un blocage dans netfilter / iptables ; - refuser l’accès d’une IP à Nginx ; - bloquer un accès à votre WordPress ; - et d’autres. Gestion des alertes ------------------- Les alertes peuvent également être listées comme ceci : cscli alerts list ![Lister les alertes](https://i0.wp.com/crowdsec.net/wp-content/uploads/2020/12/39.png?w=1314&ssl=1) Pour obtenir plus de détails sur une alerte en particulier, il faut utiliser la commande suivante en remplaçant le X par l’ID de l’alerte : cscli alerts inspect X ![cscli alerts inspect X](https://i2.wp.com/crowdsec.net/wp-content/uploads/2020/12/40.png?w=1226&ssl=1) Et pour supprimer une alerte : cscli alerts delete X ![cscli alerts delete X](https://i2.wp.com/crowdsec.net/wp-content/uploads/2020/12/41.png?zoom=2&resize=601%2C80&ssl=1) Pour plus de détails, se reporter à la [documentation technique de CrowdSec](https://doc.crowdsec.net/?_ga=2.45763236.1005702224.1607860915-2134917204.1597756444).