📱 Erkannter Endgerättyp ⛱️ Tag und Nacht. Verbraucht keinen oder einen 🍪. 🖼️ Hintergrund ändern. Verbraucht keinen oder einen 🍪.
🧬 0 Ihre DNS in den Krei.se-DNS-Servern, führt zum Bio-Labor 🍪 0 Anzahl Ihrer gespeicherten Kekse, führt zur Keksdose       

🐆 LUKS-Verschlüsselung remote entsperren

Damit man mit Servern in den Abstellkammern die vollverschlüsselt sind nicht komplett durchdreht gibt es bei automatischen Neustarts die Möglichkeit das System remote zu entsperren.

Vorteil: Das klappt auch von unterwegs solange man noch ins heimische Netzwerk per VPN kommt.

Vorlagen:

https://www.cyberciti.biz/security/how-to-unlock-luks-using-dropbear-ssh-keys-remotely-in-linux/

https://op-co.de/Doc/posts/initramfs_dropbear/

Leider hat dort überall gefehlt wie das Netzwerk-Modul gefunden wird, zudem brauche ich

🐧 Debian

Ich gehe hier davon aus, Sie haben kein Coreboot mit Netzwerk- und LUKS-Support, sondern starten eine unverschlüsselte /boot-Partition. Das ist nicht schlimm.

root@linux:~# apt install dropbear-initramfs

# Kann man ignorieren, tauschen wir noch
dropbear: WARNING: Invalid authorized_keys file, SSH login to initramfs won't work!

Ab Debian 12 liegt alles in /etc/dropbear/initramfs/

🔑 SSH-Keys

Dort tauschen wir als erstes die SSH-Host-Keys aus und konvertieren die vom System bereits erstellten - denn sonst erhalten Sie bei der Verbindung eine Warnung, dass da andere Schlüssel genutzt werden, was nicht schlimm ist, aber nervt.

Hier als Einzeiler:

root@linux:~# dropbearconvert openssh dropbear /etc/ssh/ssh_host_rsa_key /etc/dropbear/initramfs/dropbear_rsa_host_key && \
dropbearconvert openssh dropbear /etc/ssh/ssh_host_ecdsa_key /etc/dropbear/initramfs/dropbear_ecdsa_host_key && \
dropbearconvert openssh dropbear /etc/ssh/ssh_host_ed25519_key /etc/dropbear/initramfs/dropbear_ed25519_host_key

Dropbear bekommt jetzt noch die gleichen authorized keys von Ihrem Nutzer der sich ohne Passwort anmelden kann. Das sollte i.d.R. in ~/.ssh/id_ed25519.pub sein.

root@linux:~# cat ~/.ssh/id_ed25519.pub >> /etc/dropbear/initramfs/authorized_keys

Dropbear-Einstellungen

In /etc/dropbear/initramfs/dropbear.conf am Ende einfügen:

DROPBEAR_OPTIONS="-I 180 -j -k -p 22 -s -c cryptroot-unlock"

mehr braucht es da nicht. Wir lauschen auf Port 22 standard, kann man auch ändern und mehr als cryptroot-unlock ausführen darf man per SSH eh nicht. -s deaktiviert den Login per Passwort.

In /etc/initramfs-tools/initramfs.conf am Ende die IP statisch einfügen:

# IP : NFS-Server : Gateway : Subnetzmaske : Hostname : Interface
# Den NFS-Server brauchen Sie nur für tftpboot, können wir hier weglassen, daher ::
# 
# Wenn Sie mehrere Karten haben hier
# hinter dem Hostnamen noch das Interface :eth0 einfügen.
# 
# Achtung, Linux benennt Interfaces neu, in dmesg finden Sie
# den "original"-Namen des Interfaces.
# [    2.611858] e1000e 0000:00:19.0 eno0: renamed from eth0

IP=192.168.2.101::192.168.2.1:255.255.255.0:linuxClient

Bei beiden Dateien dran denken mit einer neuen Zeile zu schliessen.

Dieselbe IP-Zeile braucht aber auch noch Grub (nicht in jedem Fall, aber doppelt hält besser):

/etc/default/grub

#GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX_DEFAULT="ip=192.168.2.101::192.168.2.1:255.255.255.0:linuxClient"

In /etc/initramfs-tools/modules das Kernel-Modul für die Netzwerkkarte oder WLAN einfügen.

# List of modules that you want to include in your initramfs.
# They will be loaded at boot time in the order below.
#
# Syntax:  module_name [args ...]
#
# You must run update-initramfs(8) to effect this change.
#
# Examples:
#
# raid1
# sd_mod
e1000e

Welches Modul das ist verrät Ihnen /sys/class/net/ <interface, z.B. eno0> /device/drivers

 ls -l /sys/class/net/eno0/device/driver
 lrwxrwxrwx 1 root root 0 Jan 01 00:00 /sys/class/net/eno0/device/driver -> ../../../bus/pci/drivers/e1000e

Das wars schon. Wir genererieren initramfs sowie grub neu und starten neu. Einmal per SSH auf den Server und es sollte das Passwort zum Entsperren abgefragt werden.

root@linux:~# update-initramfs -u
root@linux:~# update-grub
root@linux:~# reboot