seb773 Posté(e) le 12 mars Partager Posté(e) le 12 mars 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, 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
MagJ Posté(e) le 13 mars Partager Posté(e) le 13 mars 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 ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
seb773 Posté(e) le 13 mars Auteur Partager Posté(e) le 13 mars 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. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CyberFr Posté(e) le 14 mars Partager Posté(e) le 14 mars @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. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
.Shad. Posté(e) le 14 mars Partager Posté(e) le 14 mars 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 ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
seb773 Posté(e) le 14 mars Auteur Partager Posté(e) le 14 mars 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 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
syruce76 Posté(e) le 4 mai Partager Posté(e) le 4 mai (modifié) salut, de mon coté je n'ai plus le meme résultat depuis plusieurs jours. soit la mise a jour du DSM 7.2.1-69057 Update 5 ( DS920+ ) iptables v1.8.10 soit la maj de crazymax/fail2ban. crazymax/fail2ban:1.1.0 j'ai tout retourné dans tout les sens ... impossible de regler le probleme pour le moment, cela fonctionnais bien avant 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,678 fail2ban.actions [1]: ERROR Failed to execute ban jail 'vaultwarden' action 'iptables-allports' info 'ActionInfo({'ip': 'XX.XX.XX.XX', 'family': 'inet4', 'fid': <function Actions.ActionInfo.<lambda> at 0x7fd7e3965d00>, 'raw-ticket': <function Actions.ActionInfo.<lambda> at 0x7fd7e3966480>})': Error starting action Jail('vaultwarden')/iptables-allports: 'Script error' 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,677 fail2ban.utils [1]: ERROR 7fd7e39cd6b0 -- returned 4 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,677 fail2ban.utils [1]: ERROR 7fd7e39cd6b0 -- stderr: 'iptables v1.8.10 (nf_tables): Could not fetch rule set generation id: Invalid argument' 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,677 fail2ban.utils [1]: ERROR 7fd7e39cd6b0 -- stderr: 'iptables v1.8.10 (nf_tables): Could not fetch rule set generation id: Invalid argument' 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,677 fail2ban.utils [1]: ERROR 7fd7e39cd6b0 -- stderr: 'iptables v1.8.10 (nf_tables): Could not fetch rule set generation id: Invalid argument' 2024/05/04 22:19:23 stdout done 2024/05/04 22:19:23 stdout { iptables -w -C INPUT -p $proto -j f2b-vaultwarden >/dev/null 2>&1; } || { iptables -w -I INPUT -p $proto -j f2b-vaultwarden; } 2024/05/04 22:19:23 stdout for proto in $(echo 'tcp' | sed 's/,/ /g'); do 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,677 fail2ban.utils [1]: ERROR 7fd7e39cd6b0 -- exec: { iptables -w -C f2b-vaultwarden -j RETURN >/dev/null 2>&1; } || { iptables -w -N f2b-vaultwarden || true; iptables -w -A f2b-vaultwarden -j RETURN; } 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,662 fail2ban.actions [1]: NOTICE [vaultwarden] Restore Ban XX.XX.XX.XX 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,579 fail2ban.actions [1]: ERROR Failed to execute ban jail 'vaultwarden-admin' action 'iptables-allports' info 'ActionInfo({'ip': 'XX.XX.XX.XX', 'family': 'inet4', 'fid': <function Actions.ActionInfo.<lambda> at 0x7fd7e3965d00>, 'raw-ticket': <function Actions.ActionInfo.<lambda> at 0x7fd7e3966480>})': Error starting action Jail('vaultwarden-admin')/iptables-allports: 'Script error' 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,579 fail2ban.utils [1]: ERROR 7fd7e3224370 -- returned 4 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,579 fail2ban.utils [1]: ERROR 7fd7e3224370 -- stderr: 'iptables v1.8.10 (nf_tables): Could not fetch rule set generation id: Invalid argument' 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,579 fail2ban.utils [1]: ERROR 7fd7e3224370 -- stderr: 'iptables v1.8.10 (nf_tables): Could not fetch rule set generation id: Invalid argument' 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,579 fail2ban.utils [1]: ERROR 7fd7e3224370 -- stderr: 'iptables v1.8.10 (nf_tables): Could not fetch rule set generation id: Invalid argument' 2024/05/04 22:19:23 stdout done 2024/05/04 22:19:23 stdout { iptables -w -C INPUT -p $proto -j f2b-vaultwarden-admin >/dev/null 2>&1; } || { iptables -w -I INPUT -p $proto -j f2b-vaultwarden-admin; } 2024/05/04 22:19:23 stdout for proto in $(echo 'tcp' | sed 's/,/ /g'); do 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,579 fail2ban.utils [1]: ERROR 7fd7e3224370 -- exec: { iptables -w -C f2b-vaultwarden-admin -j RETURN >/dev/null 2>&1; } || { iptables -w -N f2b-vaultwarden-admin || true; iptables -w -A f2b-vaultwarden-admin -j RETURN; } 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,564 fail2ban.actions [1]: ERROR Failed to execute ban jail 'vaultwarden-admin' action 'iptables-allports' info 'ActionInfo({'ip': 'XX.XX.XX.XX', 'family': 'inet4', 'fid': <function Actions.ActionInfo.<lambda> at 0x7fd7e3965d00>, 'raw-ticket': <function Actions.ActionInfo.<lambda> at 0x7fd7e3966480>})': Error starting action Jail('vaultwarden-admin')/iptables-allports: 'Script error' 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,563 fail2ban.utils [1]: ERROR 7fd7e3224370 -- returned 4 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,563 fail2ban.utils [1]: ERROR 7fd7e3224370 -- stderr: 'iptables v1.8.10 (nf_tables): Could not fetch rule set generation id: Invalid argument' 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,563 fail2ban.utils [1]: ERROR 7fd7e3224370 -- stderr: 'iptables v1.8.10 (nf_tables): Could not fetch rule set generation id: Invalid argument' 2024/05/04 22:19:23 stdout 2024-05-04 20:19:23,563 fail2ban.utils [1]: ERROR 7fd7e3224370 -- stderr: 'iptables v1.8.10 (nf_tables): Could not fetch rule set generation id: Invalid argument' vaultwarden.conf de jail.d [DEFAULT] ignoreip = 172.0.0.1/8 192.168.10.0/24 10.6.0.0/24 #Ban for 1 day bantime = 86400 destemail = xxxxxxxxx@gmail.com sender = fail2ban@host.com(hostname -f) #findtime for 4h findtime = 14400 maxretry = 3 backend = auto banaction = iptables-allports action = iptables-allports[name=vaultwarden] [vaultwarden] enabled = true port = 80,6603,443, filter = vaultwarden logpath = /logs/vaultwarden.log vaultwarden.conf de filter.d [INCLUDES] before = common.conf [Definition] failregex = ^.*Username or password is incorrect\. Try again\. IP: <ADDR>\. Username:.*$ ignoreregex = Modifié le 4 mai par syruce76 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
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.