[README] Ajout de la partie 'Chiffrement de la carte'
This commit is contained in:
parent
c1c294531e
commit
aa385689f2
1 changed files with 110 additions and 0 deletions
110
README.md
110
README.md
|
@ -55,3 +55,113 @@ sur civet:
|
||||||
sudo rabbitmqctl set_permissions oie "(amq\.default|CransTicket)" "CransTicket" "amq\.default"
|
sudo rabbitmqctl set_permissions oie "(amq\.default|CransTicket)" "CransTicket" "amq\.default"
|
||||||
sudo rabbitmqctl set_permissions oie "\(amq\.default|CransTicket\)" "CransTicket" "amq\.default"
|
sudo rabbitmqctl set_permissions oie "\(amq\.default|CransTicket\)" "CransTicket" "amq\.default"
|
||||||
sudo rabbitmqctl set_permissions oie "(amq\.default|CransTicket)" "CransTicket" "(amq\.default|CransTicket)"
|
sudo rabbitmqctl set_permissions oie "(amq\.default|CransTicket)" "CransTicket" "(amq\.default|CransTicket)"
|
||||||
|
|
||||||
|
# Chiffrer la carte de la ticketeuse
|
||||||
|
|
||||||
|
Pour protéger les données stockées sur la carte des ticketeuses, on chiffre sa partition racine.
|
||||||
|
Lorsque la raspberry boote, il est nécessaire de rentrer une passphrase pour déchiffrer le disque afin
|
||||||
|
que la machine puisse finir de charger le système d'exploitation.
|
||||||
|
|
||||||
|
Cette passphrase peut-être rentrée au clavier sur la raspberry ou en se connectant avec une clé SSH.
|
||||||
|
|
||||||
|
Ce qui suit est un résumé de la procédure décrite sur [cette page](paxswill.com/blog/2013/11/04/encrypted-raspberry-pi/)
|
||||||
|
|
||||||
|
## Paquets nécessaires
|
||||||
|
* `busybox`
|
||||||
|
* `cryptsetup`
|
||||||
|
* `dropbear` (Pour le déverouillage à distance uniquement)
|
||||||
|
|
||||||
|
Il faut donc commencer par les installer
|
||||||
|
|
||||||
|
# apt-get install busybox cryptsetup
|
||||||
|
|
||||||
|
## Génération d'une première initramfs
|
||||||
|
|
||||||
|
On commence par générer une première initramfs
|
||||||
|
|
||||||
|
# mkinitramfs -o /boot/initramfs.gz
|
||||||
|
|
||||||
|
Puis on demande à la raspberry de booter dessus au prochain démarrage en ajoutant à la fin du fichier `/boot/config.txt`
|
||||||
|
la ligne suivante :
|
||||||
|
|
||||||
|
initramfs initramfs.gz followkernel
|
||||||
|
|
||||||
|
## Chiffrement du slash de la ticketeuse
|
||||||
|
|
||||||
|
À partir d'ici, il faut une autre machine sous Linux capable de monter la carte SD de la raspberry
|
||||||
|
Il faut repérer lorsque la carte est insérée à quel périphérique elle correspond, par exemple `/dev/sdb` (cela peut très bien être `/dev/mmcblk0p` ou autre chose). On peut utiliser le dmesg pour ça.
|
||||||
|
|
||||||
|
On commence par sauvegarder sur la deuxième machine les données de la ticketeuse de façon à pouvoir chiffrer le / (ce qui va formatter la partition et donc effacer ses données) avant de les y remettre.
|
||||||
|
|
||||||
|
# dd if=/dev/sdb2 of=/tmp/raspbian-plain.img bs=4M
|
||||||
|
# e2fsck -f /tmp/raspbian-plain.img
|
||||||
|
# resize2fs -M /tmp/raspbian-plain.img
|
||||||
|
|
||||||
|
Toujours sur l'ordinateur (*pas sur la rPi*), il faut installer `cryptsetup`
|
||||||
|
|
||||||
|
# apt-get install cryptsetup
|
||||||
|
|
||||||
|
On chiffre ensuite la partition avant de la déverrouiller
|
||||||
|
|
||||||
|
# cryptsetup -v -y --cipher aes-cbc-essiv:sha256 --key-size 256 luksFormat /dev/sdb2
|
||||||
|
# cryptsetup -v luksOpen /dev/sdb2 sdcard
|
||||||
|
|
||||||
|
Puis on restaure les données
|
||||||
|
|
||||||
|
# dd if=/tmp/raspbian-plain.img of=/dev/mapper/sdcard bs=4M
|
||||||
|
# e2fsck /dev/mapper/sdcard
|
||||||
|
# resize2fs /dev/mapper/sdcard
|
||||||
|
|
||||||
|
Il reste à expliquer à la raspberry comment booter sur ces nouvelles partitions
|
||||||
|
|
||||||
|
# mkdir /tmp/pi_root /tmp/pi_boot
|
||||||
|
# mount /dev/sdb1 /tmp/pi_boot
|
||||||
|
# mount /dev/mapper/sdcard /tmp/pi_root
|
||||||
|
|
||||||
|
Le fichier `/tmp/pi_boot/cmdline.txt` doit être modifié : il faut remplacer `root=/dev/mmcblk0p2` par `root=/dev/mapper/sdcard cryptdevice=/dev/mmcblk0p2:sdcard`.
|
||||||
|
Il faut ensuite adapter le `/tmp/pi_root/etc/fstab` pour que la rPi boote correctement : `/dev/mmcblk0p2` doit être changé en `/dev/mapper/sdcard`
|
||||||
|
Enfin, un nouveau fichier `/tmp/pi_root/etc/crypttab` doit être créé. Il doit contenir :
|
||||||
|
|
||||||
|
sdcard /dev/mmcblk0p2 none luks
|
||||||
|
|
||||||
|
Tous les systèmesde fichiers peuvent alors être démontés et la carte replacée dans la rPi
|
||||||
|
|
||||||
|
# umount /tmp/pi_boot/ /tmp/pi_root/
|
||||||
|
# cryptsetup luksClose sdcard
|
||||||
|
|
||||||
|
## Démarrage
|
||||||
|
|
||||||
|
Il faut alors connecter un écran et un clavier à la raspberry Pi, car **le premier boot va rater**, car la racine du système ne sera pas accessible avant que la partition ne soit déchiffrée.
|
||||||
|
Lorsque le système ouvre un shell de secours (lignes commençant par `(initramfs)`), les commandes suivantes permettent de déchiffrer la carte pour que la rPi puisse continuer la séquence de boot
|
||||||
|
|
||||||
|
(initramfs) cryptsetup luksOpen /dev/mmcblk0p2 sdcard
|
||||||
|
(initramfs) exit
|
||||||
|
|
||||||
|
Une fois le boot terminé, on régénère l'initramfs
|
||||||
|
|
||||||
|
# mkinitramfs -o /boot/initramfs.gz
|
||||||
|
|
||||||
|
La machine peut être redémarrée sans crainte, la passphrase sera gentillement demandée lors du boot
|
||||||
|
|
||||||
|
## Déchiffrement à distance
|
||||||
|
|
||||||
|
Pour déchiffer la partition contenant la racine du système à distance, on installe dropbear, un serveur SSH léger qui permettra de se connecter avant le montage de la racine avec un clé SSH.
|
||||||
|
|
||||||
|
# apt-get install dropbear
|
||||||
|
|
||||||
|
Le code de dropbear dans Raspbian contient une erreur qu'il faut corriger : À la ligne 296 du fichier `/usr/share/initramfs-tools/scripts/local-top/cryptroot`, il faut ajouter `/sbin/` avant `blkid`, puis régénérer l'initramfs
|
||||||
|
|
||||||
|
# mkinitramfs -o /boot/initramfs.gz
|
||||||
|
|
||||||
|
Copier la clé SSH générée par dropbear (`/etc/initramfs-tools/root/.ssh/id\_rsa`) sur un autre ordinateur, puis l'ajouter au fichier authorized_keys de l'initramfs `/etc/initramfs-tools/root/.ssh/authorized\_keys`.
|
||||||
|
Ajouter juste avant le `ssh-rsa` l'instruction suivante :
|
||||||
|
|
||||||
|
command="/scripts/local-top/cryptroot && kill -9 `ps | grep -m 1 'cryptroot' | cut -d ' ' -f 3`"
|
||||||
|
|
||||||
|
Il reste à régénérer l'initramfs une dernière fois
|
||||||
|
|
||||||
|
# mkinitramfs -o /boot/initramfs.gz
|
||||||
|
|
||||||
|
Il ne reste plus qu'à tester en redémarrant la rPi et en essayant de s'y connecter pour taper la passphrase
|
||||||
|
|
||||||
|
ssh -i chemin/vers/la/clé root@<nom de la ticketeuse>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue