Szyfrowanie całego dysku za pomocą cryptsetup/LUKS#
✓ |
⨯ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
✓ |
Ten przewodnik pokazuje, jak skonfigurować woluminy szyfrowane LUKS, aby uwierzytelnić się przy rozruchu za pomocą Nitrokey Pro lub Nitrokey Storage.
Aby zapewnić trochę tła, cryptsetup-initramfs ma teraz wsparcie dla używania kart OpenPGP jak Nitrokey Pro i Nitrokey Storage do odblokowania woluminów szyfrowanych LUKS. Po zakończeniu konfiguracji, będziesz musiał po prostu włożyć swoją kartę Nitrokey podczas uruchamiania systemu i wprowadzić PIN użytkownika, zamiast wpisywania hasła szyfrowania dysku.
Instrukcje te zostały przetestowane na Ubuntu 20.04 i Debianie 10.
Ostrzeżenie
Poniższa instrukcja może potencjalnie zablokować dostęp do komputera. Należy być świadomym tego ryzyka i zalecamy korzystanie z poniższego skryptu na komputerze pomocniczym lub po wykonaniu pełnej kopii zapasowej, ponieważ może to spowodować utratę danych.
Wymagania#
Komputer Ubuntu lub Debian z co najmniej jednym woluminem szyfrowanym LUKS.
Zapoznaj się z poniższą sekcją, aby określić, która metoda jest zgodna z tym przewodnikiem.
Nitrokey Pro 2 lub Nitrokey Storage 2 zainicjalizowany z kluczami.
Znane problemy#
Jak dotąd skrypt działa tylko z woluminami podzielonymi na partycje ręczne, które składają się z niezaszyfrowanej partycji /boot
i zaszyfrowanej partycji głównej /
.
Proszę nie wybierać automatycznego szyfrowania całego dysku w systemie operacyjnym, którego używasz do tego poradnika. Napotkasz powtarzające się błędy, gdy partycjonowanie zostanie wykonane automatycznie, przy użyciu interfejsu instalacyjnego w Ubuntu i Debianie.
Instrukcje#
Zainstaluj zależności
$ sudo apt install scdaemon opensc gnupg2
Utwórz katalog smartcard-luks
$ mkdir smartcard-luks && cd smartcard-luks
Pobierz skrypt smartcard-luks-script
$ wget https://raw.githubusercontent.com/daringer/smartcard-key-luks/main/smartcard-key-luks $ sudo chmod +x smartcard-key-luks
Wyeksportuj klucz publiczny
Aby wyeksportować swój klucz publiczny z magazynu kluczy GnuPG:
$ gpg2 --armor --export KeyID > pubkey.asc
Jeśli masz już wgrany klucz publiczny do serwera kluczy (lub przechowujesz go w innym miejscu), powinieneś pobrać go w sposób, który jest dla Ciebie najwygodniejszy, a następnie przejść do kroku 5.
Ustalić i zweryfikować prawidłową nazwę urządzenia LUKS dla partycji głównej:
$ cat /etc/crypttab # if there is only one entry, you want the 1st column of this entry
Podpowiedź
Zazwyczaj powinno to być coś takiego jak nvme0n1p3_crypt (dla NitroPC) lub sda3_crypt (dla NitroPads). Możesz i powinieneś sprawdzić, czy UUID podany w /etc/crypttab jest wskazaną partycją, sprawdzając dowiązanie symboliczne w /dev/disks/by-uuid/.
Wykonaj skrypt podając jako argumenty nazwę urządzenia luks (np. nvme0n1p3_crypt) i pubkey.asc.
$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey.asc
Po uruchomieniu skryptu z kluczem publicznym OpenPGP jako argumentem, automatycznie ustawi on nowy sekret LUKS, zaszyfruje go z tym kluczem publicznym i ustawi crypttab, LUKS, initramfs i GRUB.
Najpierw zostaniesz poproszony o podanie User PIN
.
Po odblokowaniu Nitrokey, zostaniesz poproszony o podanie OLD passphrase
. Jest to fraza hasła, którą wprowadziłeś, aby zaszyfrować swój wolumin podczas instalacji.
Informacja
Jest to alternatywa awaryjna na wypadek utraty Nitrokey, lub gdy jest on niedostępny. Jak na razie nie została ona przetestowana, a użytkownicy muszą być świadomi ryzyka zablokowania komputera, jeśli metoda awaryjna nie zadziała.
Po wprowadzeniu hasła, skrypt kończy konfigurację w ciągu około minuty. Nie przerywaj działania skryptu, w przeciwnym razie możesz zostać zablokowany po ponownym uruchomieniu komputera.
Zrobione!
Teraz musisz zrestartować komputer i powinieneś być w stanie użyć Nitrokey do odblokowania zaszyfrowanego dysku.
Zastosowanie#
Po restarcie powinieneś zostać poproszony o podanie kodu PIN użytkownika.
Wprowadź swój kod PIN użytkownika, aby odblokować napęd
Dalsze wskazówki#
Zmień hasło#
Po wykonaniu tej konfiguracji, nie powinieneś już używać narzędzia disks (gnome) do zmiany (awaryjnego) hasła. Właściwym sposobem jest bezpośrednie wywołanie cryptsetup w ten sposób:
$ sudo cryptsetup luksChangeKey /dev/nvme0n1p3
Przy czym nvme0n1p3 to partycja, dla której ustawiłeś klucze.
Użyj wielu klawiszy#
Łatwo jest użyć wielu (sprzętowych) kluczy bezpieczeństwa, tak aby każdy z nich mógł niezależnie odblokować napęd LUKS. Wystarczy wyeksportować wiele kluczy publicznych, a także przekazać wiele kluczy do skryptu konfiguracyjnego w ten sposób:
$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey-1.asc pubkey-2.asc
Ustawianie nazwy posiadacza karty#
Podczas wprowadzania kodu PIN przy starcie systemu w celu odszyfrowania partycji głównej LUKS użytkownikowi prezentowany jest posiadacz karty, aby to ustawić należy użyć $ gpg --edit-card
i wewnątrz monitu wpisać admin
i name
, aby ustawić posiadacza karty dla karty OpenPGP (Nitrokey Storage 2 lub Nitrokey Pro 2).
Wymiana/usuwanie kluczy#
Nie jest możliwe bezpośrednie dodawanie/usuwanie kluczy. Dlatego należy skasować/usunąć starą konfigurację i ponownie uruchomić konfigurację z wyznaczonym kluczem(ami):
Usuń plik kluczowy (ścieżkę, jeśli użyłeś powyższego skryptu) z luks-device (nvme0n1p3):
$ sudo cryptsetup luksRemoveKey /dev/nvme0n1p3 /etc/cryptsetup-initramfs/cryptkey.gpg
Usuń sam plik kluczowy:
$ sudo rm /etc/cryptsetup-initramfs/cryptkey.gpg
Ponownie uruchomić powyższą konfigurację.
Odblokowywanie LUKS2 za pomocą certyfikatu X509#
SystemD wspiera odblokowywanie partycji LUKS2 przy użyciu certyfikatu X509, znajdź świetny wpis na blogu, jak to zrealizować Personalny blog Vladimira Timofeenko.