Κρυπτογράφηση πλήρους δίσκου με cryptsetup/LUKS#
✓ |
⨯ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
✓ |
Αυτός ο οδηγός δείχνει πώς να ρυθμίζετε τους τόμους με κρυπτογράφηση LUKS, για να γίνεται έλεγχος ταυτότητας κατά την εκκίνηση με Nitrokey Pro ή Nitrokey Storage.
Για να σας παρέχουμε κάποιο ιστορικό, το cryptsetup-initramfs έχει τώρα υποστήριξη για τη χρήση έξυπνων καρτών OpenPGP όπως το Nitrokey Pro και το Nitrokey Storage για να ξεκλειδώνει τόμους με κρυπτογράφηση LUKS. Μόλις ολοκληρώσετε την εγκατάσταση, θα πρέπει απλώς να τοποθετήσετε το Nitrokey κατά την εκκίνηση και να εισαγάγετε το PIN χρήστη, αντί να πληκτρολογήσετε την κανονική κωδική φράση κρυπτογράφησης δίσκου.
Αυτές οι οδηγίες έχουν δοκιμαστεί σε Ubuntu 20.04 και Debian 10.
Προειδοποίηση
Ο παρακάτω οδηγός μπορεί ενδεχομένως να σας αποκλείσει από τον υπολογιστή σας. Θα πρέπει να γνωρίζετε αυτούς τους κινδύνους και σας συνιστούμε να χρησιμοποιήσετε το παρακάτω σενάριο σε έναν δευτερεύοντα υπολογιστή ή μετά από ένα πλήρες αντίγραφο ασφαλείας, καθώς ενδέχεται να χάσετε τα δεδομένα σας.
Απαιτήσεις#
Ένας υπολογιστής Ubuntu ή Debian με τουλάχιστον έναν τόμο κρυπτογραφημένο με LUKS.
Ανατρέξτε στην παρακάτω ενότητα για να καθορίσετε ποια μέθοδος είναι συμβατή με τον παρόντα οδηγό.
Ένα Nitrokey Pro 2 ή Nitrokey Storage 2 αρχικοποιημένο με πλήκτρα.
Γνωστά προβλήματα#
Μέχρι στιγμής, το σενάριο λειτουργεί μόνο με τόμους με χειροκίνητη κατάτμηση, οι οποίοι αποτελούνται από μια μη κρυπτογραφημένη κατάτμηση /boot
και μια κρυπτογραφημένη ριζική κατάτμηση /
.
Μην επιλέγετε την αυτόματη κρυπτογράφηση πλήρους δίσκου που παρέχεται από το λειτουργικό σύστημα που χρησιμοποιείτε για αυτόν τον οδηγό. Θα αντιμετωπίσετε επαναλαμβανόμενα σφάλματα όταν η κατάτμηση γίνεται αυτόματα, χρησιμοποιώντας τη διεπαφή εγκατάστασης στο Ubuntu και το Debian.
Οδηγίες#
Εγκατάσταση εξαρτήσεων
$ sudo apt install scdaemon opensc gnupg2
Δημιουργία καταλόγου smartcard-luks
$ mkdir smartcard-luks && cd smartcard-luks
Κατεβάστε το smartcard-luks-script
$ wget https://raw.githubusercontent.com/daringer/smartcard-key-luks/main/smartcard-key-luks $ sudo chmod +x smartcard-key-luks
Εξαγωγή του δημόσιου κλειδιού
Για να εξαγάγετε το δημόσιο κλειδί σας από το keyring του GnuPG:
$ gpg2 --armor --export KeyID > pubkey.asc
Αν έχετε ήδη ανεβάσει ένα δημόσιο κλειδί σε έναν διακομιστή κλειδιών (ή το έχετε αποθηκεύσει κάπου αλλού), θα πρέπει να το ανακτήσετε με τον τρόπο που σας βολεύει περισσότερο και να προχωρήσετε στο βήμα 5.
Καθορίστε και επαληθεύστε το σωστό όνομα συσκευής LUKS για τη root-κατάτμησή σας:
$ cat /etc/crypttab # if there is only one entry, you want the 1st column of this entry
Συμβουλή
Συνήθως αυτό θα πρέπει να είναι κάτι σαν nvme0n1p3_crypt (για NitroPC) ή sda3_crypt (για NitroPads). Μπορείτε και πρέπει να διασταυρώσετε ότι το UUID που αναφέρεται μέσα στο /etc/crypttab είναι το καθορισμένο διαμέρισμα, ελέγχοντας τον συμβολικό σύνδεσμο μέσα στο /dev/disks/by-uuid/.
Εκτελέστε το σενάριο με το όνομα της συσκευής luks (π.χ. nvme0n1p3_crypt) και το pubkey.asc ως ορίσματα.
$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey.asc
Μόλις εκτελέσετε το σενάριο με το δημόσιο κλειδί OpenPGP ως όρισμα, αυτό δημιουργεί αυτόματα ένα νέο μυστικό LUKS, το κρυπτογραφεί με αυτό το δημόσιο κλειδί και ρυθμίζει το crypttab, το LUKS, το initramfs και το GRUB.
Πρώτα θα σας ζητηθεί να δηλώσετε το User PIN
Μόλις ξεκλειδώσετε το κλειδί Nitrokey, θα σας ζητηθεί να δώσετε το OLD passphrase
. Πρόκειται για τη συνθηματική φράση που εισαγάγατε για την κρυπτογράφηση του τόμου σας κατά την εγκατάσταση.
Σημείωση
Αυτή είναι μια εναλλακτική λύση σε περίπτωση που χάσετε το Nitrokey σας ή δεν είναι διαθέσιμο. Μέχρι στιγμής, δεν έχει δοκιμαστεί και οι χρήστες πρέπει να γνωρίζουν τον κίνδυνο να κλειδωθούν έξω από τον υπολογιστή τους, εάν η εφεδρική μέθοδος δεν λειτουργήσει.
Μόλις εισαγάγετε τη συνθηματική φράση, το σενάριο ολοκληρώνει τη ρύθμιση σε περίπου ένα λεπτό. Μην διακόπτετε τη δέσμη ενεργειών, διαφορετικά μπορεί να κλειδώσετε τον υπολογιστή σας μετά την επανεκκίνηση.
Έγινε!
Τώρα πρέπει να κάνετε επανεκκίνηση και θα πρέπει να μπορείτε να χρησιμοποιήσετε το κλειδί Nitrokey για να ξεκλειδώσετε τον κρυπτογραφημένο δίσκο σας.
Χρήση#
Μετά την επανεκκίνηση, θα σας ζητηθεί ο κωδικός PIN χρήστη.
Εισάγετε τον κωδικό PIN χρήστη για να ξεκλειδώσετε τη μονάδα
Περαιτέρω υποδείξεις#
Αλλαγή φράσης πρόσβασης#
Μόλις γίνει αυτή η ρύθμιση, δεν θα πρέπει να χρησιμοποιείτε πλέον το βοηθητικό πρόγραμμα (gnome) disks για να αλλάξετε την (εφεδρική) συνθηματική φράση. Ο σωστός τρόπος για να το κάνετε αυτό είναι να καλέσετε απευθείας το cryptsetup όπως παρακάτω:
$ sudo cryptsetup luksChangeKey /dev/nvme0n1p3
Με nvme0n1p3 να είναι η κατάτμηση για την οποία δημιουργήσατε τα κλειδιά.
Χρήση πολλαπλών πλήκτρων#
Είναι εύκολο να χρησιμοποιήσετε πολλαπλά κλειδιά ασφαλείας (υλικού), έτσι ώστε καθένα από αυτά να μπορεί να ξεκλειδώσει τη μονάδα δίσκου LUKS ανεξάρτητα. Απλά εξάγετε πολλαπλά δημόσια κλειδιά και επίσης περάστε πολλαπλά κλειδιά στο σενάριο εγκατάστασης ως εξής:
$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey-1.asc pubkey-2.asc
Ορισμός ονόματος κατόχου κάρτας#
Κατά την εισαγωγή του PIN κατά την εκκίνηση για την αποκρυπτογράφηση του ριζικού διαμερίσματος LUKS παρουσιάζεται στον χρήστη ένας κάτοχος κάρτας, για να το ορίσετε αυτό χρησιμοποιήστε $ gpg --edit-card
και μέσα στην προτροπή πληκτρολογήστε admin
και name
για να ορίσετε τον κάτοχο κάρτας για την κάρτα OpenPGP (Nitrokey Storage 2 ή Nitrokey Pro 2).
Αντικατάσταση/Διαγραφή κλειδιών#
Δεν είναι δυνατή η άμεση προσθήκη/αφαίρεση κλειδιών. Επομένως, πρέπει να διαγράψετε/απομακρύνετε την παλιά ρύθμιση και να εκτελέσετε εκ νέου τη ρύθμιση με το(τα) καθορισμένο(-α) κλειδί(-α):
Αφαιρέστε το αρχείο κλειδιών (διαδρομή, αν χρησιμοποιήσατε το παραπάνω σενάριο) από τη συσκευή luks-device (nvme0n1p3):
$ sudo cryptsetup luksRemoveKey /dev/nvme0n1p3 /etc/cryptsetup-initramfs/cryptkey.gpg
Αφαίρεση του ίδιου του αρχείου κλειδιού:
$ sudo rm /etc/cryptsetup-initramfs/cryptkey.gpg
Επαναλάβετε την παραπάνω ρύθμιση.
Ξεκλείδωμα του LUKS2 με πιστοποιητικό X509#
Το SystemD υποστηρίζει το ξεκλείδωμα μιας κατάτμησης LUKS2 χρησιμοποιώντας ένα πιστοποιητικό X509, βρείτε μια εξαιρετική καταχώρηση στο ιστολόγιο του Vladimir Timofeenko στο Προσωπικό ιστολόγιο του Vladimir Timofeenko