Instalacja i szyfrowanie całego systemu Ubuntu 16.04 przy użyciu logicznych woluminów

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

luks1

Wybieramy język

luks2

luks3

Wybieramy lokalizację

luks4

Konfigurujemy klawiaturę

luks5

luks6

luks7

Wybieramy nazwę komputera

luks8

Zgadzamy się na wybór servera repozytorium Ubuntu

luks9

luks10

luks11

 

Ustawiamy nazwę użytkownika oraz hasło. Przy pytaniu o szyfrowanie katalogu domowego odpowiadamy Nie

luks12

luks13

luks14

Ustawiamy zegar

luks15

Najważniejsza część czyli partycjonowanie. Wybieramy opcję: Ręcznie

luks16

Wybieramy dysk, który chcemy zpartycjonować.

luks17
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.

luks18

Po utworzeniu tablicy partycji ponownie wybieramy nasz dysk i tworzymy pierwszą partycję typu EFI o rozmiarze 512MB.

luks19

luks20

luks21

luks22

luks23

Zakańczamy tworzenie partycji EFI.
Wybieramy resztę wolnej przestrzeni i tworzymy drugą partycję typu EXT4 o rozmiarze 512MB i punkcie montowania /boot

luks24

luks25

Zakańczamy tworzenie partycji boot.
Wybieramy ponownie resztę naszej wolnej przestrzeni i tworzymy nową partycję o maksymalnym rozmiarze o typie: fizyczny wolumin do szyfrowania.

luks26

luks27

luks28

luks29

luks30

luks31

Zakańczamy ustawianie partycji i wybieramy opcję: Konfiguruj szyfrowane woluminy.

luks32

Zapisujemy zmianę na dyskach.

luks33

Wybieramy opcję Create encrypted volumes.

luks34

Z listy dostępnych urządzeń wybieramy to o największym rozmiarze z flagą szyfrowanie, u mnie akurat /dev/sda3.

 

luks35

Finish.

luks36

Następnie musimy utworzyć silne hasło, o które komputer będzie pytał przy starcie systemu.

 

luks37

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.

luks38

Wybieramy: fizyczny wolumin dla LVM.

luks39

luks40

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.

luks41

luks42

Wpierw tworzymy grupę woluminów na naszej zaszyfrowanej partycji, u mnie: /dev/mapper/sda3_crypt i nadajemy jej nazwę.

luks43

luks44

 

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ć.

luks45

luks46

luks47

luks48

luks49

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.

luks50

luks51

luks52

luks53

luks54

Zapisujemy ustawienia partycjonowania!

luks55

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).
luks56

luks57

luks58

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.

luks59
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_LINUX_DEFAULT opcje: quiet splash
oraz dodać linię GRUB_GFXPAYLOAD_LINUX=text

Na koniec zaktualizować gruba: sudo update-grub

Po restarcie ekran będzie wyglądał tak:
luks60

 

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/