This site uses cookies! Learn More

Ce site utilise des cookies !

En continuant à utiliser ce site, vous vous engagez à nous permettre de stocker des cookies sur votre ordinateur.

 

Si nous utilisons des cookies et retenons des données anonymes, c’est pour nous aider à mieux gérer notre mesure d’audience, aider nos partenaires commerciaux à nous rémunérer et nos partenaires publicitaires à proposer des annonces qui vous correspondent.

 

Grâce à ces cookies, le forum est en mesure de savoir qui écrit un message et utile pour le système d'authentification.

 

En cliquant sur « J'accepte », vous acceptez l'utilisation par NAS-Forum de cookies publicitaires et de mesure d'audience fine.

Docker avec Bitwarden et fail2ban - solution


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
````
	
Modifié par Tostaki
signalement de la solution
Lien à poster
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 à poster
Partager sur d’autres sites
  • 3 weeks later...

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

Modifié par Tostaki
lien clicable
Lien à poster
Partager sur d’autres sites

Fail2ban est indépendant donc oui.

Il faut mettre à jour l'accès au fichier de logs et  les filtres.

Si vous voulez, poussez moi vos réglages, je mettrais à jour le dépôt

Modifié par Tostaki
Lien à poster
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 à poster
Partager sur d’autres sites
  • 8 months later...

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 à poster
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.

Modifié par .Shad.
Lien à poster
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 à poster
Partager sur d’autres sites
  • 1 month later...
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 à poster
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é.

Modifié par .Shad.
Lien à poster
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 à poster
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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.