Aller au contenu

Création fail2ban pour protéger vaultwarden


seb773

Messages recommandés

Bonjour,

Je suis débutant sur docker et j'ai créé un Projet Vaultwarden qui fonctionne correctement dont voici ci-dessous un extrait du compose.yaml:

version: "3"
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    ports:
     - 3012:3012
     - 3013:80
    volumes:
     - /volume1/docker/vaultwarden:/data:rw
    environment:
     - ........
     - TZ=Europe/Paris
     - LOG_FILE=/data/vaultwarden.log
     - LOG_LEVEL=warn
     - EXTENDED_LOGGING=true
     - ........
networks:
  default:
    name: vaultwarden
    driver: bridge


Je voudrais me protéger un peu des attaques éventuelles, je pense que le mieux est donc de créer un autre projet comme "fail2ban".

Voici donc le code du compose.yaml que j'ai fait pour ce nouveau container:

version: '3'
services:
  fail2ban:
    container_name: fail2ban
    restart: always
    image: crazymax/fail2ban:latest
    environment:
      - TZ=Europe/Paris
      - F2B_DB_PURGE_AGE=30d
      - F2B_LOG_TARGET=/data/fail2ban.log
      - F2B_LOG_LEVEL=INFO
      - F2B_IPTABLES_CHAIN=INPUT
      - SSMTP_HOST=smtp.domain.fr
      - SSMTP_PORT=587
      - SSMTP_HOSTNAME=domain.fr
      - SSMTP_USER=mail@domain.fr
      - SSMTP_PASSWORD=psw
      - SSMTP_TLS=YES
      - SSMTP_STARTTLS=YES

    volumes:
      - /volume1/docker/fail2ban:/data:rw
      - /volume1/docker/vaultwarden:/data:ro

    network_mode: "host"

    privileged: true
    cap_add:
      - NET_ADMIN
      - NET_RAW

J'ai bien les 3 dossiers action.d / filter.d /jail.d que j'ai pris depuis la page suivante:

https://github.com/sosandroid/docker-fail2ban-synology

Je n'ai rien changé dans le dossier action.d, pour les 2 autres j'ai juste conservé les fichiers conf vaultwarden.


Cependant ce container ne fonctionne pas, il démarre puis il s'arrête. 


Il y'a donc probablement quelque chose que je n'ai pas fait correctement, savez-vous à partir de ces éléments me dire d'où peut le problème ?

Me manque t'il quelque chose, ai-je besoin d'autres container, y'a t'il d'autre méthode pour se protéger ?

Merci d'avance,

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Je suis très intéressée par la question, ayant l'intention de faire à peu près la même chose. Je ne vais pour le moment pas pouvoir aider (le projet est sur la pile... un jour...). Juste, dans le second compose, le vaultwarden est en ro alors que dans le premier il est en rw. Je ne sais pas si ça peut poser problème ?

Lien vers le commentaire
Partager sur d’autres sites

Il y a 5 heures, MagJ a dit :

Juste, dans le second compose, le vaultwarden est en ro alors que dans le premier il est en rw. Je ne sais pas si ça peut poser problème ?

Je pense que c'est normal car c'est juste pour consulter le log et savoir quoi bloquer.

Lien vers le commentaire
Partager sur d’autres sites

@seb773, avant d''utiliser Fail2ban il faudrait que tu renforces la sécurité de Vaultwarden. Car dans ton fichier de config je ne vois pas les variables LOGIN_RATELIMIT_MAX_BURST, LOGIN_RATELIMIT_SECONDS et autres qui permettent de limiter le nombre de tentatives de connexion infructueuses en bloquant l'attaquant.

Tu as aussi la possibilité de forcer une identification à deux facteurs, ce qui là encore encore limite le risque même si ce n'est pas la panacée.

Lien vers le commentaire
Partager sur d’autres sites

Le 12/03/2024 à 9:18 PM, seb773 a dit :
/volume1/docker/vaultwarden:/data:ro

Comme tu le dis, c'est juste pour lire le log, donc pourquoi monter tout le dossier Vaultwarden dans le conteneur F2B ?
Déjà, tu dois trouver où se situe le fichier de log, et ensuite tu dois le monter dans le conteneur comme attendu par la jail (ou alors modifier la jail vaultwarden et vaultwarden-admin) :

/volume1/docker/vaultwarden/blablabla/.../nom_du_log_vaultwarden.log:/log/vaultwarden.log:ro

