CrowdSec : Protéger l’authentification Gitlab

CrowdSec : Protéger l’authentification Gitlab

Table of Contents

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.

Les commentaires sont fermés.