# How to rosa ## ATTENZIONE: Se vuoi solo loggarti sulla macchina, vai [qui](./login.md). ### Installazione debian base Dal live system, usiamo `imageinstall -e` provvisto da Hetzner per installare un sistema debian buster base, in cui configuriamo i dischi con il seguente layout: ``` NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 2.7T 0 disk ├─sda1 8:1 0 1G 0 part │ └─md0 9:0 0 1022M 0 raid1 /boot ├─sda2 8:2 0 2.7T 0 part │ └─md1 9:1 0 2.7T 0 raid1 │ └─vg0-root 253:1 0 300G 0 lvm / └─sda3 8:3 0 1M 0 part sdb 8:16 0 2.7T 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md0 9:0 0 1022M 0 raid1 /boot ├─sdb2 8:18 0 2.7T 0 part │ └─md1 9:1 0 2.7T 0 raid1 │ └─vg0-root 253:1 0 300G 0 lvm / └─sdb3 8:19 0 1M 0 part ``` Il sistema provvede ad installare un sistema con ssh già avviato e l'utente root con la chiave ssh già configurata (se l'abbiamo impostata nel pannello del rescue system). ### Cryptoroot A questo punto, riavviamo di nuovo nel rescue system. Creiamo un disco in ram abbastanza grande da contenere il tarball di tutto il contenuto della root: ``` mkdir /ramdisk mount -t tmpfs -o size=10G /ramdisk ``` Montiamo la root ``` mount /dev/vg0/root /mnt ``` Facciamo un backup della root ``` cd /mnt tar czvf /ramdisk/root.tar.gz /mnt/* ``` Eliminiamo il contenitore vg0 (un volume group LVM) in questa brutale maniera, creando così uno strato di cifratura ``` cryptsetup luksFormat /dev/md1 ``` Ci viene chiesta la conferma, e di immettere due volte la nuova passphrase. Dopo di questo, montiamo il nuovo contenitore cifrato ``` cryptsetup open /dev/md1 crypta ``` creiamo un nuovo volume group e un logical group per la partizione di root ``` vgcreate /dev/mapper/crypta vg0 lvcreate -L 300G --name root vg0 ``` lo montiamo e ci riversiamo dentro il backup della root ``` mount /dev/vg0/root /mnt tar xzvf /ramdisk/root.tar.gz -C /mnt ``` Il nuovo layout dovrebbe essere questo ``` NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 2.7T 0 disk ├─sda1 8:1 0 1G 0 part │ └─md0 9:0 0 1022M 0 raid1 /boot ├─sda2 8:2 0 2.7T 0 part │ └─md1 9:1 0 2.7T 0 raid1 │ └─crypta 253:0 0 2.7T 0 crypt │ └─vg0-root 253:1 0 300G 0 lvm / └─sda3 8:3 0 1M 0 part sdb 8:16 0 2.7T 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md0 9:0 0 1022M 0 raid1 /boot ├─sdb2 8:18 0 2.7T 0 part │ └─md1 9:1 0 2.7T 0 raid1 │ └─crypta 253:0 0 2.7T 0 crypt │ └─vg0-root 253:1 0 300G 0 lvm / └─sdb3 8:19 0 1M 0 part ``` (dove `` si può ottenere da `lsblk -o +UUID`, alla riga corrispondente di `/dev/md0`). Montiamo tutto insieme e facciamo il chroot dentro ``` mount /dev/vg0/root /mnt mount /dev/md0 /mnt/boot mount -t proc /proc /mnt/proc for fs in dev sys run; do mount --rbind /${fs} /mnt/${fs}; done chroot /mnt /bin/bash --login ``` Ci assicuriamo che `/etc/fstab` abbia questa forma ``` proc /proc proc defaults 0 0 UUID= /boot ext3 defaults 0 0 UUID= none swap sw 0 0 /dev/vg0/root / ext4 defaults 0 0 ``` e che `/etc/crypttab` sia fatto così ``` # crypta /dev/md1 none luks ``` ### Dropbear nell'initram Installiamo dropbear nell'initramfs ``` apt install --yes dropbear-initramfs ``` Configuriamo dropbear per rispondere alla porta `4747` (morto-che-parla) ``` echo 'DROPBEAR_OPTIONS="-s -j -k -p 4747"' >> /etc/dropbear-initramfs/config ``` (`-s` disabilita password login; `-j` disabilita il local port forwarding; `-k` disabilita il remote port forwarding; `-p` è la porta a cui bindarsi) Copiamo la chiave pubblica generata in `/etc/dropbear-initramfs/authorized_keys` (ATTENZIONE: **non** può essere una chiave ellittica, usate una RSA) ``` cat >> /etc/dropbear-initramfs/authorized_keys ``` Configuriamo la rete ``` echo 'IP="144.76.80.140::144.76.80.129:255.255.255.224:::off"' >> /etc/initramfs-tools/initramfs.conf ``` Infine, aggiorniamo l'initramfs e grub ``` update-initramfs -u -v update-grub ```