Fin de Passprotect

Posté le 27. July 2020 dans Passprotect

Bonjour à tous,

Cela fait longtemps que je n'ai pas écrit de billet de blog (3 ans et demi). Et il s'en est passé des choses. Je travaille actuellement sur un nouveau projet dont je reviendrai vous parler plus tard.

A aujourd'hui je souhaiterais surtout vous parler de la fin de service de mon propre gestionnaire de mot de passe Passprotect.

Ces dernières années, j'ai utilisé mon propre gestionnaire de mot de passe: Passprotect développé par mes soins :). Je n'avais pas trouvé mon bonheur par ailleurs (OpenSource, Client WEB, ...) et avais décidé de développer le mien.

Puis j'ai découvert Bitwarden.

La Fin

L'avantage d'utiliser un logiciel fabriqué par soi-même est la fierté de l'utiliser et de voir d'autres personnes l'utiliser également.

Malheureusement Passprotect ne possédait que deux utilisateurs actifs (et quelques Bot/SPAM) et ne proposait pas les fonctionnalités que d'autres proposaient. J'aurais pu les développer mais n'ayant pas assez d'utilisateurs, je n'avais pas assez de motivation pour le faire.

J'ai développé mon gestionnaire de mot de passe, à moi, car je ne me retrouvais pas dans les gestionnaires de mot de passe existants. Puis un jour, par hasard, j'ai découvert bitwarden.

J'ai alors décidé de le tester, (et cela fait maintenant presque un an), et étant satisfait, j'ai décidé d'arrêter de développer mon gestionnaire de mot de passe pour me concenter sur d'autres logiciels.

Même si le nom de domaine servant l'application n'existe plus, les sources resteront néanmoins disponibles ici, si cela intéresse quelqu'un :

Si quelqu'un trouve que le projet vaut toujours le coup, qu'il n'hésite pas à me contacter ou à proposer des évolutions, ou à développer des nouvelles fonctionnalités.

Le début

Parlons alors de Bitwarden.

D'un point de vue technique, c'est pas tout rose si on regarde la version officielle.

Ce qui est super, c'est qu'il existe un client pour Windows, Linux, MacOS, Android, Apple, les différents navigateurs et tout cela en OpenSource :).

Par contre la partie serveur (qui est également en OpenSource), nécessite :

  • .NET Core 3.1 SDK
  • SQL Serveur 2017

Et je n'apprécie pas forcément ces deux technos. (Et je n'ai surtout pas envie d'installer une base SQL Serveur uniquement pour un gestionnaire de mot de passe).

Par contre pour la partie Serveur, il existe une alternative non officielle en RUST (un fork, quoi): bitwarden_rs. Le serveur peut alors utiliser une base MySQL, Sqlite, PostgresQL.

Je décide alors de l'installer et l'utiliser pour me faire un avis.

Quelles sont les fonctionnalités que j'apprécie ?

Après quelques mois d'utilisation, voici ce que j'apprécie :

  • Le partage de mot de passe entre compte
  • Les clients sous Android et dans les différents navigateurs.
  • Les rapports d'utilisation des mots de passes :

    • réutilisés
    • exposés
    • faibles

Je n'y ai pas trouvé de point que je n'apprécie pas (à part que ce n'est pas développé par moi même :D).

Comment l'installer ?

Il faudra que je vous parle de mon infra-structure et de comment j'héberge mes différents sites, mais en gros je me base entièrement sur Docker et Docker Swarm. Du coup, l'hébergement de bitwarden également passe par là.

Voici mon fichier docker-compose.yml qui injecté à Docker Swarm :

version: "3.4"

networks:
  traefik-swarm:
    external:
      name: traefik-swarm
  sendmail:
    external:
      name: sendmail

services:
  bitwarden:
    image: bitwardenrs/server
    volumes:
      - /bitwarden/data:/data
    environment:
      - WEBSOCKET_ENABLED=true
      - SIGNUPS_ALLOWED=false
      - DOMAIN=https://bitwrd.shadoware.org
      - SMTP_HOST=postfix_relay
      - SMTP_FROM=bitwrd@shadoware.org
      - SMTP_PORT=25
      - SMTP_SSL=false
    networks:
      - traefik-swarm
      - sendmail
    deploy:
      labels:
        - traefik.enable=true
        - traefik.http.routers.bitwarden_server_router.rule=Host(`bitwrd.{{ domains_default }}`)
        - traefik.http.routers.bitwarden_server_router.entrypoints=web
        - traefik.http.routers.bitwarden_server_router.middlewares=redirecthttps@file,bitwarden_headers
        - traefik.http.routers.bitwarden_server_router_https.rule=Host(`bitwrd.{{ domains_default }}`)
        - traefik.http.routers.bitwarden_server_router_https.middlewares=bitwarden_headers
        - traefik.http.routers.bitwarden_server_router_https.tls
        - traefik.http.routers.bitwarden_server_router_https.tls.certresolver=shadoware
        - traefik.http.routers.bitwarden_server_router_https.tls.domains[0].main={{ domains_default }}
        - traefik.http.routers.bitwarden_server_router_https.tls.domains[0].sans=*.{{ domains_default }}
        - traefik.http.services.bitwarden_server.loadbalancer.server.port=80
        - traefik.http.middlewares.bitwarden_headers.headers.sslRedirect=true
        - traefik.http.middlewares.bitwarden_headers.headers.browserXssFilter=true
        - traefik.http.middlewares.bitwarden_headers.headers.contentTypeNosniff=true
        - traefik.http.middlewares.bitwarden_headers.headers.sslHost=bitwrd.{{ domains_default }}
        - traefik.http.middlewares.bitwarden_headers.headers.frameDeny=true
      restart_policy:
        condition: any
      update_config:
        order: start-first

Comme vous pouvez le voir, j'utilise traefik pour router les noms de domaines vers les bonnes images. Dans mon infrastructure j'essaye d'isoler au mieux chaque application et utilise ensuite les différents réseaux pour les faire communiquer.

Par exemple, cette application communique avec le réseau d'envoi de mail et aussi avec celui de traefik pour sortir sur Internet.

Pour finir

Ce que j'ai appris avec tout cela : j'ai apprécié faire mon propre gestionnaire de mot de passe. En développant ce dernier, j'ai appris quelques trucs sur comment bien gérer le chiffrage des mots de passes, de la bonne utilisation du sel, par exemple.

Ce que je savais déjà par contre, c'est qu'il est très difficile de concurrencer d'autres structures (comme Lastpass, BitWarden, ...) que beaucoup de monde utilise déjà.

Et je rappelle également que quelque soit la solution que vous choisissez pour stocker vos mots de passes, il est important :

  • d'avoir un mot de passe différent par site internet, ainsi si un site se fait pirater, ce ne sont pas tous vos mots de passe qui sont à remplacer,
  • avoir un gestionnaire de mot de passe sécurisé est important, car si c'est ce dernier qui se fait véroler, vous devrez renouveller tous vos mots de passes,
  • utiliser un gestionnaire de mot de passe permet aussi de savoir tous les sites où on laisse une trace. En effet il est souvent très facile de créer un compte pour un site puis de ne jamais y retourner avant plusieurs années. Avoir une trace de ces sites peut permettre de les supprimer régulièrement et de savoir où on a laissé une trace numérique.