mafalda_how_to/installazione.md

171 lines
4.5 KiB
Markdown

# 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 `<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
```