Bienvenue sur ce tutoriel, qui vous présente comment utiliser KeePassXC sur ordinateur fixe et mobile.
Dans ce tutoriel, nous verrons :
Note importante concernant l'usage KeePassXC / Ungoogled Chromium : ce navigateur permettant d'assurer une sécurité élevée, il n'est pas évident d'installer des extensions car la fonction est désactivée par défaut. De même il faudra configurer correctement l'extension sur votre distribution pour qu'elle reconnaisse l'application KeePassXC, notamment si vous utilisez les versions Flatpak.
En somme, si vous pouvez éviter UC avec KeePassXC, faites-le
Pour ceux qui sont à l'aise avec l'outil informatique, vous pourrez tenter l'aventure !
Ouvrez l'application :
Pour les algorithmes, veuillez relire l'article sur les gestionnaires de mots de passe.
Voilà, bravo, votre base est créée.
Ouvrez l'application :
Sélectionnez le répertoire et le fichier de la base préalablement enregistré lors de la création
Ouvrez l'application et votre base :
Ouvrez l'application et votre base :
Le presse-papier correspond à la partie de la mémoire qui vous sert à faire des copiers-collés. Si vous utilisez cette fonction pour copier les mots de passe, il est important de nettoyer cette partie de mémoire rapidement afin de ne laisser aucune trace de mot de passe. Nous positionnons la suppression à 1 min, avec un maximum recommandé de 5 min.
Egalement, il est important de revérouiller la base après une période d'inactivité sur l'application. Cela évite que lorsque vous quittez votre machine longtemps l'on puisse jeter un coup d'oeil à vos mots de passe. Nous recommandons : si votre machine est dans un endroit où d'autres personnes sont présentes (travail ? café ?) positionnez le revérouillage à 2 min. Si votre machine est à la maison vous pouvez positionner à 10 min.
Enfin, activez les options dans le bloc 3.
Il est tout à fait possible si vous téléchargez des miniatures d'internet de plutôt passer par l'index Duckduckgo. C'est optionnel, et nous ne recommandons pas forcément de télécharger des miniatures, cela implique des requêtes sur internet, que vous devriez éviter avec ce genre d'outils.
Avant d'entrer dans le vif du sujet, il est très important de bien considérer les aspects 'sécurité' autour de cette pratique.
Si vous avez plusieurs machines sur lesquelles vous souhaitez avoir accès à vos mots de passe, vous avez 2 possibilités afin d'accéder à votre base sur plusieurs machines :
Utiliser une clé USB (de confiance) permet d'éviter que le fichier se transfère sur un réseau, limitant donc son exposition et de facto diminuer la probabilité (même si déjà toute relative !) de compromission.
Cette solution est en revanche assez contraignante, au quotidien, surtout si vous souhaitez avoir à disposition votre base sur plus de 2 ou 3 machines...
Attention, garder son fichier base sur la clé USB est une fausse bonne idée : non seulement vous pouvez la perdre facilement, mais vous pouvez également perdre les données si la clé USB est corrompue (cela arrive parfois tout comme les cartes SD, ces périphériques ayant une durée de vie moindre que des disques durs mécaniques voire SSD du fait du type de mémoire utilisée).
Bien entendu, ici, cela implique certains compromis en terme de sécurité, car vous allez de ce fait augmenter la surface d'attaque sur votre fichier. Afin de garder une relative confiance, vous devrez respecter certaines recommandations :
Vous allez devoir faire confiance à l'application que vous utiliserez afin de synchroniser le fichier 'base de données' : privilégiez toujours une application de confiance open source et/ou libre, bien notée par ses utilisateurs, potentiellement avec de bons retours d'experts.
En termes de bonnes pratiques et d'hygiène cyber, vous devriez uniquement autoriser la synchronisation sur votre réseau local. Exit donc la synchronisation via 3G/4G/5G ou sur un WiFi autre que le vôtre ! La raison est simple : vous limitez le risque à un échange purement local, chez vous, sur votre réseau, et non sur internet, réseau publique.
Souvenez-vous toujours de limiter le nombre de sauvegardes de ce fichier. Moins vous aurez de copies, moins le risque sera important qu'il se retrouve ailleurs ! Nous recommandons de limiter à 3 le nombre de sauvegardes. Attention donc particulièrement si vous activez le versioning ou préservation des versions de fichiers.
Si possible, vous devriez protéger la synchronisation : une protection par mot de passe pour chiffrer les échanges au minimum et/ou l'utilisation de signatures pour vérifier qu'émetteurs et destinataires sont bien ceux qu'ils prétendent être, etc. Cela reste facultatif (si vous faites pleinement confiance à votre réseau et vos machines !) car certaines applications ont du mal à fonctionner ainsi.
Cela reste bien sûr des recommandations et vous êtes libres de les adopter ou non, sachant que la base de données elle-même est chiffrée.
Voyons maintenant dans la pratique ce que donne la solution 2 :
Dans notre exemple, nous utilisons Syncthing, une application de synchronisation réseau très connue de la communauté et très simple d'usage. Egalement, nous utiliserons pour l'exemple un ordinateur et un téléphone, car c'est le cas d'utilisation qui reviendra le plus souvent.
Pour ce faire, rendez-vous sur ce tutoriel spécifique.
Note : vous pouvez très bien utiliser votre propre application de synchronisation, il n'y aura aucun problème !
Il est souvent fastidieux de copier le mot de passe et le coller dans les champs respectifs à chaque fois que l'on désire aller sur un compte en ligne. Il est possible de faire appel à une extension sur votre navigateur qui sera capable de vous pré-remplir les champs lorsque vous tombez sur une page d'identification.
L'extension se nomme 'KeepassXC-Browser extension' et est disponible sur la plupart des navigateurs :
Dans cet exemple, nous utiliserons Mozilla Firefox sans autre paramétrage.
Nous traitons dans la partie Synchronisation non établie les éventuels problèmes de connexion rencontrés avec Ungoogled Chromium et Librewolf.
Tout d'abord, il va nous falloir configurer KeepassXC. Afin de configurer l'accès à l'extension vers votre base, ouvrez KeePassXC et paramétrez comme suit :
Ensuite, installez l'extension sur votre navigateur :
Ouvrez votre base sur KeePassXC (si ce n'est pas déjà fait !), l'extension vous demandera d'initier la connexion :
En cliquant sur le bouton "Se connecter", une fenêtre s'ouvrira vous demandant de nommer cette connexion. Nous prendrons comme exemple "connec-test". Voici ensuite ce que vous devrez obtenir comme message :
Voilà, vous pouvez maintenant naviguer sur vos sites, si vous avez entré les URLs, l'extension vous proposera de remplir automatiquement les champs en cliquant sur l'icône KeepassXC.
Il est parfois plus complexe sur certains navigateurs de mettre en place la synchronisation. Cela dépend de certains facteurs :
Lorsque vous souhaiterez établir la connexion entre l'extension KeepassXC installée dans UG et l'application KeepassXC, le navigateur vous renverra une erreur du type "L'échange de clés a échoué" ou "Impossible de se connecter à Keepass [...]" !
-
Nous allons devoir paramétrer Flatpak afin d'autoriser la communication entre ces 2 applications.
Pré-requis :
Procédure pour UG : Voici la procédure à suivre
flatpak override --user --filesystem={/var/lib,xdg-data}/flatpak/{app/org.keepassxc.KeePassXC,runtime/org.kde.Platform}:ro --filesystem=xdg-run/app/org.keepassxc.KeePassXC:create com.github.Eloston.UngoogledChromium
cat << 'EOF' > ~/.var/app/com.github.Eloston.UngoogledChromium/config/chromium/Default/keepassxc-proxy-wrapper.sh
#!/bin/bash
APP_REF="org.keepassxc.KeePassXC/x86_64/stable"
for inst in "$HOME/.local/share/flatpak" "/var/lib/flatpak"; do
if [ -d "$inst/app/$APP_REF" ]; then
FLATPAK_INST="$inst"
break
fi
done
[ -z "$FLATPAK_INST" ] && exit 1
APP_PATH="$FLATPAK_INST/app/$APP_REF/active"
RUNTIME_REF=$(awk -F'=' '$1=="runtime" { print $2 }' < "$APP_PATH/metadata") RUNTIME_PATH="$FLATPAK_INST/runtime/$RUNTIME_REF/active"
exec flatpak-spawn --env=LD_LIBRARY_PATH=/app/lib --app-path="$APP_PATH/files" --usr-path="$RUNTIME_PATH/files" -- keepassxc-proxy "$@"
EOF
Puis :
sudo chmod +x ~/.var/app/com.github.Eloston.UngoogledChromium/config/chromium/Default/keepassxc-proxy-wrapper.sh
org.keepassxc.keepassxc_browser.json
via cette commande :cp ~/.config/chromium/NativeMessagingHosts/ ~/.var/app/com.github.Eloston.UngoogledChromium/config/chromium/NativeMessagingHosts/
~/.var/app/com.github.Eloston.UngoogledChromium/config/chromium/NativeMessagingHosts/
cd ~/.var/app/com.github.Eloston.UngoogledChromium/config/chromium/NativeMessagingHosts/
org.keepassxc.keepassxc_browser.json
qui se trouve à l'intérieur, pour pointer vers le proxy. L'original devrait être comme suit :{
"allowed_origins": [
"chrome-extension://pdffhmdngciaglkoonimfcmckehcpafo/",
"chrome-extension://oboonakemofpalcgghocfoadofidjkkk/"
],
"description": "KeePassXC integration with native messaging support",
"name": "org.keepassxc.keepassxc_browser",
"path": "/var/lib/flatpak/exports/bin/org.keepassxc.KeePassXC",
"type": "stdio"
}
Nous allons le modifier comme ceci (modification de la ligne 8) :
{
"allowed_origins": [
"chrome-extension://pdffhmdngciaglkoonimfcmckehcpafo/",
"chrome-extension://oboonakemofpalcgghocfoadofidjkkk/"
],
"description": "KeePassXC integration with native messaging support",
"name": "org.keepassxc.keepassxc_browser",
"path": "/home/<VOTRE NOM D'UTILISATEUR>/.var/app/com.github.Eloston.UngoogledChromium/config/chromium/Default/keepassxc-proxy-wrapper.sh",
"type": "stdio"
}
Attention 1 : <VOTRE NOM D'UTILISATEUR> doit être remplacé par votre nom d'utilisateur sur votre machine, bien entendu !
Attention 2 : Il n'est pas possible d'utiliser le
~/
pour remplacer /home/<VOTRE NOM D'UTILISATEUR>/
sed -i 's!"/var/lib/flatpak/exports/bin/org.keepassxc.KeePassXC"!"/home/<VOTRE NOM D'UTILISATEUR>/.var/app/com.github.Eloston.UngoogledChromium/config/chromium/Default/keepassxc-proxy-wrapper.sh"!g' org.keepassxc.keepassxc_browser.json
Vous pouvez vérifier que la ligne 8 a bien été modifiée en exécutant cat org.keepassxc.keepassxc_browser.json
qui devrait vous afficher le contenu du fichier.
Cela devrait fonctionner maintenant !
Le même problème que pour UG peut arriver ici encore.
Mais le cas Librewolf est encore plus compliqué à configurer.
Nous allons devoir paramétrer encore plus finement Flatpak ainsi que notre distro afin d'autoriser la communication entre ces 2 applications.
Tout le crédit de cette solution est à mettre sur cet utilisateur et son blog ainsi qu'au développeur ayant publié la solution de proxy.
Nous tentons juste d'apporter quelques corrections mineures et de rendre plus accessible cette solution...
Pré-requis :
Procédure pour Librewolf : Voici la procédure à suivre
mkdir -p ~/.librewolf/native-messaging-hosts && \
cp ~/.mozilla/native-messaging-hosts/org.keepassxc.keepassxc_browser.json ~/.librewolf/native-messaging-hosts
mkdir -p /tmp/kpxcp && cd /tmp/kpxcp && \
wget https://github.com/varjolintu/keepassxc-proxy-rust/archive/refs/heads/master.zip && unzip master.zip && \
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Lors de l'installation de Rust, vous devriez obtenir ce prompt :
Ecrivez uniquement le chiffre 1 puis ENTREE.
Rust finit de s'installer.
cd /tmp/kpxcp && \
rustup target add x86_64-unknown-linux-musl && cd keepassxc-proxy-rust-master/ && \
RUSTFLAGS='-C link-args=-s' cargo build --release --target x86_64-unknown-linux-musl && \
cp target/x86_64-unknown-linux-musl/release/keepassxc-proxy ~/.librewolf/native-messaging-hosts/ && \
cp target/x86_64-unknown-linux-musl/release/keepassxc-proxy ~/.mozilla/native-messaging-hosts/
~/.mozilla/native-messaging-hosts/
cd ~/.mozilla/native-messaging-hosts
org.keepassxc.keepassxc_browser.json
qui se trouve à l'intérieur, pour pointer vers le proxy. L'original devrait être comme suit :{
"allowed_extensions": [
"keepassxc-browser@keepassxc.org"
],
"description": "KeePassXC integration with native messaging support",
"name": "org.keepassxc.keepassxc_browser",
"path": "/var/lib/flatpak/exports/bin/org.keepassxc.KeePassXC",
"type": "stdio"
}
Nous le modifions comme ceci (modification de la ligne 7) :
Attention 1 : <VOTRE NOM D'UTILISATEUR> doit être remplacé par votre nom d'utilisateur sur votre machine, bien entendu !
Attention 2 : Il n'est pas possible d'utiliser le
~/
pour remplacer /home/<VOTRE NOM D'UTILISATEUR>/
{
"allowed_extensions": [
"keepassxc-browser@keepassxc.org"
],
"description": "KeePassXC integration with native messaging support",
"name": "org.keepassxc.keepassxc_browser",
"path": "/home/<VOTRE NOM D'UTILISATEUR>/.mozilla/native-messaging-hosts/keepassxc-proxy",
"type": "stdio"
}
sed -i 's!"/var/lib/flatpak/exports/bin/org.keepassxc.KeePassXC"!"/home/<VOTRE NOM D'UTILISATEUR>/.mozilla/native-messaging-hosts/keepassxc-proxy"!g' org.keepassxc.keepassxc_browser.json
Vous pouvez vérifier que la ligne 7 a bien été modifiée en exécutant cat org.keepassxc.keepassxc_browser.json
qui devrait vous afficher le contenu du fichier.
~/.librewolf/native-messaging-hosts/
cd ~/.librewolf/native-messaging-hosts
org.keepassxc.keepassxc_browser.json
qui se trouve à l'intérieur, pour pointer vers le proxy. L'original devrait être comme suit :{
"allowed_extensions": [
"keepassxc-browser@keepassxc.org"
],
"description": "KeePassXC integration with native messaging support",
"name": "org.keepassxc.keepassxc_browser",
"path": "/var/lib/flatpak/exports/bin/org.keepassxc.KeePassXC",
"type": "stdio"
}
Nous le modifions comme ceci (modification de la ligne 7) :
Attention 1 : <VOTRE NOM D'UTILISATEUR> doit être remplacé par votre nom d'utilisateur sur votre machine, bien entendu !
Attention 2 : Il n'est pas possible d'utiliser le
~/
pour remplacer /home/<VOTRE NOM D'UTILISATEUR>/
{
"allowed_extensions": [
"keepassxc-browser@keepassxc.org"
],
"description": "KeePassXC integration with native messaging support",
"name": "org.keepassxc.keepassxc_browser",
"path": "/home/<VOTRE NOM D'UTILISATEUR>/.librewolf/native-messaging-hosts/keepassxc-proxy",
"type": "stdio"
}
sed -i 's!"/var/lib/flatpak/exports/bin/org.keepassxc.KeePassXC"!"/home/<VOTRE NOM D'UTILISATEUR>/.librewolf/native-messaging-hosts/keepassxc-proxy"!g' org.keepassxc.keepassxc_browser.json
Vous pouvez vérifier que la ligne 7 a bien été modifiée en exécutant cat org.keepassxc.keepassxc_browser.json
qui devrait vous afficher le contenu du fichier.
flatpak install flathub com.github.tchx84.Flatseal
Validez par Y puis ENTREE.
Cette application va nous permettre de finement configurer les accès système des 2 applications Flatpak.
~/.mozilla/native-messaging-hosts:ro
~/.librewolf/native-messaging-hosts:ro
~/.mozilla/native-messaging-hosts:ro
~/.librewolf/native-messaging-hosts:ro
xdg-run/app/org.keepassxc.KeePassXC:ro
Deux messages d'avertissement (cf. ci-après) sont susceptibles d'apparaître lorsque vous lancez KeepassXC. Ignorez-les simplement en cliquant sur OK.
~/.librewolf/native-messaging-hosts
dans le champ, comme suit :Plusieurs messages d'avertissement peuvent apparaître lorsque vous validez la configuration. Ignorez- les simplement en cliquant sur OK.
sudo flatpak override --filesystem=xdg-run/kpxc_server:ro io.gitlab.librewolf-community
mkdir -p ~/.local/share/user-tmpfiles.d && \
echo "
# This file creates a symbolic link for the KeePassXC UNIX socket.
# This makes it possible to access the UNIX socket under it s usual path
# in \$XDG_RUNTIME_DIR by creating a symbolic link pointing inside the
# flatpak-specific dir.
# see https://is.gd/flatpakFirefoxKPXC
# %t = \$XDG_RUNTIME_DIR (if run as user), see \"man tmpfiles.d\"
# type path mode UID GID Age Argument
L %t/kpxc_server - - - - %t/app/org.keepassxc.KeePassXC/org.keepassxc.KeePassXC.BrowserServer
" > ~/.local/share/user-tmpfiles.d/kpxc_server.conf
Idem ici et à chaque fois que vous ouvrirez KeepassXC, les 2 messages d'avertissement (cf. ci-après) apparaîtront. Ignorez-les en cliquant sur OK.
Cela devrait fonctionner maintenant !
N'oubliez pas, à chaque utilisation :
-- Lancez KeepassXC en premier,
-- Ignorez les 2 messages d'alerte.
Pour ceux qui souhaiteraient savoir comment fonctionne cette extension avec l'application KeePass, pour pouvoir peut-être comprendre le fonctionnement intrinsèque, voici en substance ce qui est mis en place pour l'échange des données entre navigateur et KeePassXC :
Cette solution est plutôt robuste et rend la communication assez sécurisée, surtout pour le mot de passe. De plus, cela évite d'utiliser le presse-papier sans chiffrer le mot de passe lors d'un classique copier-coller...
Pour plus de détails, vous pouvez consulter la page dédiée sur le dépôt de l'extension.
Contributeur(s): Ayo