przestań crypttab pytać o hasło do zamiany

10

Po wydaniu zainstalowałem nowy system 11.04 i skonfigurowałem pełne szyfrowanie dysku za pomocą LUKS. Na początku poprosił mnie o hasło do moich trzech zaszyfrowanych partycji:

/
/home
swap

Trzykrotne wpisanie hasła stało się frustrujące, więc próbowałem skonfigurować / home i zamienić, aby odszyfrować z pliku klucza przechowywanego na /. Utworzyłem plik klucza i włączyłem go na dwóch partycjach. Moja crypttab wygląda teraz tak:

root-root_crypt UUID=13c21bf6-4d92-42a7-877a-87cc31b1aa19 none luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 /root/keyfile luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 none luks
sda3_crypt UUID=e4677895-2114-4054-9f23-d36f6bb0e6a2 /root/keyfile luks,swap

Działa to dobrze w przypadku / home, który jest montowany automatycznie bez pytania o hasło. Ale cryptsetup nadal prosi o hasło do przestrzeni wymiany. Próbowałem nawet dodać noauto do przestrzeni wymiany, aby w ogóle nie było skonfigurowane - po uruchomieniu systemu mogę włączyć ją bez hasła, więc pomyślałem, że dodam późny skrypt inicjujący ale nawet przy noauto cryptsetup wciąż prosi o hasło.

Dzięki!

Ćwiek
źródło
4
Z tego powodu zaleca się stosowanie LVM + LUKS w przypadku wielu partycji. Crypsetup może być używany powyżej lub poniżej warstwy LVM (powyżej -> system plików, poniżej -> dysk). Korzystanie z cryptsetup poniżej LVM ma tę zaletę, że potrzebujesz tylko jednej zaszyfrowanej partycji (LVM).
Lekensteyn

Odpowiedzi:

10

Miałem to samo pytanie, oto jak to zrobiłem na Ubuntu 12.04.1 i 12.10,

- przed rozpoczęciem upewnij się, że masz kopię zapasową, a także możesz uruchomić system z Ubuntu CD lub USB; jakbyś popełnił błąd, Twój system może się nie uruchomić lub możesz utracić dane. zakładam, że masz zaszyfrowany system ubuntu z LUKS, wewnątrz LUKS masz 3 partycje, SYSTEM-BOOT (nieszyfrowane), SYSTEM-SWAP (zaszyfrowane) i SYSTEM-OS (zaszyfrowane) -

musisz dostosować UUID, SYSTEM-SWAP_crypt, SYSTEM-OS_crypt, SYSTEM-SWAP, SYSTEM-OS do odmiany używanej w twoim systemie, proszę zobaczyć odnośnik poniżej mojego rozwiązania, aby uzyskać więcej informacji

Uzyskaj UUID:

blkid

Przygotuj>

swapoff /dev/mapper/SYSTEM-SWAP_crypt
cryptsetup luksClose SYSTEM-SWAP_crypt

Powiedz cryptsetup, aby obliczył hasło partycji wymiany z klucza deszyfrującego woluminu zawierającego główny system plików>

/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksFormat /dev/mapper/SYSTEM-SWAP --key-file -
/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksOpen /dev/mapper/SYSTEM-SWAP SYSTEM-SWAP_crypt --key-file -
mkswap /dev/mapper/SYSTEM-SWAP_crypt

powiedz systemowi o partycji wymiany, edytuj crypttab>

nano /etc/crypttab

=? upewnij się, że dwie linie pasują do siebie

SYSTEM-OS_crypt UUID=uuid-of-luks-containing-osroot none luks
SYSTEM-SWAP_crypt UUID=uuid-of-luks-containing-swap SYSTEM-OS_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

powiedz systemowi o partycji wymiany, edytuj fstab>

nano /etc/fstab

=? upewnij się, że masz tę linię

/dev/mapper/SYSTEM-SWAP_crypt swap swap sw 0 0

powiedz systemowi o partycji wymiany, edytuj CV>

nano /etc/initramfs-tools/conf.d/resume

=? upewnij się, że masz tę linię

RESUME=UUID=uuid-of-encrypted-swap-SYSTEM-SWAP_crypt

zaktualizuj initramfs na partycji rozruchowej>

update-initramfs -u -k all

Odniesienie

Odpowiedź zainspirowana konfiguracją zaszyfrowanego systemu Debian (zarchiwizowany link):

Jeśli używasz zaszyfrowanego systemu Debian, prawdopodobnie masz pewne wymagania bezpieczeństwa do spełnienia. W takim przypadku musisz także użyć zaszyfrowanej partycji wymiany.

Partycję wymiany można zaszyfrować na dwa sposoby:

  • można go odtworzyć przy każdym uruchomieniu, używając losowego hasła lub
  • można go utworzyć podobnie jak inne zaszyfrowane woluminy za pomocą trwałego hasła

Jeśli chcesz użyć funkcji zawieszenia na dysk, nie możesz zastosować pierwszego podejścia, ponieważ zastąpiłoby to ślad pamięci przechowywany na partycji wymiany. Ponadto nie można użyć pliku klucza, podobnie jak innych partycji, ponieważ główny system plików nie jest (i nie musi) montowany do czasu rozpoczęcia procesu wznawiania i musi odczytać odszyfrowaną partycję wymiany.

