Aller au contenu

Docker avec Bitwarden et fail2ban - solution


Tostaki

Messages recommandés

Bonjour,

EDIT solution trouvée et partagée un peu plus bas.

J'essaie de configurer Fail2ban pour protéger un contener Bitwarden des attaques en brute force.

Cependant, je n'arrive pas à avoir un ban des IP présentant trop d'erreur. Avez vous déjà réussi à faire fonctionner le ban d'IP ?

Merci

 

Voici les logs et la config

 

 


````
Docker version 18.09.8, build 2c0a67b
````

Here the setup :
- dani-garcia/bitwarden_rs
	- Mounting point: 
		- docker/bw-data:/data/
	- Extended_logging true
	- Log_file: /data/bitwarden.log
	- log level: error
	- TZ: Europe/Paris
	
- crazy-max/docker-fail2ban
	- Run as root
	- Mounting points
		- docker/fail2ban:/data/
		- docker/bw-data:/bitwarden/ Read-Only
	- TZ: Europe/Paris
	- F2B_IPTABLE_CHAIN: Input Selon le ticket 36 sur Fail2Ban (https://github.com/crazy-max/docker-fail2ban/issues/36)
	- DROP à la place de REJECT car non disponible sur Synology

The jail :
````
[DEFAULT]

ignoreip = 127.0.0.1/8 192.168.0.0/22
bantime = 6400
findtime = 86400
maxretry = 4
backend = auto
action = iptables-allports[name=bitwarden]

[bitwarden]

enabled = true
port = 80,81,443
filter = bitwarden
logpath = /bitwarden/bitwarden.log
````

The filter:
````
[INCLUDES]
before = common.conf

[Definition]
failregex = ^.*Username or password is incorrect\. Try again\. IP: \. Username:.*$
ignoreregex =
````

Bitwarden log : 
````
[2020-03-05 21:53:26][error][ERROR] Username or password is incorrect. Try again. IP: 80.XX.XX.XX. Username: a@a.net.
[2020-03-05 21:53:35][error][ERROR] Username or password is incorrect. Try again. IP: 80.XX.XX.XX. Username: a@a.net.
[2020-03-05 21:53:38][error][ERROR] Username or password is incorrect. Try again. IP: 80.XX.XX.XX. Username: a@a.net.
[2020-03-05 21:53:40][error][ERROR] Username or password is incorrect. Try again. IP: 80.XX.XX.XX. Username: a@a.net.
[2020-03-05 21:53:51][error][ERROR] Username or password is incorrect. Try again. IP: 80.XX.XX.XX. Username: a@a.net.
[2020-03-05 21:56:22][error][ERROR] Username or password is incorrect. Try again. IP: 80.XX.XX.XX. Username: a@a.net.
[2020-03-05 21:56:27][error][ERROR] Username or password is incorrect. Try again. IP: 80.XX.XX.XX. Username: a@a.net.
[2020-03-05 21:56:33][error][ERROR] Username or password is incorrect. Try again. IP: 80.XX.XX.XX. Username: a@a.net.
[2020-03-05 21:56:49][error][ERROR] Username or password is incorrect. Try again. IP: 80.XX.XX.XX. Username: a@a.net.
````

F2B Log:
````
2020-03-09 23:43:04,736 fail2ban.CommandAction  [1]: DEBUG   Created 
2020-03-09 23:43:04,736 fail2ban.CommandAction  [1]: DEBUG     Set actionstart = ' -N f2b-bitwarden\n -A f2b-bitwarden -j RETURN\n -I INPUT -p tcp -j f2b-bitwarden'
2020-03-09 23:43:04,736 fail2ban.CommandAction  [1]: DEBUG     Set actionstop = ' -D INPUT -p tcp -j f2b-bitwarden\n -F f2b-bitwarden\n -X f2b-bitwarden'
2020-03-09 23:43:04,736 fail2ban.CommandAction  [1]: DEBUG     Set actionflush = ' -F f2b-bitwarden'
2020-03-09 23:43:04,736 fail2ban.CommandAction  [1]: DEBUG     Set actioncheck = " -n -L INPUT | grep -q 'f2b-bitwarden[ \\t]'"
2020-03-09 23:43:04,737 fail2ban.CommandAction  [1]: DEBUG     Set actionban = ' -I f2b-bitwarden 1 -s  -j '
2020-03-09 23:43:04,737 fail2ban.CommandAction  [1]: DEBUG     Set actionunban = ' -D f2b-bitwarden -s  -j '
2020-03-09 23:43:04,737 fail2ban.CommandAction  [1]: DEBUG     Set name = 'bitwarden'
2020-03-09 23:43:04,737 fail2ban.CommandAction  [1]: DEBUG     Set actname = 'iptables-allports'
2020-03-09 23:43:04,737 fail2ban.CommandAction  [1]: DEBUG     Set chain = 'INPUT'
2020-03-09 23:43:04,737 fail2ban.CommandAction  [1]: DEBUG     Set port = 'ssh'
2020-03-09 23:43:04,738 fail2ban.CommandAction  [1]: DEBUG     Set protocol = 'tcp'
2020-03-09 23:43:04,738 fail2ban.CommandAction  [1]: DEBUG     Set blocktype = 'DROP'
2020-03-09 23:43:04,738 fail2ban.CommandAction  [1]: DEBUG     Set returntype = 'RETURN'
2020-03-09 23:43:04,738 fail2ban.CommandAction  [1]: DEBUG     Set lockingopt = '-w'
2020-03-09 23:43:04,738 fail2ban.CommandAction  [1]: DEBUG     Set iptables = 'iptables '
2020-03-09 23:43:04,738 fail2ban.CommandAction  [1]: DEBUG     Set blocktype?family=inet6 = 'DROP'
2020-03-09 23:43:04,738 fail2ban.CommandAction  [1]: DEBUG     Set iptables?family=inet6 = 'ip6tables '
2020-03-09 23:43:04,739 fail2ban.jail           [1]: DEBUG   Starting jail 'bitwarden'
2020-03-09 23:43:04,739 fail2ban.filterpyinotif [1]: DEBUG   [bitwarden] filter started (pyinotifier)
2020-03-09 23:43:04,741 fail2ban.jail           [1]: INFO    Jail 'bitwarden' started
2020-03-09 23:43:04,741 fail2ban.transmitter    [1]: DEBUG   Status: ready
2020-03-09 23:44:37,877 fail2ban.filterpyinotif [1]: DEBUG   Event queue size: 64
2020-03-09 23:44:37,878 fail2ban.filterpyinotif [1]: DEBUG   <_RawEvent cookie=0 mask=0x100 name=db.sqlite3-wal wd=1 >
2020-03-09 23:44:37,878 fail2ban.filterpyinotif [1]: DEBUG   <_RawEvent cookie=0 mask=0x100 name=db.sqlite3-shm wd=1 >
2020-03-09 23:44:37,878 fail2ban.filterpyinotif [1]: DEBUG   Ignoring creation of /bitwarden/db.sqlite3-wal we do not monitor
2020-03-09 23:44:37,879 fail2ban.filterpyinotif [1]: DEBUG   Ignoring creation of /bitwarden/db.sqlite3-shm we do not monitor
2020-03-09 23:44:38,609 fail2ban.filterpyinotif [1]: DEBUG   Event queue size: 16
2020-03-09 23:44:38,609 fail2ban.filterpyinotif [1]: DEBUG   <_RawEvent cookie=0 mask=0x2 name='' wd=2 >
2020-03-09 23:44:38,615 fail2ban.filter         [1]: DEBUG   Processing line with time:1583793878.0 and ip:80.XX.XX.XX
2020-03-09 23:44:38,623 fail2ban.filter         [1]: INFO    [bitwarden] Found 80.XX.XX.XX - 2020-03-09 23:44:38
2020-03-09 23:44:38,623 fail2ban.failmanager    [1]: DEBUG   Total # of detected failures: 1. Current failures from 1 IPs (IP:count): 80.XX.XX.XX:1
2020-03-09 23:44:41,327 fail2ban.filterpyinotif [1]: DEBUG   Event queue size: 16
2020-03-09 23:44:41,328 fail2ban.filterpyinotif [1]: DEBUG   <_RawEvent cookie=0 mask=0x2 name='' wd=2 >
2020-03-09 23:44:41,329 fail2ban.filter         [1]: DEBUG   Processing line with time:1583793881.0 and ip:80.XX.XX.XX
2020-03-09 23:44:41,329 fail2ban.filter         [1]: INFO    [bitwarden] Found 80.XX.XX.XX - 2020-03-09 23:44:41
2020-03-09 23:44:41,329 fail2ban.failmanager    [1]: DEBUG   Total # of detected failures: 2. Current failures from 1 IPs (IP:count): 80.XX.XX.XX:2
2020-03-09 23:44:44,949 fail2ban.filterpyinotif [1]: DEBUG   Event queue size: 16
2020-03-09 23:44:44,949 fail2ban.filterpyinotif [1]: DEBUG   <_RawEvent cookie=0 mask=0x2 name='' wd=2 >
2020-03-09 23:44:44,950 fail2ban.filter         [1]: DEBUG   Processing line with time:1583793884.0 and ip:80.XX.XX.XX
2020-03-09 23:44:44,950 fail2ban.filter         [1]: INFO    [bitwarden] Found 80.XX.XX.XX - 2020-03-09 23:44:44
2020-03-09 23:44:44,951 fail2ban.failmanager    [1]: DEBUG   Total # of detected failures: 3. Current failures from 1 IPs (IP:count): 80.XX.XX.XX:3
2020-03-09 23:44:47,829 fail2ban.filterpyinotif [1]: DEBUG   Event queue size: 16
2020-03-09 23:44:47,830 fail2ban.filterpyinotif [1]: DEBUG   <_RawEvent cookie=0 mask=0x2 name='' wd=2 >
2020-03-09 23:44:47,831 fail2ban.filter         [1]: DEBUG   Processing line with time:1583793887.0 and ip:80.XX.XX.XX
2020-03-09 23:44:47,831 fail2ban.filter         [1]: INFO    [bitwarden] Found 80.XX.XX.XX - 2020-03-09 23:44:47
2020-03-09 23:44:47,831 fail2ban.failmanager    [1]: DEBUG   Total # of detected failures: 4. Current failures from 1 IPs (IP:count): 80.XX.XX.XX:4
2020-03-09 23:44:48,066 fail2ban.actions        [1]: NOTICE  [bitwarden] Ban 80.XX.XX.XX
2020-03-09 23:44:48,066 fail2ban.observer       [1]: DEBUG   [bitwarden] Observer: ban found 80.XX.XX.XX, 6400
2020-03-09 23:44:48,078 fail2ban.utils          [1]: DEBUG   7fb73a032240 -- returned successfully 0
2020-03-09 23:44:48,087 fail2ban.utils          [1]: DEBUG   7fb739a17a40 -- returned successfully 0
2020-03-09 23:44:48,095 fail2ban.utils          [1]: DEBUG   7fb739a17ab0 -- returned successfully 0
2020-03-09 23:44:48,096 fail2ban.actions        [1]: DEBUG   Banned 1 / 1, 1 ticket(s) in 'bitwarden'
2020-03-09 23:44:55,188 fail2ban.filterpyinotif [1]: DEBUG   Event queue size: 16
2020-03-09 23:44:55,189 fail2ban.filterpyinotif [1]: DEBUG   <_RawEvent cookie=0 mask=0x2 name='' wd=2 >
2020-03-09 23:44:55,190 fail2ban.filter         [1]: DEBUG   Processing line with time:1583793895.0 and ip:80.XX.XX.XX
2020-03-09 23:44:55,190 fail2ban.filter         [1]: INFO    [bitwarden] Found 80.XX.XX.XX - 2020-03-09 23:44:55
2020-03-09 23:44:55,191 fail2ban.failmanager    [1]: DEBUG   Total # of detected failures: 5. Current failures from 1 IPs (IP:count): 80.XX.XX.XX:1
````
	
Lien vers le commentaire
Partager sur d’autres sites

Merci

Je crois que le problème ne viens pas de Bitwarden_rs mais de l'interaction Fail2Ban et iptables sur le Synology.

J'en suis arrivé à ce constat car BW loggue correctement l'échec, Fail2Ban le détecte et envoie la commande de ban. Cependant, rien ne se passe ensuite.

 

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

J'ai fini par trouver la solution (enfin les...). je me suis basé sur Docker-compose qui permet des paramétrages plus avancés que l'interface graphique.

Pour fail2ban, j'ai proposé ma solution là https://github.com/sosandroid/docker-fail2ban-synology

Pour bitwarden_rs, c'est là https://github.com/sosandroid/docker-bitwarden_rs-caddy-synology

Lien vers le commentaire
Partager sur d’autres sites

il y a 3 minutes, .Shad. a dit :

Je n'y connais rien à Github, je me contente de lire les issues habituellement, et le readme.md 😛 

Je vais y jeter un œil à l'occasion. 😉 

Il suffira de glisser les évolutions ici

il y a 28 minutes, pikeupe a dit :

slt

 

merci pour ce travail

ces quel réglage que vous avez besoin

@.Shad. demandait si cela fonctionnait avec Bitwarden officiel. la réponse est oui. Il faut "juste" adapter l'accès au logs, le filtre, la prison.

Lien vers le commentaire
Partager sur d’autres sites

  • 8 mois après...

Bonjour,

Je tente desesperement de faire fonctionner Fail2ban pour mon Bitwarden, mais je ne comprend vraiment pas grand chose. 

J'ai donc mon bitwarden qui fonctionne correctement et de ce coté la pas de soucis. Reverse Proxy, certificat ... Pas de soucis. 

Ensuite pour securiser mon bitwarden, je souhaite mettre en place un firewall. 

J'ai donc mis en place une image docker crazymax-fail2ban, sur le meme syno et je l'ai lancé.

Maintenant j'en suis rendu la. J'ai mes 2 image docker de lancée mais je ne sais pas vraiment quoi faire d'autre pour verifier que ca marche.

J'ai un peu de mal avec l'anglais alors les tutos et liens ne m'aident pas beaucoup. 

Merci

Lien vers le commentaire
Partager sur d’autres sites

C'est Bitwarden ou Bitwarden_rs que tu utilises ? Pour le second il y a un tuto complet ici :

https://github.com/dani-garcia/bitwarden_rs/wiki/Fail2Ban-Setup#synology-dsm

Je vois bien que c'est en anglais mais enfin ça reste très basique au niveau compréhension.
Et Google translate est là pour ça.

Lien vers le commentaire
Partager sur d’autres sites

Si tu es déjà perdu à ce détail, je pense que tu devrais postposer la mise en place de fail2ban pour quand tu auras pris le temps de te renseigner.
Il n'y a pas d'authentification deux facteurs sur Bitwarden_rs ? Si oui tu ferais mieux d'utiliser ça, c'est autrement plus sécurisé que fail2ban pour le coup, et ça se met assez facilement en place depuis l'interface d'administration (en tout cas sur l'instance officielle).

Dernière chose, mais fail2ban n'a rien à voir avec un pare-feu. Il se contente de bannir des IP qui font des tentatives de connexion infructueuses un certain nombre de fois sur un temps donné et bannies pour une durée donnée.

Lien vers le commentaire
Partager sur d’autres sites

Comme mon NAS est situé dans un datacenter je reçois de nombreuse attaques sur le DSM et le ban automatique est vraiment important pour les autres points que je veux mettre en place. Concrètement il ne me reste que la gestion des mots de passe a gerer pour enfin laisser 1password de coté et avoir le tout en autohebergé. 

Le 2FA je vais le mettre en place aussi pour chaque utilisateur mais le ban d'adresse IP c'est vraiment important. 

Le version de bitwarden que j'utilise est la rush. 

Merci

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...
Le 10/12/2020 à 16:03, .Shad. a dit :

Si tu es déjà perdu à ce détail, je pense que tu devrais postposer la mise en place de fail2ban pour quand tu auras pris le temps de te renseigner.
Il n'y a pas d'authentification deux facteurs sur Bitwarden_rs ? Si oui tu ferais mieux d'utiliser ça, c'est autrement plus sécurisé que fail2ban pour le coup, et ça se met assez facilement en place depuis l'interface d'administration (en tout cas sur l'instance officielle).

Dernière chose, mais fail2ban n'a rien à voir avec un pare-feu. Il se contente de bannir des IP qui font des tentatives de connexion infructueuses un certain nombre de fois sur un temps donné et bannies pour une durée donnée.

Hello ici @.Shad.

À propos de fail2ban, est-ce du coup utile de le mettre en place si on a activé l'authentification 2FA sur le bitwarden_rs ? (je souhaite re-tester bitwarden que je n'avais pas aimé il y a 5 mois...) Et je souhaite bien entendu sécuriser le bazar 😄 je vais utiliser un de mes noms de domaine ^^

Lien vers le commentaire
Partager sur d’autres sites

Pour le côté apprentissage oui.
Pour le côté sécuritaire non.

Au cas où totalement improbable où tu te fais voler ton authenticator (smartphone généralement), et qu'un mec essaie de brute force les credentials, oui 😄 

Sans 2FA par contre c'est recommandé.

Lien vers le commentaire
Partager sur d’autres sites

Avis à tous les connaisseurs et aux utilisateurs de bitwarden_rs

je voudrais savoir si vous pouviez m'expliquer ce que sont les notifications websockets ? (lien : https://github.com/dani-garcia/bitwarden_rs/wiki/Using-Docker-Compose )

Citation

Docker Compose is a tool that allows the definition and configuration of multi-container applications. In our case, we want both the Bitwarden_RS server and a proxy to redirect the WebSocket requests to the correct place.

En ai-je besoin ? Car ça utilise Caddy qui semble être un proxy. Bon j'ai pas toutes les notions là...

Qu'est-ce que je rate ou ne pourrait pas faire si je ne prends pas l'option d'installation avec Caddy ?

Et autre question, est-il possible de faire sans et avec un autre outils du NAS ? (je n'ai pas mis en place autre chose que le reverse proxy de DSM, DOcker et différents conteneurs comme AdGuard-Home, ceux pour le monitoring....

Merci pour les éclaircissements que vous pourrez me donner 😇

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...
Le 30/03/2020 à 19:59, Tostaki a dit :

J'ai fini par trouver la solution (enfin les...). je me suis basé sur Docker-compose qui permet des paramétrages plus avancés que l'interface graphique.

Pour fail2ban, j'ai proposé ma solution là https://github.com/sosandroid/docker-fail2ban-synology

Pour bitwarden_rs, c'est là https://github.com/sosandroid/docker-bitwarden_rs-caddy-synology

@.Shad. 
Bon j'ai mis du temps à m'y mettre, et un peu de temps à comprendre les différentes docs internet (qui sont quand même assez mal faites, mal expliquées...).
Mais voilà, j'ai réussi à mettre fail2ban en place pour mon installation 🙂

Petit récap.

J'ai Bitwarden_RS en Docker, sur mon Syno DS920+.
J'utilise le reverse-proxy de DSM (j'ai pas encore pris le temps de voir pour mettre en place autre chose... et l'interface graphique me plait bien, et comme tout fonctionne avec, j'ai pas trop besoin de creuser une autre solution).
Dans les variables d'environement (voir le compose plus bas), j'ai fait en sorte de pouvoir utiliser le 2FA, donc tout passe par le HTTPS.
Donc ma seule possibilité pour accéder à la page web c'est de passer par le nom de domaine, heureusement que ma box fait le loopback 😄 (puisque je n'ai pas mis en place de vrai serveur DNS chez moi, et que c'est mon AdGuard Home en macvlan gère le tout).
J'ai un routeur en DMZ derrière ma Livebox4 (juste pour le contexte, aucun intérêt pour la suite).

zjhCGTf.png RvF6XHO.png

 

J'ai donc suivi ce qui était décrit ici : Fail2Ban Setup · dani-garcia/bitwarden_rs Wiki (github.com) Et donc également le dépôt de @Tostaki sauf que je n'ai pas mis Bitwarden_RS derrière Caddy ! (je n'y vois pas d'intéret, probablement parce que je ne comprends pas vraiment pourquoi il est là).

Et en utilisant les fichiers du dépôt sosandroid/docker-fail2ban-synology: Adaptation of @crazy-max docker fail2ban for Synology (github.com) j'ai réussi à avoir fail2ban fonctionnel.
Pour avoir les notifications par emails, j'ai modifié les fichiers .conf du dossier jail.d ajoutant destmail et sender, et en changeant action (sinon pas de mail) :

# /volume1/docker/fail2ban/jail.d/bitwarden.conf

[DEFAULT]
ignoreip = 192.168.2.0/24
#Ban for 30 days
bantime = 2592000

destemail = monADRESSE@gmail.com
sender = monADRESSE@gmail.com
action = %(action_mwl)s

findtime = 86400
maxretry = 4
backend = auto
#action = iptables-allports[name=bitwarden]

[bitwarden]
enabled = true
port = 80,882,443,3012
filter = bitwarden
logpath = /bitwarden/bitwarden.log
# /volume1/docker/fail2ban/jail.d/bitwarden-admin.conf

[DEFAULT]
ignoreip = 192.168.2.0/24
#Ban for 30 days
bantime = 2592000

destemail = monADRESSE@gmail.com
sender = monADRESSE@gmail.com
action = %(action_mwl)s

findtime = 86400
maxretry = 4
backend = auto
#action = iptables-allports[name=bitwarden]

[bitwarden]
enabled = true
port = 80,882,443,3012
filter = bitwarden
logpath = /bitwarden/bitwarden.log

(J'utilise Gmail, donc modifier au besoin les variables d'environement et destmail et sender.)

J'obtiens bien un mail au lancement de fail2ban, et un mail quand une adresse se fait bannir.
Ce mail de notification est un peu crado en terme de mise en page...
J'ai pas trouvé le moyen d'avoir un mail au débannissement d'une IP...

Mais voilà, ça fonctionne. Ce n'est pas très utile avec le 2FA, mais j'ai appris 2-3 bricoles de plus aujourd'hui.

edit : Le seul défaut avec mon installation, c'est que depuis mon réseau, du fait que je passe par le nom de domaine, c'est forcément mon IP internet qui est reconnue. Et comme elle change, je ne peux pas l'ajouter au champ ignoreip des fichiers .conf de fail2ban.
Sinon, tout fonctionne 😉 


PS : les docker-compose ci-dessous fonctionnent parfaitement avec Portainer (je passe par lui pour faire mes conteneurs).

________________________________

Le docker-compose.yml de fail2ban :

##========================================================================================
##                                                                                      ##
##                           Docker-compose file for Fail2ban                           ##
##                                                                                      ##
##========================================================================================
---
version: "2"
##========================================================================================
##                                                                                      ##
## https://github.com/dani-garcia/bitwarden_rs/wiki/Fail2Ban-Setup#synology-dsm         ##
## https://github.com/sosandroid/docker-fail2ban-synology                               ##
##                                                                                      ##
## Cloner/télécharger le dépôt suivant qui contient les fichiers à utiliser :           ##
## https://github.com/sosandroid/docker-fail2ban-synology.git                           ##
## Il faudra juste modifier le docker-compose.yml qui vient avec ou utiliser celui-ci.  ##
##                                                                                      ##
##========================================================================================
##                                                                                      ##
## Pour supprimer une IP bannie, lancer la commande suivante :                          ##
## docker exec -t fail2ban fail2ban-client set bitwarden unbanip xx.xx.xx.xx            ##
##                                                                                      ##
## Pour Voir le log de fail2ban, lancer la commande :                                   ##
## cat /volume1/docker/fail2ban/fail2ban.log                                            ##
##                                                                                      ##
##========================================================================================

services:
  fail2ban:
    image: ghcr.io/crazy-max/fail2ban:latest
    container_name: fail2ban
    network_mode: host

    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.gmail.com
      - SSMTP_PORT=587
      - SSMTP_HOSTNAME=Docker-Fail2ban
      - SSMTP_USER=XXxxXX@gmail.com
      - SSMTP_PASSWORD=XXxxXX
      - SSMTP_TLS=YES
      - SSMTP_STARTTLS=YES
    
    labels:
      - "com.centurylinklabs.watchtower.enable=true"
    
    volumes:
      - "/volume1/docker/fail2ban:/data"
      - "/volume1/docker/bitwarden_rs/bitwarden-data:/bitwarden:ro"

    cap_add:
      - NET_ADMIN
      - NET_RAW

    restart: always

Le docker-compose.yml de Bitwarden_RS :

##========================================================================================
##                                                                                      ##
##          Fichier docker-compose.yml pour Bitwarden_RS avec Bitwarden-Backup          ##
##                                                                                      ##
##========================================================================================
##                                                                                      ##
## Attention, avec ce fichier, il faut avoir créer le réseau "bitwarden_network" avant  ##
## de créer les conteneurs.                                                             ##
##                                                                                      ##
##          La mise en place de fail2ban se fera avec un docker-compose dédié.          ##
##                                                                                      ##
##========================================================================================
---
version: "2"

services:
  bitwardenrs:  # Voir : https://github.com/dani-garcia/bitwarden_rs
    image: bitwardenrs/server:latest
    container_name: bitwardenrs
    networks:
      - bitwarden_network
    environment:
      # Utiliser la commande (en SSH) : id NOM_UTILISATEUR
      - PUID=XXxxXX
      - PGID=XXxxXX
      - TZ=Europe/Paris

      # Pour l'envoi d'emails
      - SMTP_HOST=XXxxXX
      - SMTP_FROM=XXxxXX
      - STMP_FROM_NAME=BlaBla
      - SMTP_PORT=XXxxXX
      - SMTP_SSL=true
      - SMTP_USERNAME=XXxxXX
      - SMTP_PASSWORD=XXxxXX

      # Nécessaire pour activer le 2FA pour la connexion à notre serveur bitwarden_rs
      # Il est possible de spécifier un port de connexion dans l'URL. Le https:// est obligatoire.
      # Pour cette option, il est donc OBLIGATOIRE d'avoir fait le nécessaire pour avoir du HTTPS (certificats, reverse-proxy, ...)
      - DOMAIN=XXxxXX

      # Pour enregistrer les log avec un niveau particulier
      - LOG_FILE=/data/bitwarden.log
      - LOG_LEVEL=warn
      - EXTENDED_LOGGING=true

      # je n'aime pas les indices pour les mots de passe...
      - SHOW_PASSWORD_HINT=false

      # Pour activer la console d'administation, accessible via : https://mon.domaine.tld/admin/
      # Voir détails ici : https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-admin-page
      # /!\
      # /!\ N'importe qui pourra accéder à la page de connextion, alors blinder le token d'amdin ci-dessous (64 caractères pour moi) !
      # /!\ Il est de plus TRÈS important d'avoir ACTIVÉ le HTTPS avant l'activation de cette option.
      # /!\
      # Je conseille de ne l'activer qu'en cas de nécessité, et de la désactiver après.
      # Pour désactiver, il suffit de commenter la ligne ci-dessous.
      - ADMIN_TOKEN=XXxxXX
      # À noter :
      #   La première fois que vous enregistrez un paramètre dans la page d'administration, 'config.json' sera généré 
      #   dans votre 'DATA_FOLDER'. Les valeurs de ce fichier auront priorité sur les valeurs 'environnement'.

    volumes:
      - "/volume1/docker/bitwarden_rs/bitwarden-data/:/data/"
    ports:
      - 3012:3012
      - XXxxXX:80
    restart: unless-stopped

  # Sauvegarde automatique de la base de données, au-cas-où !
  bitwarden_backup:     # Voir : https://gitlab.com/1O/bitwarden_rs-backup
    image: bruceforce/bw_backup:latest
    container_name: bitwarden_backup
    networks:
      - bitwarden_network
    restart: always
    depends_on:
      - bitwardenrs
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /volume1/docker/bitwarden_rs/bitwarden-data/:/data/
      # Chemin d'accès pour stocker le backup
      - /volume1/docker/bitwarden_rs/bitwarden-backup:/backup_folder/

    environment:
      # Path to the Bitwarden sqlite3 database inside the container
      - DB_FILE=/data/db.sqlite3

      # Path to the desired backup location inside the container
      # - BACKUP_FILE=/data/db_backup/backup.sqlite3
      - BACKUP_FILE=/backup_folder/backup.sqlite3

      # Sets the permissions of the backup file
      # The permissions should at least be 700 since the backup folder itself gets the same permissions
      # and with 600 it would not be accessible.
      - BACKUP_FILE_PERMISSIONS=700

      # Cronjob format "Minute Hour Day_of_month Month_of_year Day_of_week Year"
      # https://crontab.guru/#0_9_*_*_*
      # minutes | heures | jour du mois | mois | jour de la semaine
      - CRON_TIME=0 18 * * *

      # Set to true to append timestamp to the BACKUP_FILE
      - TIMESTAMP=true

      # User ID to run the cron job with
      - UID=1038    # J'ai créé un utilisateur dédié à Bitwarden, utiliser la commande 'id nom_user'

      # Group ID to run the cron job with
      - GID=100

      # Path to the logfile inside the container
      #- LOGFILE

      # Path to the cron file inside the container
      #- CRONFILE

      # Delete old backups after X many days
      - DELETE_AFTER=14

networks:
  bitwarden_network:
    external:
      name: bitwarden_network

 

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • 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.