CrowdSec : Protéger l’authentification Proxmox

CrowdSec : Protéger l’authentification Proxmox

Table of Contents

Introduction

Ce guide explique comment protéger l'authentification sur Proxmox contre les attaques de Bruteforce à l'aide de CrowdSec. Suite aux dernières actualités de VMware, de nombreux utilisateurs ont migré vers Proxmox. Il est donc essentiel de sécuriser le portail d'authentification, exposé par défaut sur le port TCP 8006.

Ce guide se base sur une installation de Proxmox sur Debian 12. Par défaut, rsyslog n'est plus installé sur Debian 12. Nous verrons comment configurer cela avec journald mais également avec rsyslog si besoin.


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.
  • Proxmox installé
  • CrowdSec installé (voir ici : Installation de CrowdSec)

Installation de la collection pour proxmox

En navigant sur le hub de CrowdSec, une collection pour proxmox est disponible.

  • Installer la collection :

    cscli collections install fulljackz/proxmox

Ceci a pour effet d'installer 2 parsers et 1 scénario.

  • Lister les parsers :

    cscli parsers list
    # crowdsecurity/syslog-logs       ✔️  enabled  0.8      /etc/crowdsec/parsers/s00-raw/syslog-logs.yaml
    # fulljackz/proxmox-logs          ✔️  enabled  0.2      /etc/crowdsec/parsers/s01-parse/proxmox-logs.yaml
  • Lister les sénarios :

    cscli scenario list
    # fulljackz/proxmox-bf             ✔️  enabled  0.2      /etc/crowdsec/scenarios/proxmox-bf.yaml

Pour que ceux-ci soient pris en compte, le service CrowdSec doit être rechargé. Nous le ferons après quelques modifications.


Modification du parser proxmox

Le parser spécifique à proxmox se situe ici : /etc/crowdsec/parsers/s01-parse/proxmox-logs.yaml

Pour qu'il soit compatible avec la dernière version de Proxmox, nous allons l'éditer et apporter les modifications suivantes :

pattern_syntax:
  PVE_AUTH_FAIL: 'authentication failure; rhost=::ffff:%{IP:client_ip} user=%{USERNAME:source_user}@%{WORD:realm} msg='

Ajout : ::ffff:


Création du fichier d'acquisition

Afin que le parser Proxmox puisse être utilisé, il faut définir la méthode d'acquisition.

Utilisation avec journald

Pour utiliser le parser avec journald :

  • Créez le fichier /etc/crowdsec/acquis.d/proxmox.yaml avec le contenu suivant :
journalctl_filter:
  - _SYSTEMD_UNIT=pvedaemon.service
labels:
  type: syslog

Utilisation avec rsyslog

Si vous préférez utiliser rsyslog avec le fichier de log /var/log/syslog :

  • Installez rsyslog si ce n'est pas déjà fait :

    apt install -y rsyslog
  • Créez le fichier /etc/crowdsec/acquis.d/proxmox.yaml avec le contenu suivant :

---
filenames:
  - /var/log/syslog
labels:
  type: pvedaemon

Redémarrage du service

A présent, le service crowdsec peut être rechargé :

systemctl reload crowdsec

Vérification

Nous allons vérifier le fonctionnement des parsers et du nouveau scénario dédié à proxmox.

Pour cela, spammez la page de login de Proxmox, puis vérifiez les résultats :

  • Alertes :
cscli alerts list
# | 2  │ Ip:66.66.66.66 │ fulljackz/proxmox-bf │         │    │ ban:1     │ 2024-07-18 12:13:37.498899667 +0000 UTC 
  • Décisions :
cscli decisions list
# 15001 │ crowdsec │ Ip:66.66.66.66 │ fulljackz/proxmox-bf │ ban    │         │    │ 7      │ 3h59m51.44622068s │ 2

Conclusion

En suivant ce guide, vous avez sécurisé l'authentification de votre Proxmox contre les attaques de Bruteforce grâce à CrowdSec.

Les commentaires sont fermés.