Le mois dernier, nous vous présentions CrowdSec, 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, et en attendant le paquet Debian qui arrivera très bientôt, nous vous invitons à découvrir les nouvelles fonctionnalités de la solution.
Sommaire
- La petite nouvelle : l’API locale
- Installer CrowdSec
- Utiliser CrowdSec
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.
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 journaux 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 Red Hat.
On installe d’abord les dépendances avec la commande :
sudo apt-get installa bash gettext whiptail curl wget
Ensuite on va télécharger CrowdSec et lancer le script d’installation :
tar xvzf crowdsec-release.tgz
cd crowdsec-v*
sudo ./wizard.sh -i
Une autre option est de passer par le dépôt GitHub et récupérer la dernière version publiée du projet puis la décompresser.
L’assistant se démarre via la commande ceci :
sudo ./wizard.sh -i
Un assistant en curl va alors débuter. Il détecte les services en cours qui génèrent des jaurnaux et vous demande de sélectionner ceux dont vous ne voulez pas surveiller l’activité.
Dans ce cas, il a trouvé les journaux de Nginx, SSH et ceux du système GNU/Linux utilisé.
Il vous sera ensuite proposé de choisir les collections que vous souhaitez installer. Les collections sont des analyseurs et scénarios prédéfinis propres à vos outils. Ici, on sélectionne donc la collection Linux et la collection Nginx.
À la fin de la procédure, CrowdSec est donc en place, notamment avec le démon « CrowdSec » qui est donc capable de lire, analyser, enrichir et appliquer les nouvelles règles heuristiques à votre système.
L’outil CrowdSec se compose de trois éléments principaux :
- le service CrowdSec (daemon) qui effectue toute la surveillance des journaux, 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 adresses IP, générer des statistiques, etc. ;
- les bouncers, qui sont les intégrations avec d’autres outils qui permettent d’effectuer des actions comme bloquer une adresse 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
Interagir avec CrowdSec
Pour utiliser CrowdSec, tout se passe via cette commande :
cscli
Les commandes du client CrowdSec sont nombreuses, en voici une liste ci-dessous :
- utilisation :
-
cscli
[commande]
-
- commandes disponibles :
-
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
-
Observer l’activité
À l’aide de la commande cscli metrics
, vous pouvez afficher les métriques récoltées par l’outil.
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 adresses IP analysées et les scénarios appliqués. Pour lancer cette interface, vous devrez installer Docker avec la commande :
apt install docker.io
Puis initialiser le dashboard avec la commande :
cscli dashnoard setup
Vous aurez alors en retour un point d’accès avec un port (http://IP:3000
) ainsi qu’un nom d’utilisateur et un mot de passe. Connectez‑vous à l’interface Web puis entrez le nom d’utilisateur et le mot de passe.
Bannir une adresse IP
Avec le client CrowdSec, vous pouvez avec la commande ban
, ajouter ou supprimer manuellement des adresses IP à bloquer. Et la commande ban list
vous permet de lister les adresses IP bloquées sur votre système.
cscli decisions list
Ajouter un bannissement manuellement pendant 24 heures :
cscli decisions add --ip 1.2.3.4 --duration 24h
Ajouter un bannissement sur une adresse IP et réclamer un CAPTCHA, un bannissement ou une limitation :
cscli decisions add --ip 1.2.3.4 --duration 24h --type
Ajouter un bannissement sur une tranche complète d’adresses IP :
cscli decisions add --range 1.2.3.0/24
Lister et retirer des règles de blocage
Lister les règles de blocage
Pour visualiser vos règles :
cscli decisions list
Retirer un blocage
Vous pouvez défaire vos blocages manuels. Si vous voulez supprimer le bannissement de l’adresse IP 1.2.3.4 :
cscli decisions delete -i 1.2.3.4
Supprimer le bannissement du sous‑réseau 1.2.3.0/24 :
cscli decisions delete -r 1.2.3.0/24
Ou pour supprimer toutes les règles de bannissement exigeant un CAPTCHA :
cscli decisions delete --type captcha
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). On trouve des bouncers pour WordPress, Cloudflare, Nginx ou pour des pare‑feux comme Netfilter (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
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
Avant de lancer le service, pensez à bien éditer le fichier de configuration suivant pour y ajouter l’URL de l’API et la clef qui lui correspond. Pensez également à bien préciser le mode choisi : iptables ou nftables.
nano/etc/crowdsec/cs-firawall-bouncer/cs-bouncer.yaml
L’adresse de l’API est http://localhost:8080
et pour générer une clef d’API toute neuve, entrez la commande suivante :
cscli bouncers add LE-NOM-DE-VOTRE-BOUNCER
Puis lancez le bouncer :
systemctl starts cs-firewall-bouncer
Et pour vérifier le statut de votre bouncer utilisez le paramètre « status » :
systemctl status cs-firewall-bouncer
Puis, pour consulter la liste des bouncers connectés à l’API locale :
cscli bouncers list
Installer des collections, scénarios et analyseurs
Vous pouvez également visualiser les scénarios et analyseurs (parsers) en place, en installer de nouveaux, les supprimer ou les mettre à jour.
Commande :
cscli parsers|scenarios|collections|postoverflows
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
Il faut ensuite relancer CrowdSec :
systemctl reload crowdsec
Vous pouvez ensuite visualiser les scénarios en place :
cscli scenarios list
Et pour obtenir le détail d’un scénario :
cscli scenarios inspect crowdsecurity/ssh-bf
Pour mettre à jour un scénario :
cscli scenarios upgrade crowdsecurity/ssh-bf
Enfin, pour supprimer un scénario :
cscli scenarios remove crowdsecurity/ssh-bf
N’oubliez pas de relancer CrowdSec :
systemctl reload crowdsec
Mise à jour
Pour mettre à jour l’ensemble de vos scénarios, analyseurs, collections et postoverflows via le Hub, utilisez la commande :
cscli hub update
En procédant ainsi, CrowdSec ne se contente pas de détecter les attaques en utilisant vos journaux, 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 ou 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
Pour obtenir plus de détails sur une alerte en particulier, il faut utiliser la commande suivante en remplaçant le X par l’identifiant de l’alerte :
cscli alerts inspect X
Et pour supprimer une alerte :
cscli alerts delete X
Pour plus de détails, se reporter à la documentation technique de CrowdSec.
Aller plus loin
- CrowdSec : la cybersécurité collaborative, open source et gratuite pour GNU/Linux (134 clics)
- CrowdSec 1.0 (45 clics)
- Documentation technique (28 clics)
# crowdsec derrière un parfeu
Posté par eric gerbier (site web personnel) . Évalué à 2.
bonjour
je suis en train de tester le logiciel (depuis la version 0.3.5) et j'ai une question sans réponse : dans le monde de l'entreprise, il y a souvent un firewall (ciso, palo, fortinet …) en frontal d'internet.
Quels sont les ports et le IP à ouvrir pour permettre au logiciel crowdsec de dialoguer avec vos serveurs ?
[^] # Re: crowdsec derrière un parfeu
Posté par CrowdSec (site web personnel) . Évalué à 4.
Bonjour,
443 + récupérer les IPs du endpoint d'api, cela devrait faire l'affaire !
[^] # Re: crowdsec derrière un parfeu
Posté par Ririsoft . Évalué à 3.
Je peux me tromper mais tout a l'air de passer via https://api.crowdsec.net/
cf: https://github.com/crowdsecurity/crowdsec/blob/master/cmd/crowdsec-cli/capi.go#L23
Soit le port 443 sur les IPs suivantes (à l'heure où j'écris ce post):
host api.crowdsec.net
api.crowdsec.net has address 34.241.233.113
api.crowdsec.net has address 52.212.201.26
api.crowdsec.net has address 34.249.245.103
# Les images des commandes ça ne se lit pas avec les mains, ni avec les oreilles
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 10.
Juste une précision, qui pourra servir à d’autres.
Quand on fait un tutoriel, il vaut mieux écrire les commandes plutôt que de faire des captures d’écran (dont certaines sont tronquées, de surcroît). De cette façon, non seulement, on peut les copier-coller, mais elles sont accessibles des personnes qui ne peuvent pas lire avec leurs yeux.
Bonus : ça allège la page et ça demande moins de travail.
Ici, la modération a rajouté toutes les commandes en texte et, personnellement, j’aurais aussi bien volontiers viré les images inutiles (qui n’avaient pas de titre non plus) mais bon.
Et si on tient vraiment, vraiment à mettre des images, leur donner en titre le nom des commandes peut être une solution d’accessibilité.
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: Les images des commandes ça ne se lit pas avec les mains, ni avec les oreilles
Posté par jyes . Évalué à 7. Dernière modification le 15 décembre 2020 à 16:50.
Pourtant, 1226 pixels de large pour afficher 22 caractères, c’est bien le minimum pour justifier de taper ces commandes sur un écran 4K ! Accessoirement ça pète la CSS de LinuxFr sur mon écran trop petit, mais je suppose que c’est parce-que CrowdSec ne s’adresse pas à moi. Dans les vraies entreprises qui ont besoin de vraie sécurité, on ne radine pas sur les pixels !
[^] # Re: Les images des commandes ça ne se lit pas avec les mains, ni avec les oreilles
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 2.
Il y a d'ailleurs des trucs bizarre sur cette dépêche que je ne vois pas quand j'essaie de la modifier.
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: Les images des commandes ça ne se lit pas avec les mains, ni avec les oreilles
Posté par Zenitram (site web personnel) . Évalué à 6.
Je ne comprend pas du tout l'utilité pour l'auteur original de faire des images.
Ni pourquoi la modération ne les a alors pas viré après avoir fait le texte. Parce que c'est vraiment bien inutile pour 100% des gens…
[^] # Re: Les images des commandes ça ne se lit pas avec les mains, ni avec les oreilles
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 5.
C'est le genre de choses pour lesquelles il faut un consensus minimum. C'est pourquoi je ne les ai pas virées et ce d'autant plus qu'il fallait revérifier la saisie.
Et, effectivement, je ne comprends pas du tout l'intérêt de faire des images pour les commandes, même pour un support imprimé !
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: Les images des commandes ça ne se lit pas avec les mains, ni avec les oreilles
Posté par CrowdSec (site web personnel) . Évalué à 1. Dernière modification le 16 décembre 2020 à 13:49.
Désolé, nous n'avions pas réalisé que ces images seraient pénibles à charger, lire etc. Si vous souhaitez les supprimer pour le bien de tous, nous n'y voyons aucun inconvénient. Je peux vous renvoyer un document ne les comprenant pas si cela peut vous éviter de devoir revérifier la saisie.
[^] # Re: Les images des commandes ça ne se lit pas avec les mains, ni avec les oreilles
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 2.
Les images ça n'est pas du texte. Un document, pourquoi pas.
Il faudra l'envoyer à la liste moderateurs de linuxfr.org
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: Les images des commandes ça ne se lit pas avec les mains, ni avec les oreilles
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 2.
J'ai supprimé les images qui n'illustraient que des commandes.
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: Les images des commandes ça ne se lit pas avec les mains, ni avec les oreilles
Posté par BAud (site web personnel) . Évalué à 3.
un « argument » qu'un chef de projet m'avait sorti en entreprise : s'assurer que l'opérateur retape les commandes à la main o_O
bon il y avait aussi le fait que l'écriture / fourniture au format .docx remplaçait pas mal d'espaces par des espaces insécables, ce qui faisait foirer les copier/coller (mauvais outil, changer d'outil… un script par commande avec des arguments et ça aurait été plié :/).
tu n'as sans doute pas vu des procédures d'installation de logiciel en entreprise ;-)
Un coup il y en avait une de 120 pages o_O Je n'ai jamais compris que ce ne soit pas scripté :/ (heureusement, il y a ansible maintenant même si chef et puppet font le taf' aussi :D).
En plus, il nous a fallu pas mal de temps pour comprendre pourquoi l'installation réalisée par les opérateurs en Inde était foirée systématiquement, comme s'ils n'avaient rien fait : bin, en fait, le dernier paragraphe concernait la désinstallation et ils ont appliqué à chaque fois l'intégralité de la procédure /o\ (comme demandé hein… Mais bon :/). Bref 1 semaine de retard à l'installation et relivraison d'une procédure d'installation et d'une procédure de désinstallation (qui ne sert à rien, suffit de virer les VM, mais bref…).
Sinon, même pour les sorties fournies par les commandes, lorsqu'il n'y a que du texte, il y a de quoi faire avec le formatage Markdown
[^] # Re: Les images des commandes ça ne se lit pas avec les mains, ni avec les oreilles
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 2.
et surtout, mauvais utilisateur, changer d'utilisateur ou lui apprendre à utiliser correctement son fichu logiciel. Même avec Word, il est possible de configurer un style de paragraphe qui n'insère pas automatiquement des insécables. Et on peut, de toute façon, vérifier et corriger le tir.
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: Les images des commandes ça ne se lit pas avec les mains, ni avec les oreilles
Posté par BAud (site web personnel) . Évalué à 2.
o_O mais qui utilise vraiment les styles sous Word (hormis pour les titres) ?
Quand tu vois le tollé qu'il y a eu contre le styliste qui s'ouvrait par défaut sous OOo alors que c'était un réel apport :/ Bon, l'appeler par
F11
c'est pas la mort non plus, mais une opération de plus à faire systématiquement (et qui sait que c'est utilisable dans LibO Impress ?).je n'ai malencontreusement pas les mêmes utilisateurs… avec un collègue, nous avions corrigé le modèle de dossier d'architecture :
Ça n'a pas manqué, 2 ans après cela avait été complètement pété par un autre intervenant :/ Notre document passait très bien sous OpenOffice.org, le suivant plus complètement :/ et bien sûr la table des illustrations était à faire à la main vu que la liste de styles proposée n'avait pas été conservée :/ Je ne parlerai pas de la conversion en PDF…
(et je passe aussi sur les préconisations d'insérer des fichiers PNG plutôt que le source Visio / Excel à conserver par ailleurs… bah, si ça choque personne de s'envoyer des fichiers de plus de 20 Mo pour de la doc' plutôt que 4 Mo, eh bien comment dire :D)
[^] # Re: Les images des commandes ça ne se lit pas avec les mains, ni avec les oreilles
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 2.
Ben moi :-)
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: Les images des commandes ça ne se lit pas avec les mains, ni avec les oreilles
Posté par Benoît Sibaud (site web personnel) . Évalué à 5.
Et Clippy.
[^] # Re: Les images des commandes ça ne se lit pas avec les mains, ni avec les oreilles
Posté par BAud (site web personnel) . Évalué à 2.
je vous adore :-)
# correction
Posté par geegeek . Évalué à 1.
Un assistant en s/curl/ncurses/ ?
[^] # Re: correction
Posté par CrowdSec (site web personnel) . Évalué à 1.
Il y a un wizard avec du ncurses pour assister l'installation. En revanche, pas d'interface en ncurses pour l'usage au quotidien.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.