Der Vorteil bei der Verwendung von LVMs ist, dass für die Entsperrung aller Logical Volumes nur mehr ein Passwort eingegeben werden muss. Dadurch wird das Crypto-Device, in dem sich die Volume Group und die Logical Volumes für z.B. „/root“ und „/home“ befinden, entsperrt. Für das erfolgreiche Booten wird nur mehr eine unverschlüsselte boot-Partition benötigt. Beim Start des Servers wird anschließend nach dem Passwort für die Entsperrung des Crypto-Devices gefragt („Pre-boot Authentifizierung“). Da außer „/boot“ noch keine Dateisysteme zur Verfügung stehen, ist es nicht möglich das System über eine Remote-Verbindung zu entsperren. Das Passwort muss über eine angeschlossene Tastatur eingegeben werden, was für einen Server problematisch sein kann.
Mit Dropbear existiert ein SSH Server, der vor dem Entsperrungsdialog durch initramfs geladen wird und somit eine Remoteentsperrrung der LUKS Partitionen ermöglicht.
1.0 Installation
Der dropbear SSH-Server wird wie gewohnt über den Paketmanager installiert :
1 |
sudo apt-get install dropbear |
2.0 Konfiguration
Grundlegende Konfigurationen wie z.B. automatisierter Start werden in der Datei /etc/default/dropbear
festgelegt. Der Eintrag „No_START=1“ muss für den automatisierten Start auf „NO_START=0“ gesetzt werden.
1 |
sudo sed -i 's/NO_START=1/NO_START=0/' /etc/default/dropbear |
2.1 Konfiguration Netzwerk
Die Netzwerkkonfiguration für den Remote-Zugriff auf den Server wird über die Datei /etc/initramfs-tools/initramfs.conf
vorgenommen. Hier werden systemspezifische Angaben wie das Netzwerkgerät und die IP angeben (In diesem Beispiel enp1s1 und DHCP Adressvergabe):
1 2 3 4 5 6 7 |
# # DEVICE: ... # # Specify the network interface, like eth0 # DEVICE=enp1s1 IP=:::::enp1s1:dhcp |
Für eine statische Adresse muss die Zeile wie folgt geändert werden:
1 2 |
DEVICE=enp1s1 IP=192.168.56.101:::255.255.255.0::enp1s1:off |
Nun wird das Netzwerk-Device bereits vor der Abfrage des Passworts für das Crypto-Device konfiguriert. Wie die detaillierten Regeln zur Konfiguration der Geräte aussehen, kann unter nfsroot.txt nachgelesen werden.
2.2 Konfiguration SSH-Zugriff auf Dropbear
Dropbear erstellt mehrere Schlüssel bei der Installation. Der Host Key für die Identifikation des Servers befindet sich in:
1 |
lvtest@ubuntu:~$ ls /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key dropbear_rsa_host_key |
Außerdem werden automatisch RSA-Schlüssel für die Public-Key-Authentifizierung erzeugt. Diese werden in folgendem Verzeichnis abgelegt:
1 |
lvtest@ubuntu:~$ ls /etc/initramfs-tools/root/.ssh/authorized_keys id_rsa id_rsa.pub |
Der Private-Key „id_rsa“ kann für den Zugriff auf den Server vom Client aus verwendet werden. Er muss dazu über einen gesicherten Weg auf den Client übertragen werden.
Achtung: Der Private-Key von Dropbear liegt unverschlüsselt vor, sollte die Datei „id_rsa“ von einem Angreifer entwendet werden, so hat dieser direkten Zugriff auf den Dropbear SSH-Server. Da Dropbear aber kompatibel zu openssh-Schlüssel ist, empfiehlt es sich am Client ein eigenes SSH-Schlüsselpaar zu erzeugen und dann den Public-Key zum „Authorized Keys“-File von Dropbear hinzuzufügen (s.a. SSH_Key_Login) (am Client):
1 2 3 4 5 6 7 |
ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/client/.ssh/id_rsa): /home/client/.ssh/dropbear/id_rsa_initram Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/client/.ssh/dropbear/id_rsa_initram. Your public key has been saved in /home/client/.ssh/dropbear/id_rsa_initram.pub. |
Wichtig: Die Verwendung eines Passwortes sorgt für die Verschlüsselung des Private-Keys mittels AES-CBC 128-Bit-Key. Der Private-Key kann somit nur nach erfolgreicher Eingabe des Passworts verwendet werden, da die Datei „id_rsa_initram“ nicht im Klartext vorliegt. Der Public-Key kann nun auf den Server kopiert werden:
1 2 3 |
client@test:~$ scp /home/client/.ssh/dropbear/id_rsa_initram.pub lvtest@192.168.56.101:/home/lvtest lvtest@192.168.56.101's password: id_rsa_initram.pub 100% 396 0.4KB/s 00:00 |
Um Zugriff auf den Server zu erhalten, wird der zuvor am Client erstellte Public Key dem „Authorized Keys“-File von Dropbear auf dem Server hinzugefügt:
1 2 |
lvtest@ubuntu:~$ sudo su root@ubuntu:/home/lvtest# cat id_rsa_initram.pub >> /etc/initramfs-tools/root/.ssh/authorized_keys |
Nun kann der Server neu gestartet werden und ein Verbindungstest mit dem soeben erstellten Schlüsselpaar durchgeführt werden.
Achtung: Jegliche Konfigurationen bezüglich des initramfs müssen via „update-initramfs“ aktualisiert werden:
1 |
sudo update-initramfs -u |
1 2 3 4 5 6 7 8 |
client@test:~$ ssh -i .ssh/dropbear/id_rsa_initram -o UserKnownHostsFile=.ssh/dropbear/known_hosts root@192.168.56.101 The authenticity of host '192.168.56.101 (192.168.56.101)' can't be established. RSA key fingerprint is 03:92:1f:35:fc:e2:2b:db:ac:9b:b7:03:ba:37:e5:f1. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.56.101' (RSA) to the list of known hosts. BusyBox v1.21.1 (Ubuntu 1:1.21.0-1ubuntu1) built-in shell (ash) Enter 'help' for a list of built-in commands. |
Nach erfolgreichem Test erscheint am Server eine BusyBox-Shell. Diese Shell wird zu einem späteren Zeitpunkt für die Entsperrung des Crypto-Devices verwendet.
3.0 Entsperren des Crypto-Devices
Nach erfolgreichem Abschluss des Verbindungstests mit Dropbear besteht die Möglichkeit zur Durchführung der eigentlichen Entsperrung der verschlüsselten Logical Volume Manager (LVMs). Zu diesem Zweck wird erneut eine Verbindung zum Server über SSH (Dropbear) hergestellt, um anschließend zur BusyBox-Shell zu gelangen.
1 2 3 |
client@test:~$ ssh -i .ssh/dropbear/id_rsa_initram -o UserKnownHostsFile=.ssh/dropbear/known_hosts root@192.168.56.101 BusyBox v1.21.1 (Ubuntu 1:1.21.0-1ubuntu1) built-in shell (ash) Enter 'help' for a list of built-in commands. |
An dieser Stelle erfolgt die Entsperrung der verschlüsselten Logical Volume Manager (LVMs) mittels des nachstehenden Befehls. Dabei ist zu beachten, dass das Passwort „encryptiontest“ durch das individuell beim Anlegen des Crypto-Devices festgelegte Passwort zu ersetzen ist. Es stehen zwei Möglichkeiten zur Verfügung, um die Entsperrung vorzunehmen:
1 2 3 |
/lib/cryptsetup/passfifo # echo -n "encryptiontest" > /lib/cryptsetup/passfifo /lib/cryptsetup/askpass |
Die Variante ohne echo, und damit ohne dass das Passwort im Klartext zu sehen ist, sieht wie folgt aus:
1 2 |
# /lib/cryptsetup/askpass "passphrase: " > /lib/cryptsetup/passfifo passphrase: |
Bei passphrase muss schließlich das Passwort eingegeben werden.
Dann werden die Devices entsperrt und der Server setzt den Bootvorgang fort. Läuft nun am Server ein weiterer, „herkömmlicher“ SSH-Server (meist openssh), kann man sich auf diesen wie gehabt verbinden. Ist bei der Installation von Dropbear bereits ein openssh-Server am laufen, beendet sich Dropbear automatisch nachdem der Server vollständig gebootet hat. Die Befehlssequenz kann dann auch in einem Schritt vollzogen werden:
1 |
ssh -i .ssh/dropbear/id_rsa_initram -o UserKnownHostsFile=.ssh/dropbear/known_hosts root@192.168.56.101 "echo -ne \"encryptiontest\" > /lib/cryptsetup/passfifo" |
Die Verwendung eines eigenen „Known Hosts“-File empfiehlt sich insofern, da Dropbear einen anderen Fingerprint als der openssh-Server verwendet. Werden für Dropbear und openssh keine unterschiedlichen „Known-Host“-Files verwendet, kommt es zur folgenden Warnung:
1 2 3 4 5 |
ssh -i .ssh/dropbear/id_rsa_initram root@192.168.56.101 "echo -ne \"encryptiontest\" > /lib/cryptsetup/passfifo" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! |
Diese Warnung hat ihren Ursprung darin, dass nun das Standard-File „~/.ssh/known_hosts“ verwendet wird, in dem sich der Fingerprint des openssh-Servers befindet. Es ist daher empfehlenswert für den Dropbear- und den openssh-Server verschiedene „Known Host“-Dateien zu verwenden.
Weiterführende Informationen
by Speefak | www.thomas-krenn.com |