create_pools.sh | ||
guide_rosa.txt | ||
install_zfsonlinux.sh | ||
installazione.md | ||
login.md | ||
README.md | ||
zfs.patch |
How to rosa
ATTENZIONE:
Se vuoi solo loggarti sulla macchina, vai qui.
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 <uuid_di_dev_md0>
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=<uuid_di_dev_md0> /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ì
# <target name> <source device> <key file> <options>
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 <LA_CHIAVE_PUBLICA> >> /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