Pas besoin de faire tourner ton conteneur en mode privilégié si tu octroies les capacités NET_ADMIN et NET_RAW (je pense que tu as juste copié le compose de l'opened issue ?)

L'utilisateur qui a ouvert cette issue précise qu'il a dû ajouter chain = FORWARD dans sa jail (sinon c'est le type DOCKER-USER qui est utilisé).

Après pour le contexte, tu utilises un proxy inversé pour accéder à Vaultwarden ?

Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, CyberFr a dit :

Car dans ton fichier de config je ne vois pas les variables LOGIN_RATELIMIT_MAX_BURST, LOGIN_RATELIMIT_SECONDS et autres qui permettent de limiter le nombre de tentatives de connexion infructueuses en bloquant l'attaquant.

C'est ajouté, merci pour l'info.

il y a une heure, .Shad. a dit :

Déjà, tu dois trouver où se situe le fichier de log, et ensuite tu dois le monter dans le conteneur comme attendu par la jail (ou alors modifier la jail vaultwarden et vaultwarden-admin) :

/volume1/docker/vaultwarden/blablabla/.../nom_du_log_vaultwarden.log:/log/vaultwarden.log:ro

Pas besoin de faire tourner ton conteneur en mode privilégié si tu octroies les capacités NET_ADMIN et NET_RAW (je pense que tu as juste copié le compose de l'opened issue ?)

J'ai modifié comme ci-dessous:

    volumes:
      - /volume1/docker/fail2ban:/data:rw
      - /volume1/docker/vaultwarden/vaultwarden.log:/log/vaultwarden.log:ro

    network_mode: "host"

    cap_add:
      - NET_ADMIN
      - NET_RAW

 

il y a une heure, .Shad. a dit :

L'utilisateur qui a ouvert cette issue précise qu'il a dû ajouter chain = FORWARD dans sa jail (sinon c'est le type DOCKER-USER qui est utilisé).

Quand vous parler du "jail" je suppose que c'est les fichiers conf présent dans le dossier "jail.d", je n'ai rien modifié ci-dessous le contenu:

[DEFAULT]

ignoreip = 172.16.0.0/12 192.168.0.0/16 10.0.0.0/8  # optional
#Ban for 30 days
bantime = 2592000
findtime = 86400
maxretry = 4
banaction = iptables-allports
ignoreself = false

[vaultwarden]

enabled = true
port = 80,443,3012  # alternative: anyport
filter = vaultwarden
logpath = /log/vaultwarden.log

 

il y a une heure, .Shad. a dit :

Après pour le contexte, tu utilises un proxy inversé pour accéder à Vaultwarden ?

Oui effectivement, j'utilise le proxy inversé du nas.

 

Merci pour votre aide

Mon container est "up" depuis plusieurs minutes maintenant, donc j'espère qu'il fonctionne correctement.

 

2024-03-14 11:10:54,394 fail2ban.server         [1]: INFO    --------------------------------------------------
2024-03-14 11:10:54,394 fail2ban.server         [1]: INFO    Starting Fail2ban v1.0.2
2024-03-14 11:10:54,395 fail2ban.observer       [1]: INFO    Observer start...
2024-03-14 11:10:54,431 fail2ban.database       [1]: INFO    Connected to fail2ban persistent database '/data/db/fail2ban.sqlite3'
2024-03-14 11:10:54,432 fail2ban.jail           [1]: INFO    Creating new jail 'vaultwarden-admin'
2024-03-14 11:10:54,452 fail2ban.jail           [1]: INFO    Jail 'vaultwarden-admin' uses pyinotify {}
2024-03-14 11:10:54,452 fail2ban.jail           [1]: INFO    Initiated 'pyinotify' backend
2024-03-14 11:10:54,457 fail2ban.filter         [1]: INFO      maxRetry: 4
2024-03-14 11:10:54,458 fail2ban.filter         [1]: INFO      findtime: 86400
2024-03-14 11:10:54,458 fail2ban.actions        [1]: INFO      banTime: 2592000
2024-03-14 11:10:54,458 fail2ban.filter         [1]: INFO      encoding: UTF-8
2024-03-14 11:10:54,458 fail2ban.filter         [1]: INFO    Added logfile: '/log/vaultwarden.log' (pos = 0, hash = a302e0746052998a8b39892655575de4b59eb37f)
2024-03-14 11:10:54,459 fail2ban.jail           [1]: INFO    Creating new jail 'vaultwarden'
2024-03-14 11:10:54,459 fail2ban.jail           [1]: INFO    Jail 'vaultwarden' uses pyinotify {}
2024-03-14 11:10:54,459 fail2ban.jail           [1]: INFO    Initiated 'pyinotify' backend
2024-03-14 11:10:54,460 fail2ban.filter         [1]: INFO      maxRetry: 4
2024-03-14 11:10:54,460 fail2ban.filter         [1]: INFO      findtime: 86400
2024-03-14 11:10:54,461 fail2ban.actions        [1]: INFO      banTime: 2592000
2024-03-14 11:10:54,461 fail2ban.filter         [1]: INFO      encoding: UTF-8
2024-03-14 11:10:54,461 fail2ban.filter         [1]: INFO    Added logfile: '/log/vaultwarden.log' (pos = 0, hash = a302e0746052998a8b39892655575de4b59eb37f)
2024-03-14 11:10:54,464 fail2ban.jail           [1]: INFO    Jail 'vaultwarden-admin' started
2024-03-14 11:10:54,464 fail2ban.jail           [1]: INFO    Jail 'vaultwarden' started

@CyberFr@.Shad. Merci beaucoup

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.