Remote LUKS Unlock

Από Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ
Μετάβαση σε: πλοήγηση, αναζήτηση

Ας υποθέσουμε ότι έχουμε ήδη κάποιον απομακρυσμένο server, με κρυπτογραφημένο root partition. Σε περίπτωση που χρειάζεται επανεκκίνηση (πχ νέο kernel) ή έχει ήδη υποστεί επανεκκίνηση (πχ ανωτέρα βία) ή σε wake on LAN θα πρέπει να πάμε στον server για να βάλουμε το passphrase αυτοπροσώπως. Εναλλακτικά, μπορούμε να το κάνουμε με ssh σηκώνοντας ένα μίνι ssh server στο initramfs, το dropbear.

setup

Εκτελούμε

apt-get install dropbear

ή την ανάλογη εντολή εγκατάστασης της διανομής μας. Θέτουμε το NO_START=0 σε NO_START=1 στο /etc/default/dropbear για να το ενεργοποιήσουμε.

# Για να μπορούμε να μπαίνουμε με το υπάρχον κλειδί μας.
sudo cp ~/.ssh/authorized_keys /etc/initramfs-tools/root/.ssh/

Χρησιμοποιούμε ένα έτοιμο script για ευκολία:

# Copy the code from https://stinkyparkia.wordpress.com/2014/10/14/remote-unlocking-luks-encrypted-lvm-using-dropbear-ssh-in-ubuntu-server-14-04-1-with-static-ipst/
sudo vi /etc/initramfs-tools/hooks/crypt_unlock.sh
sudo chmod +x /etc/initramfs-tools/hooks/crypt_unlock.sh

# Update the initramfs boot partition.
sudo update-initramfs -u

Ολοκλήρωση

  • Το πώς θα ολοκληρώσουμε την διαδικασία εξαρτάται από το setup του μηχανήματος μας, πχ παίρνει μόνο του IP ή του δίνεται αυτόματα; Στη περίπτωση που χρειάζεται λοιπόν interface setup μπορούμε να πάρουμε IP μέσω του GRUB βάζοντας στο GRUB_CMDLINE_LINUX στο /etc/default/grub το εξής
GRUB_CMDLINE_LINUX="ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>"

και έπειτα update-grub.

  • Υπάρχει περίπτωση να χρειαστεί να σηκώσουμε τα interfaces από την αρχή όταν ξεκινήσει ο server (πχ αν έχουμε bridges κλπ ή αν θέλουμε να πάρει την IP άλλο device). Σε αυτή τη περίπτωση βάζουμε στο /etc/network/interfaces την γραμμή
pre-up ip addr flush dev DEVICE

όπου DEVICE αυτό που ορίσαμε στο GRUB (πχ eth0). Εναλλακτικά το dropbear πρέπει κανονικά να κάνει network configuration μόνο του όταν ξεκινάει.

  • Αν το dropbear ξεκινήσει στο boot μετά την αποκρυπτογράφηση των volumes θα πάρει την port 22 και δεν θα μπορεί να ξεκινήσει ο sshd. Σε αυτή τη περίπτωση απενεργοποιούμε το dropbear από την αυτόματη εκκίνηση.
  • Όταν κάνουμε σύνδεση από το συνηθισμένο μας μηχάνημα ο ssh client μας θα μας βγάλει σφάλμα επειδή δεν θα αναγνωρίσει το host key. Μεταφέρουμε τα host keys στο initramfs ως εξής
sudo /usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_dsa_key /etc/initramfs-tools/etc/dropbear/dropbear_dsa_host_key
sudo /usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_ecdsa_key /etc/initramfs-tools/etc/dropbear/dropbear_ecdsa_host_key
sudo /usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_rsa_key /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key

Χρήση

Κάνουμε ssh@IP, πεταγόμαστε σε ένα buzybox shell,γράφουμε την εντολή unlock και βάζουμε το passphrase.

Λοιποί οδηγοί