Rozwiązałem ten problem, mówiąc cryptsetup, aby obliczył hasło partycji wymiany na podstawie klucza deszyfrującego woluminu zawierającego główny system plików; pakiet cryptsetup implementuje to za pomocą /lib/cryptsetup/scripts/decrypt_derived. Tak więc, aby skonfigurować partycję wymiany, wykonuję następujące czynności, zakładając, że hda2partycja zawiera zaszyfrowaną wymianę, a główny system plików jest w hda5_crypt:

swapoff /dev/mapper/hda2_crypt
cryptsetup luksClose hda2_crypt
dd if=/dev/urandom of=/dev/hda2
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksFormat /dev/hda2 --key-file -
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksOpen /dev/hda2 hda2_crypt --key-file -
mkswap /dev/mapper/hda2_crypt

Aby poinformować system o tej partycji wymiany, musimy dodać ją do /etc/crypttabi /etc/fstab; upewnij się, że te pliki zawierają następujące wiersze:

/etc/crypttab:
  hda2_crypt /dev/hda2 hda5_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

/etc/fstab:
  /dev/mapper/hda2_crypt swap swap sw 0 0

Dzięki temu, gdy tylko skonfigurujesz system do zawieszenia na dysk, partycja wymiany zostanie automatycznie skonfigurowana wraz z głównym systemem plików bardzo wcześnie podczas sekwencji rozruchowej. Aby dowiedzieć się, którą partycję wymiany udostępnić w tym momencie, cryptsetup sprawdza: asfasfafs - linia jak RESUME=/dev/mapper/hda2_cryptw /etc/initramfs-tools/conf.d/resume - wznowienie ustawienia urządzenia w /etc/uswsusp.conf(patrz uswsusp.conf(5)) - wpis w /etc/suspend.conf - a resume=/dev/mapper/hda2_cryptw wierszu poleceń jądra

Możesz sprawdzić, /usr/share/initramfs-tools/hooks/cryptrootczy chcesz dowiedzieć się więcej na ten temat.

Książę
źródło
Witamy w Ask Ubuntu! Dałby +1, gdyby nie po prostu kopiowanie / wklejanie bez dbania o formatowanie (co właśnie zrobiłem). Podoba mi się tutaj podejście „można go odtworzyć przy każdym rozruchu, używając losowego hasła”.
gertvdijk
dodałem polecenia, których faktycznie użyłem do odpowiedzi, zamierzam go również przetestować 12.10, zaktualizuję odpowiedź później
Prince
W porządku. Zakładałem, że skopiowałeś / wkleiłeś go całkowicie. Zmień go, aby jasno określić, jakie zmiany wprowadziłeś, aby działało. Byłoby pomocne, dzięki!
gertvdijk
nie próbuj tego w dniu 12.10, ponieważ natrafiłem na błąd, który uniemożliwia rozruch, otrzymuję komunikat „cryptsetup lvm nie jest dostępny”, raporty wyszukiwania zwracają błędy. musisz przyjrzeć się temu głębiej, ale nie masz czasu, powiadomię cię później.
Prince
zaktualizowałem odpowiedź, mój system 12.10 jest teraz w pełni funkcjonalny i prosi tylko o jedno hasło, nie zaktualizowałem-initramfs -u -k wszystkich na końcu, które spowodowały problem, o którym wspomniałem w poprzednim komentarzu. @gertcdijk sformułował wszystko, mam nadzieję, że jesteś szczęśliwy teraz
Prince
4

Prawdopodobnie oznacza to, że dostęp do partycji wymiany jest uzyskiwany podczas initramfsczęści procesu rozruchu. W tym momencie główny system plików nie został jeszcze podłączony, więc przechowywane tam pliki konfiguracyjne nie będą widoczne.

Podczas gdy przestrzeń wymiany jest montowana za głównym systemem plików, istnieje powód, dla którego initramfsproces inicjalizacji ma dostęp do przestrzeni wymiany: po hibernacji komputera zawartość pamięci i stanu systemu jest zapisywana do wymiany. Aby wznowić hibernację, należy sprawdzić, czy przestrzeń wymiany zawiera obraz hibernacji, który wymagałby frazy hasła.

Jeśli nie masz nic przeciwko utracie możliwości wznowienia działania ze stanu hibernacji, możesz wyłączyć to zachowanie, edytując /etc/initramfs-tools/conf.d/resumei komentując wiersz rozpoczynający się od RESUME=. Po wprowadzeniu zmiany uruchom, update-initramfs -uaby zaktualizować initramfsobraz.

James Henstridge
źródło
Ah dziękuję! Nie jestem pewien, czy chcę poświęcić hibernację. Nie używam go często, ale gdy bateria zużywa się bez mojej uwagi, przydaje się. Czy wiesz, czy istnieje sposób ponownego użycia tego samego hasła dla / cryptsetup?
Brad
Nie wiem, jak to zrobić. I zanim zapytasz, nie próbuj umieszczać kopii pliku klucza w pliku initramfs. Chociaż pozbyłby się monitu o podanie hasła, udostępniłby go także każdemu, kto ma fizyczny dostęp do dysku.
James Henstridge