[ howto ] Installation d'un serveur dédié (partie 2 chiffrement des disques)
Suite de [ howto ] Installation d'un serveur dédié (partie 1 debootstrap de devuan)
Maintenant que le système est installé, passons au chiffrement des disques.
#include <std_disclaimer.h
/*
* Your warranty is now void.
*
* I am not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this ROM
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at me for messing up your device, I will laugh at you.
*/
Les étapes sont assez simples.
- Installer luks
Pour installer luks ainsi que les utilitaires autour (cryptsetup) il suffit de l'installer :
sudo apt install cryptsetup
- Préparer les partitions / S'assurer que les partitions sont prêtes
Dans ce cas de figure, les containeur LUKS sera une partition et pas un périphérique physique.
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 476.9G 0 disk |-nvme0n1p1 259:1 0 487M 0 part /boot |-nvme0n1p2 259:2 0 46.6G 0 part / `-nvme0n1p3 259:3 0 429.9G 0 part nvme1n1 259:4 0 476.9G 0 disk `-nvme1n1p1 259:5 0 476.9G 0 part
- Formatter les partitions au format luks
Cette étape va créér les containeurs luks sur les partitions.
⚠️ Cette commande ne vérifiera rien, il faut bien vérifier avant de lancer la commande !
$ sudo cryptsetup luksFormat /dev/nvme0n1p3 WARNING! ======== This will overwrite data on /dev/nvme0n1p3 irrevocably. Are you sure? (Type 'yes' in capital letters): YES Enter passphrase for /dev/nvme0n1p3: Verify passphrase:
- Ouvrir les containeurs LUKS
Une fois que les containers sont créés, il faut les ouvrir pour pouvoir les utiliser
La commande `luksOpen` prends deux arguments:
- Le périphérique à ouvrir
- Un identifiant. Cette valeur est completement arbitraire et faite pour s'y retrouver, elle n'a aucun impact.
$ sudo cryptsetup luksOpen /dev/nvme0n1p3 home Enter passphrase for /dev/nvme0n1p3: $ sudo cryptsetup luksOpen /dev/nvme1n1p1 data Enter passphrase for /dev/nvme1n1p1:
Résultat :
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 476.9G 0 disk |-nvme0n1p1 259:1 0 487M 0 part /boot |-nvme0n1p2 259:2 0 46.6G 0 part / `-nvme0n1p3 259:3 0 429.9G 0 part `-home 254:0 0 429.9G 0 crypt nvme1n1 259:4 0 476.9G 0 disk `-nvme1n1p1 259:5 0 476.9G 0 part `-data 254:1 0 476.9G 0 crypt
- Formatter les containeurs
Maintenant que les containeurs sont ouver, il est possible de les formatter pour les utiliser. Ce sont des périphériques block standard et un lien symbolique est créé avec le nom passé à la commande précédente.
$ ls -l /dev/mapper/ total 0 crw------- 1 root root 10, 236 Jun 3 08:19 control lrwxrwxrwx 1 root root 7 Jun 3 08:19 data -> ../dm-1 lrwxrwxrwx 1 root root 7 Jun 3 08:19 home -> ../dm-0 $ ls -l /dev/dm* brw-rw---- 1 root disk 254, 0 Jun 3 08:19 /dev/dm-0 brw-rw---- 1 root disk 254, 1 Jun 3 08:19 /dev/dm-1
Un simple mkfs fera l'affaire :
$ sudo mkfs.ext4 /dev/mapper/home [sudo] password for nailyk: mke2fs 1.46.2 (28-Feb-2021) Creating filesystem with 112693504 4k blocks and 28180480 inodes Filesystem UUID: 27adf6c5-d09a-42b6-9bd0-8f3ca69cb215 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000 Allocating group tables: done Writing inode tables: done Creating journal (262144 blocks): done Writing superblocks and filesystem accounting information: done $ sudo mkfs.ext4 /dev/mapper/data mke2fs 1.46.2 (28-Feb-2021) Creating filesystem with 125022464 4k blocks and 31260672 inodes Filesystem UUID: 2dd1e0f0-ec85-41d7-8421-74cfda6a810e Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000 Allocating group tables: done Writing inode tables: done Creating journal (262144 blocks): done Writing superblocks and filesystem accounting information: done
- Configurer les partitions
Recupérer les ID :
$ sudo blkid [sudo] password for nailyk: /dev/mapper/home: UUID="27adf6c5-d09a-42b6-9bd0-8f3ca69cb215" BLOCK_SIZE="4096" TYPE="ext4" /dev/mapper/data: UUID="2dd1e0f0-ec85-41d7-8421-74cfda6a810e" BLOCK_SIZE="4096" TYPE="ext4"
et les mettre dans le fstab :
% cat /etc/fstab # UNCONFIGURED FSTAB FOR BASE SYSTEM UUID=af0c516a-4da3-4010-903f-e8a6213b1ec4 /boot ext4 discard,noatime,nodiratime,errors=remount-ro 0 1 UUID=d6a7c1f4-036a-411c-a50d-eaee427131aa / ext4 discard,noatime,nodiratime,errors=remount-ro 0 0 UUID=27adf6c5-d09a-42b6-9bd0-8f3ca69cb215 /home ext4 discard,noatime,nodiratime,errors=remount-ro,noauto 0 0 UUID=2dd1e0f0-ec85-41d7-8421-74cfda6a810e /media/data ext4 discard,noatime,nodiratime,errors=remount-ro,noauto 0 0
⚠️ ⚠️ ⚠️ ⚠️ ⚠️
Surtout pour les systèmes avec systemd (bloatwared pour les intimes), il faut ajouter le 'noauto' dans les paramètres. Si non, comme l'entrée ne sera pas trouvée, le système ne démarrera pas. (je ne retrouve pas l'issue sur le github)
Dans tous les cas, il sera impossible de tapper la passphrase au démarrage donc, il est plus sage de désactiver le montage automatique de ces partitions.
⚠️ ⚠️ ⚠️ ⚠️ ⚠️
- Préparer /home
Pour éviter tout problème, il est important de populer home :
mkdir /tmp/home sudo mount /dev/mapper/home /tmp/home sudo cp -ax /home/nailyk /tmp/home/ ls -al /tmp/home/
- Un peu de customisation (inutiles)
cd /tmp/home/nailyk/ wget "https://raw.github.com/nailyk-fr/dot/master/.zshrc" wget "https://raw.github.com/nailyk-fr/dot/master/.bashrc" wget "https://raw.github.com/nailyk-fr/dot/master/prompt_nailyk_setup" wget "https://raw.github.com/nailyk-fr/dot/master/.screenrc" wget "https://raw.github.com/nailyk-fr/dot/master/.vimrc" mv .bashrc.1 .bashrc sudo ln -sf .bashrc /root/ sudo ln -sf .vimrc /root/ sudo ln -sf .zshrc /root/ sudo ln -sf prompt_nailyk_setup /root/ sudo chsh -s /bin/zsh nailyk sudo chsh -s /bin/zsh root
- Il ne reste plus qu'a redémarrer 🤞
Une fois le redémarage éffectué, il faut monter les partitions (puis se reconnecter sur le nouveau /home) :
UNMOUNTED! % sudo cryptsetup luksOpen /dev/nvme0n1p3 home Enter passphrase for /dev/nvme0n1p3: UNMOUNTED! % sudo cryptsetup luksOpen /dev/nvme1n1p1 data Enter passphrase for /dev/nvme1n1p1: UNMOUNTED! % sudo mount /home UNMOUNTED! % sudo mount /media/data UNMOUNTED! % sudo swapon /media/data/swapfile UNMOUNTED! % lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 476.9G 0 disk ├─nvme0n1p1 259:1 0 487M 0 part /boot ├─nvme0n1p2 259:2 0 46.6G 0 part / └─nvme0n1p3 259:3 0 429.9G 0 part └─home 254:0 0 429.9G 0 crypt /home nvme1n1 259:4 0 476.9G 0 disk └─nvme1n1p1 259:5 0 476.9G 0 part └─data 254:1 0 476.9G 0 crypt /media/data
(Le UNMOUNTED! est dans le PS1 de mon zshrc sur / (donc, quand /home n'est pas monté)