Aller au contenu
View in the app

A better way to browse. Learn more.

Next

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posté(e)

Bonjour,

Voici la situation
Je dispose d'un serveur tang
J'ai un serveur "client" sous Ubuntu 24.04 LTS server avec son disque système chiffré en LUSK.
J'aimerai que le déchiffrement s'éxécute comme suit :
1. Déchiffrement via le couple Clevis / Tang
2. Au bout de 30s si le serveur Tang n'est pas accessible déchiffrement avec un fichier clé situé sur une clé USB avec un délais de 3 minutes pour la brancher
3. En l'absence de clé usb au bout des 3 minutes, demande de la phrase de passe pendant 3 minutes
4. En cas d'absence de phrase de passe ou au bout de 3 erreurs extinctions du serveur

Pour cela
1. J'installe et configure Clevis:
sudo apt install clevis clevis-luks clevis-initramfs
sudo clevis luks bind -d /dev/sda3 tang '{"url": "http://<adresse ip du serveur>:<port d'écoute de Tang>"}'

  1. Je configure l'utilisation de la clé USB:

    sudo mkdir /boot/key

    sudo mount UUID=<UUID de la clé> /boot/key/ j'utilise l'UUID de la clé car en cas d'ajout d'un disque de données la lettre de lecteur pourrait changer

    sudo cryptsetup luksAddKey  UUID=<UUID du disque système chiffré LUSK> /boot/key/<fichier clé>
    sudo nano /usr/local/bin/unlock_luks

  2. je créer un script d'ordonnancement du déchiffrement

    /usr/local/bin/unlock_luks

    #!/bin/sh
    # Ce script doit retourner la clé de déchiffrement sur stdout
    
    USB_UUID="<UUID de la clé usb>"
    MOUNT_POINT="/tmp/keyusb"
    KEY_FILE="<fichier clé>"
    CLEVIS_TIMEOUT=10  # Timeout de 30 secondes pour Tang
    USB_TIMEOUT=30     # Timeout de 180 secondes pour la clé USB
    # 1. Essayer Clevis/Tang avec timeout
    if timeout "$CLEVIS_TIMEOUT" /usr/bin/clevis luks unlock -d "$CRYPTTAB_SOURCE" -n "$CRYPTTAB_NAME" 2>/dev/null; then
        # Clevis a réussi à déverrouiller
        exit 0
    fi
    
    # 2. Essayer la clé USB (attendre jusqu'à 180 secondes)
    counter=0
    while [ $counter -lt $USB_TIMEOUT ]; do
        if [ -e "/dev/disk/by-uuid/$USB_UUID" ]; then
            mkdir -p "$MOUNT_POINT" 2>/dev/null
    
            if mount -o ro "/dev/disk/by-uuid/$USB_UUID" "$MOUNT_POINT" 2>/dev/null; then
                if [ -f "$MOUNT_POINT/$KEY_FILE" ]; then
                    # Retourner la clé sur stdout
                    cat "$MOUNT_POINT/$KEY_FILE"
                    umount "$MOUNT_POINT" 2>/dev/null
                    exit 0
                fi
                umount "$MOUNT_POINT" 2>/dev/null
            fi
        fi
        counter=$((counter + 1))
        sleep 1
    done
    
    # 3. Demander la passphrase
    /lib/cryptsetup/askpass "Enter passphrase for $CRYPTTAB_SOURCE: "
    

  3. je configure /etc/crypttab et je met à jour initramfs


    sudo nano /etc/crypttab

    /etc/crypttab

    1. #dm_crypt-0 UUID=<UUID du disque système chiffré LUSK> none LUKS
      dm_crypt-0 UUID=<UUID du disque système chiffré LUSK> none LUKS,keyscript=/usr/local/bin/unlock_luks,initramfs

    sudo update-initramfs -u -k all

    Lorsque je test la phrase de passe est demandée en parallèle de l’exécution de Clevis et de la lecture de la clé USB
    J'ai fais plusieurs modifications pour essayer d'ordonnancer la phrase de passe à la fin mais cela casse toujours la configuration et empêche le boot

    Je n'ai du coup pas encore etudié l'extinction automatique après 180 secondes d'attente de la phrase de passe ou 3 erreurs de saisie.

    Auriez-vous une idée?




Modifié par jean_laurencin

Posté(e)
il y a 25 minutes, MeowMeow a dit :

Donc essaie avec cron.

mais cron est dans le système chiffré donc il ne sers à rien avant d'avoir été dechiffré.
il faut voir avec systemd dans l'initrd mais je sais pas s'il est possible de mettre des timers là.

Posté(e)

Je ne connais pas ces manipulations, voici mes remarques:

  • Peut-être que clevis est une commande non bloquante? Dans ce cas timeout ne sert à rien...

    • Si c'est le ca,s il faudra peut-être remplacer par un

sleep 180 &
... les commandes de déchiffrement ...
... un test pour savoir si c'est bon ...
wait

Et du coup tout se fait en même temps.


Posté(e)

je ne suis pas familier avec timeout mais d'après ce que j'ai trouvé c'est mieux de tester son exit status qui vaut 124 si timeout à killer le process

timeout 10 ...
exit_status=$?
if [[ $exit_status -eq 124 ]]; then

et tu mets tout le reste dans le then comme ça, ça devrais bien s’exécuter seulement si tu as eu une sortie en 124

autre point sleep peut sortir avant s'il reçoit un signal externe

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.

Invité
Répondre à ce sujet…

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.