Od czasu pierwszej mojej notki odnośnie szyfrowania Ubuntu 12.04 przy pomocy lvm’a i LUKSa trochę minęło. Warto odświeżyć i doprecyzować temat zwłaszcza, że po migracji bloga cały wpis trochę ucierpiał.
Aby skorzystać z szyfrowania LUKS’em będziemy znów potrzebowali alternatywnego, tekstowego instalatora. Tak naprawdę sam proces praktycznie nie różni się prawie niczym (dochodzi tylko kwestia EFI) od tego opisywanego dla Ubuntu 12.04.
Obraz instalatora ściągamy w postaci małego obrazu: http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso. Podczas instalacji dodatkowe pakiety będą się ściągać z internetu.
Kilka założeń:
– opisywany poniższy przykład zakłada użycie partycji UEFI
– utworzenie woluminów logicznych dla partycji swap, root, home
– utworzenie nieszyfrowanej partycji boot
– brak innych systemów w komputerze, czyli instalacja od zera
– co najważniejsze, w tym przykładzie szyfrowane jest całe urządzenie blokowe (wszystko poza partycją dla UEFI i boot), a dopiero na tej całej zaszyfrowanej partycji tworzone są woluminy logiczne.
Ma to taką zaletę (na ogół), że jednym kluczem odszyfrowujemy wszystkie partycje i jest proste do konfiguracji. Wadą tego rozwiązania jest brak możliwości dodania nowego dysku do już istniejących woluminów.
Tak czy owak wydaje się to być dobre zastosowanie w laptopach, w których mamy tylko jeden dysk.
Przed rozpoczęciem wszelkich działań warto zrobić kopię zapasową, przeczytać, zrozumieć i poćwiczyć np. w virtualbox’ie.
Instalację rozpoczynamy od uruchomienia komputera z dysku instalacyjnego mini.iso
Wybieramy język
Wybieramy lokalizację
Konfigurujemy klawiaturę
Wybieramy nazwę komputera
Zgadzamy się na wybór servera repozytorium Ubuntu
Ustawiamy nazwę użytkownika oraz hasło. Przy pytaniu o szyfrowanie katalogu domowego odpowiadamy Nie
Ustawiamy zegar
Najważniejsza część czyli partycjonowanie. Wybieramy opcję: Ręcznie
Wybieramy dysk, który chcemy zpartycjonować.
Dalej jesteśmy pytani o utworzenie nowej tablicy partycji, w przypadku włączonego UEFI, automatycznie stworzy się partycja typu GPT chociaż instalator na żadnym etapie tego nie pokaże.
Po utworzeniu tablicy partycji ponownie wybieramy nasz dysk i tworzymy pierwszą partycję typu EFI o rozmiarze 512MB.
Zakańczamy tworzenie partycji EFI.
Wybieramy resztę wolnej przestrzeni i tworzymy drugą partycję typu EXT4 o rozmiarze 512MB i punkcie montowania /boot
Zakańczamy tworzenie partycji boot.
Wybieramy ponownie resztę naszej wolnej przestrzeni i tworzymy nową partycję o maksymalnym rozmiarze o typie: fizyczny wolumin do szyfrowania.
Zakańczamy ustawianie partycji i wybieramy opcję: Konfiguruj szyfrowane woluminy.
Zapisujemy zmianę na dyskach.
Wybieramy opcję Create encrypted volumes.
Z listy dostępnych urządzeń wybieramy to o największym rozmiarze z flagą szyfrowanie, u mnie akurat /dev/sda3.
Finish.
Następnie musimy utworzyć silne hasło, o które komputer będzie pytał przy starcie systemu.
Teraz już z górki. Utworzyliśmy dwie partycję: jedną EFI oraz drugą z punktem montowania w /boot. Zaszyfrowaliśmy również resztę dysku.
Teraz czas na utworzenie woluminów na naszej zaszyfrowanej przestrzeni. Wybieramy nasz zaszyfrowany wolumin, u mnie sda3_crypt.
Wybieramy: fizyczny wolumin dla LVM.
Przedostatnia cześć partycjonowania to utworzenie woluminów logicznych, które zostaną później użyte jako partycje swap, root, home w Ubuntu.
Wybieramy Konfiguruj menedżera woluminów logicznych i zapisujemy zmiany.
Wpierw tworzymy grupę woluminów na naszej zaszyfrowanej partycji, u mnie: /dev/mapper/sda3_crypt i nadajemy jej nazwę.
Po utworzeniu grupy woluminów tworzymy trzy woluminy logiczne na swap, root, home o odpowiednim rozmiarze.
Warto również nadać etykiety woluminom aby móc jest łatwiej rozpoznać.
Ostatnia część partycjonowania to przypisanie woluminom logicznym punktów montowania i typu partycji.
Dla woluminu dla swap’a wybieramy typ partycji swap.
Dla woluminu dla root’a wybieramy montowanie / i typ partycji EXT4.
Dla woluminu dla home’a wybieramy montowanie /home i typ partycji EXT4.
Zapisujemy ustawienia partycjonowania!
Rozpoczynamy już zwykłą instalację Ubuntu, która może trochę potrwać (u mnie raz poszło szybko, a innym razem bardzo długo ściągały się pakiety).
Po restarcie komputera system powinien zapytać nas o hasło jakie ustawiliśmy w trakcie partycjonowania celem zamontowania woluminów. Jeśli zapomnimy hasła to nie ma możliwości jego odzyskania.
Kilka uwag instalacyjnych:
– warto spisać nazwy wszystkich dysków/partycji i zasymulować taką instalację pod Virtualboxem
– Przy pracy z VB należy pamiętać aby ustawić tryb EFI w ustawieniach wirtualnej maszyny
– Jeśli ktoś posiada płytę ze zwykłym biosem i wystarczy mu tablica msdos to krok z tworzeniem partycji EFI pomijamy
– Jeśli po instalacji i restarcie wirtualnej maszyny zobaczymy żółtą interaktywną konsolę to należy wpisać komendę: fs0:\efi\ubuntu\grubx64.efi
aby wystartować system. Aby na stałe dokonać zmiany wpisujemy:
fs0:
edit startup.nsh
i dodajemy dwie linijki:
FS0:
\EFI\ubuntu\grubx64.efi
ctrl-s enter zapis, ctrl-q wyjście
– Innym problem może być niemożność wpisania hasła do odblokowania woluminów: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1359689 Efekt jest taki jakby nie działała nam klawiatura. Rozwiązaniem jest przełączenie startowania komputera w tryb tekstowy.
Z opcji Grub’a wybieramy tryb recovery, potem normalnie wpisujemy hasło i wybieramy opcję bootowania systemu. Powinniśmy móc się zalogować już do Ubuntu. Dalej należy wyedytować plik: /etc/default/grub
Usunąć z linii: GRUB_CMDLINE_
oraz dodać linię GRUB_GFXPAYLOAD
Na koniec zaktualizować gruba: sudo update-grub
Po restarcie ekran będzie wyglądał tak:
Prostsza wersja instrukcji bez użycia bez użycia LVM’a znajduje się tu: https://nocnypingwin.pl/szyfrowanie-calego-systemu-wraz-z-partycja-home-przy-uzycia-hasla-i-klucza/