Introduction
Ce guide explique comment protéger l'authentification sur Gitlab contre les attaques de Bruteforce à l'aide de CrowdSec. Il est essentiel de sécuriser un portail d'authentification web. Une nouvelle collection crowdsec, comprenant 1 parser et 1 scénario, sera installée.
Ce guide se base sur une installation de Gitlab sur Debian 12. La version Gitlab utilisée est la dernière en date (17.2.0).
Prérequis
- Une machine Debian 12 avec un accès root ou sudo. Toutes les commandes présentées ci-dessous seront à exécuter en tant que
root
. - Une connexion internet active.
- Gitlab CE ou EE installé
- CrowdSec installé (voir ici : Installation de CrowdSec)
Modification du port de l'API CrowdSec
Très important !
Avec une installation standard de Gitlab, le serveur PUMA (serveur web ruby faisant partie de gitlab) écoute sur le port TCP 8080. Il est donc impératif de modifier le port d'écoute de l'API de CrowdSec pour éviter tout conflit.
-
Procédure décrite [ici]
-
Vérifiez bien que vos services crowdsec fonctionnent correctement :
journalctl -u crowdsec journalctl -u crowdsec-firewall-bouncer
Installation de la collection pour gitlab
En navigant sur le hub de CrowdSec, une collection pour gitlab est disponible.
-
Installer la collection :
cscli collections install timokoessler/gitlab
Ceci a pour effet d'installer 1 parser et 1 scénario.
-
Lister les parsers :
cscli parsers list # timokoessler/gitlab-logs ✔️ enabled 0.1 /etc/crowdsec/parsers/s01-parse/gitlab-logs.yaml
-
Lister les sénarios :
cscli scenario list # timokoessler/gitlab-bf ✔️ enabled 0.2 /etc/crowdsec/scenarios/gitlab-bf.yaml
Création du fichier d'acquisition
Afin que le parser Gitlab puisse être utilisé, il faut définir la méthode d'acquisition.
- Créez le fichier /etc/crowdsec/acquis.d/gitlab.yaml avec le contenu suivant :
---
filenames:
- /var/log/gitlab/gitlab-rails/production_json.log
labels:
type: gitlab
Redémarrage du service
A présent, le service crowdsec peut être rechargé :
systemctl reload crowdsec
Vérification
Nous allons vérifier le fonctionnement du parser et du nouveau scénario dédié à gitlab.
Pour cela, spammez la page de login de Gitlab, puis vérifiez les résultats :
- Alertes :
cscli alerts list
# 2 │ Ip:66.66.66.66 │ timokoessler/gitlab-bf │ │ │ ban:1 │ 2024-07-19 07:56:48.649063483 +0000 UTC
- Décisions :
cscli decisions list
# 15001 │ crowdsec │ Ip:66.66.66.66 │ timokoessler/gitlab-bf │ ban │ │ │ 6 │ 3h59m43.261827214s │ 2
Conclusion
En suivant ce guide, vous avez sécurisé l'authentification de votre Gitlab contre les attaques de Bruteforce grâce à CrowdSec.