rendez-vous sur ArraKISS
Blog Archives Contact
whoami@ybad.name
# find . -iname

    Chiffrer son dossier personnel

    Si pour une quelconque raison votre installation n’est pas chiffrée entièrement, comme c’est expliqué dans la FAQ (en fr), on peut quand même chiffrer le /home après coup. Ce dernier contient tous vos mots de passes et préférences configurés dans les applications que vous utilisez (messagerie, ssh…)…

    Tout d’abord, sauvegardez entièrement votre dossier /home, puisque nous allons devoir l’effacer.

    Voici un exemple de découpage d’une installation existante :

    # disklabel sd0
    [...]
    16 partitions:
    #                size           offset  fstype [fsize bsize   cpg]
      a:          8401920               64  4.2BSD   2048 16384 12958 # /
      b:          8402006          8401984    swap                    # none
      c:        488397168                0  unused
      d:          8401984         16804000  4.2BSD   2048 16384 12958 # /tmp
      e:         25173856         25205984  4.2BSD   2048 16384 12958 # /var
      f:          6297472         50379840  4.2BSD   2048 16384 12958 # /usr
      g:          3084480         56677312  4.2BSD   2048 16384 12958 # /usr/X11R6
      h:         62926592         59761792  4.2BSD   2048 16384 12958 # /usr/local
      i:          4209024        122688384  4.2BSD   2048 16384 12958 # /usr/src
      j:         12594976        126897408  4.2BSD   2048 16384 12958 # /usr/obj
      k:        348899648        139492416  4.2BSD   4096 32768 26062 # /home
    

    Nous modifierons donc la section /dev/sd0k par la suite.

    Identifiez-vous ensuite comme root pour modifier le type de la section /home en “RAID” (ou bien redémarrez sur le noyau bsd.rd pour obtenir un shell) :

    $ su -
    # umount /home
    # disklabel -E /dev/sd0c
    # m k
    offset: [139492416]
    size: [348899648]
    FS type: [3.2BSD] RAID
    > w
    > q
    

    Ensuite, pour bien faire, on écrit n’importe quoi sur ce qui sera /home :

    # dd if=/dev/random of=/dev/rsd0k bs=4m
    

    C’est long… C’est normal ceci dit. C’est essentiel de le faire, sinon quelqu’un qui récupère votre disque peut deviner des éléments importants selon ce qu’il trouve d’écrit sur le disque.

    Ensuite, définissez une phrase de pass robuste pour être en mesure d’ouvrir votre /home chiffré :

    # bioctl -c C -l /dev/sd0k softraid0
    New passphrase:
    Re-type passphrase:
    softraid0: CRYPTO volume attached as sd3
    

    Dans cet exemple, le /home est identifié par sd3. Tout se passe comme s’il s’agissait d’un nouveau disque. Soyez bien attentif au message retourné par bioctl.

    On met des zéros sur les premiers megas :

    # dd if=/dev/zero of=/dev/rsd3c bs=1m count=1
    

    On crée la partition dans le volume chiffré :

    # fdisk -i sd3
    Do you wish to write new MBR and partition table? [n] y
    Writing MBR at offset 0.
    # disklabel -E sd3
    Label editor (enter '?' for help at any prompt)
    sd3> a a
    offset: [64]
    size: [348883541]
    FS type: [4.2BSD]
    sd3> w
    sd3> q
    No label changes.
    

    Et on formate :

    # newfs /dev/rsd3a
    

    On veut maintenant que cette partition soit montée au démarrage.

    Commencez par retirer la ligne concernant /home dans le fichier /etc/fstab.

    Repérer l’uid du volume chiffré :

    # disklabel sd0k |grep uid
    duid: adcd45470b9b4392
    

    Repérer l’uid de la partition /home chiffrée :

    # disklabel sd3a |grep uid
    duid: 535ff5528fa5c598
    

    Vous pouvez maintenant ajouter ce petit script dans le fichier /etc/rc.local qui est lancé à chaque démarrage. Remplacez bien les “uid”.

    printf "%s\n" "Unlock /home (or try to)"
    bioctl -c C -l adcd45470b9b4392.k softraid0
    if [ $? -ne 0 ]; then
    	printf "%s\n" "Wrong password, shutting down"
    	/sbin/shutdown -hp now
    else
    	fsck 535ff5528fa5c598.a
    	mount -o rw,nodev,nosuid,softdep 535ff5528fa5c598.a /home
    fi
    

    Vous voudrez peut-être modifier les options utilisées au montage “nodev,nosuid,softdep”.

    Le script ci-dessus ne laisse pas le droit à l’erreur. Vous préférerez peut-être avoir le droit à 3 essais pour entrer le mot de passe. Voici une autre version du même script qui avertit root s’il y a eu échec et éteint la machine :

    printf "%s\n" "Unlock /home (or try to)"
    ATTEMPT=0
    MAXATTEMPT=3
    while [ ${ATTEMPT} -le ${MAXATTEMPT} ]; do
    		ATTEMPT=$((${ATTEMPT} + 1))
    		bioctl -c C -l adcd45470b9b4392.k softraid0 && break || printf "%s\n" "Wrong password"
    		sleep 3
    done
    if [ ${ATTEMPT} -gt ${MAXATTEMPT} ]; then
    		printf "%s\n" "Shutting down, wrong password for encrypted device"
    		printf "%s" "Someone tried to unlock /home and failed" | mail -s "unlock /home failed" root
    		/sbin/shutdown -hp now
    else
    		fsck 535ff5528fa5c598.a
    		mount -o rw,nodev,nosuid,softdep 535ff5528fa5c598.a /home
    fi
    

    Avant de redémarrer, n’oubliez pas de restaurer vos documents dans votre nouveau /home après l’avoir monté :

    # mount sd3a /home
    # rsync ...
    

    L’idée d’origine a été piquée ici : http://astro-gr.org/openbsd-encrypt-home/ et complète https://www.openbsd.org/faq/faq14.html#softraidFDE