Verschlüsselten Fileserver remote entschlüsseln
Donnerstag, 29.09.2011 um 22:23 UhrNach langer Zeit komme ich mal wieder dazu was zu schreiben. Diesmal stand bei mir ein größerer Umbau an meinem Fileserver an.
Und zwar wollte ich aus meinem Raid5 mit 3 Platten ein Raid10 mit 4 Platten machen (wegen der höheren Geschwindigkeit) und meine Raid Partition verschlüsseln.
Das Verschlüsseln bzw. eigentlich das entschlüsseln stellte die größte Herausforderung dar, da mein Server jeden Tag an und ausgeschalten wird. Das heißt ich müsste normalerweise Bildschirm und Tastatur anschließen und jedes mal am Server das Passwort zum Entschlüsseln eingeben – das ist viel zu umständlich.
Ich habe mir ein kleines Script geschrieben, das ich auf alle Clienten verteilt und dort in den Autostart nach dem Anmelden gelegt habe.
Und hier ist das Script:
#!/bin/sh
# Decrypting NFS Partition
if [ -z "$(ssh -t server_sudoers@server 'if mount|grep -q "on /crypto type"; then echo mounted; fi')" ]
then
ssh -t server_sudoers@server "echo $(zenity --entry --hide-text --text 'Bitte Passwort zum Entschlüsseln eingeben')|sudo cryptsetup luksOpen /dev/md0 crypto && sudo mount /dev/mapper/crypto /crypto && sudo mount --bind /crypto /nfsexports/crypto;"
fi
# Mounts
sudo mount -t nfs4 server:/crypto/multimedia /home/multimedia
Der Benutzer server_sudoers ist auf dem Server ein extra Benutzer, mit dem man sich per ssh Schlüsseldatei anmelden kann (also ohne Passworteingabe). Die Schlüssel wurden auf alle Clienten verteilt. Dann kann dieser Benutzer per sudo die mount und cryptsetup Befehle ohne Passwort ausführen (editieren der /etc/sudoers).
In der ersten Zeile wird eine ssh Verbindung zum Server aufgebaut und geschaut, ob die verschlüsselte Partition schon entschlüsselt und gemountet wurde (also ein anderer Client das schon getan hat). Ist dies der Fall wird einfach nur noch das im System gemountet, was der Benutzer auf dem Fileserver benötigt.
Ist die Platte noch nicht entschlüsselt, wird eine grafische Passwortabfrage ausgeführt (Zenity muss auf allen Clienten installiert sein, was mit Ubuntu im Normalfall schon in der Standardinstallation der Fall ist) und diese direkt an das Programm cryptsetup übergeben.
War das Entschlüsseln erfolgreich, wird das entschlüsselte Laufwerk gemountet. Der nächste Mount Befehl sorgt dafür, dass die entschlüsselte Partition in die NFS 4 Freigaben gemountet wird.
Als letztes werden dann auch hier die gewünschten Ordner auf dem Client per NFS gemountet.
Wie ich finde erheblich komfortabler als alle Lösungen, die ich bisher im Internet gefunden habe (nur EIN Passwort muss eingegeben werden, grafische Abfrage des Passwortes und auch nur dann, wenn entschlüsselt werden muss). Und die verschlüsselte Partition ist sicher (keine Schlüsseldatei auf einem USB Stick oä).




















































































































































































































































