Wissensdatenbank
Buehl, Kevin
27 Januar 2016
24 Juli 2017
4.132

Wissensdatenbank

SSH Zugriff auf voll verschlüsseltes System via Dropbear

Vorwort


Je nach Einsatzgebiet und Provider ist es erforderlich, das eigene System zu verschlüsseln. Ich erkläre hier wie Sie auf Ihren voll verschlüsselten virtuellen privaten Server oder dedizierten Server zugreifen und wieder entschlüsseln können.

Installation


Installieren Sie zunächst alle nötigen Pakete:
apt install dropbear initramfs-tools


Konfiguration


Öffnen Sie nun die Konfigurationsdatei von den initramfs-tools:
nano /etc/initramfs-tools/initramfs.conf
DEVICE=eth0
IP=10.48.42.51::10.48.42.254:255.255.255.0:4b42.net:eth0:off
#IP=:::::eth0:dhcp
DROPBEAR=y


Internet Protokoll Version 6

Da ich mein gesamtes Netzwerk auf IPv6 umgestellt habe, ist dieser Punkt für mich sehr wichtig.
nano /etc/initramfs-tools/scripts/local-top/ipv6
#!/bin/sh
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
ip addr add 2001:db8::1337/64 dev eth0
ip route add default via 2001:db8::1
exit 0
chmod +x /etc/initramfs-tools/scripts/local-top/ipv6


Sicherheit


Da der Private-Key von Dropbear in einem unverschlüsselten Verzeichnis vorliegt, empfehle ich die "id_rsa" Dateien vom Server zu entfernen. Diese könnten von einem Angreifer entwendet werden, um direkten SSH-Zugriff auf den Server zu erhalten:
rm /etc/initramfs-tools/root/.ssh/id_rsa
rm /etc/initramfs-tools/root/.ssh/id_rsa.dropbear
echo "ssh-rsa AAAA root@4b42" > /etc/initramfs-tools/root/.ssh/authorized_keys


Abschluss


Erstellen Sie nun eine neue initrd Datei mit folgendem Befehl:
update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-3.16.0-4-amd64

Aktualisieren Sie den Bootlaoder mit:
update-grub
Generating grub configuration file ...
Linux-Abbild gefunden: /boot/vmlinuz-3.16.0-4-amd64
initrd-Abbild gefunden: /boot/initrd.img-3.16.0-4-amd64
erledigt

Nun können Sie das System neustarten:
reboot


Entschlüsseln


Manuell


Nachdem Neustart Ihres Systems, können Sie sich via SSH verbinden und das verschlüsselte Laufwerk mit folgendem Befehl entschlüsseln:
/lib/cryptsetup/askpass "Password: " > /lib/cryptsetup/passfifo

Skript

Damit man sich den Befehl für die Entschlüsselung nicht merken muss, kann man auch ein Skript erstellen, welches dann nur noch via SSH ausgeführt werden muss:
nano /etc/initramfs-tools/hooks/unlock
#!/bin/sh
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
. /usr/share/initramfs-tools/hook-functions
cat > "${DESTDIR}/root/unlock" << EOF
#!/bin/sh
/lib/cryptsetup/askpass 'passphrase: ' > /lib/cryptsetup/passfifo
EOF

chmod u+x "${DESTDIR}/root/unlock"

exit 0
chmod +x /etc/initramfs-tools/hooks/unlock


Fehlermeldungen

dropbear cryptroot setup: WARNING: /etc/dropbear/dropbear_dss_host_key differs from /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key: ssh clients may complain of changed host key
/usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_rsa_key /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key
Key is a ssh-rsa key
Wrote key to '/etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key'


dropbear cryptroot setup: WARNING: /etc/dropbear/dropbear_rsa_host_key differs from /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key: ssh clients may complain of changed host key
/usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_dsa_key /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key

Key is a ssh-dss key
Wrote key to '/etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key'

update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-3.16.0-4-amd64