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: http://nocnypingwin.pl/szyfrowanie-calego-systemu-wraz-z-partycja-home-przy-uzycia-hasla-i-klucza/
12 komentarzy
Przeskocz do formularza komentarzy
Mam w domu serwer na ubuntu. Chciałbym zaszyfrować na nim dane, lecz serwer znajduje sie na strychu wraz z modemem (kablówka), routerem, switchem. Jak zabezpieczyć dane przed dostępem fizycznym jeżeli do serwera dostęp jest tylko po ssh i vnc. Chciałbym w razie restartu, ponownego uruchomienia mieć dostęp do danych po sambie, RDP (VNC), DLNA itp. Jak to zrobić?
To wszystko zależy przed czym chcemy chronić dane, które dane i jak bardzo są one dla nas cenne. W wersji paranoidalnej dostęp fizyczny daje dostęp do wszystkiego gdyż teoretycznie, kiedy maszyna jest włączona wszystkie dyski/partycje są w tym czasie odszyfrowane.
Pytanie czy ma być szyfrowany cały komputer wraz z partycją root czy tylko jakaś jedna partycja. Jeśli cały komputer tudzież root to nie da się uniknąć wpisywania hasła przy starcie komputera no chyba, że startowaliśmy go z pendrive’a z zaszytym hasłem, ale to i tak wymagałoby włożenia go wcześniej do portu.
Jeśli ma być szyfrowany dowolny inny filesystem to sytuacja jest bardzo prosta (https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_a_non-root_file_system) wystarczy dm-crypt (cryptsetup), którym szyfrujemy wskazany filesystem. Odblokować go można ręcznie przez np. logując się ssh i podając hasło lub automatycznie w czasie logowania się użytkownika.
Właśnie doprowadziłem system do takiego stanu, że nie wskrzesiłem go do żywych. Ale kopia ustawień jest i partycji /home. Postawiłem nowy system 16 LTS wraz z szyfrowaniem partycji /home i z multimediami (zdjęcia, filmy itp.) Jednak przed startem systemu system woła o hasło do obydwu partycji, bark dostępu po ssh. Jak to zrobić?? W sumie najprościej zaszyfrować tylko multimedia i wyłączyć automatyczne montowanie ale /home zostanie niezaszyfrowany a na nim znajdują się maile, zapamiętane hasła w przeglądarce itp. (korzystam z tego, że serwer „chodzi” 24h i mogę podłączyć się zdalnie np. z pracy).
Fajna rzecz.
Może polecisz jakiś tutoriał żeby zaszyfrować zewnętrzny dysk na USB równie bezpiecznie?
A i pytanie: czy fakt że /boot nie jest zaszyfrowane nie wpływa negatywnie na bezpieczeństwo? Nie da się tego szyfrowania przez to w jakiś sposób obejść?
Wystarczą 3 pierwsze komendy z 2 lub 3 punktu : http://nocnypingwin.pl/szyfrowanie-calego-systemu-wraz-z-partycja-home-przy-uzycia-hasla-i-klucza/, zarówno Gnome jak i KDE w pełni wspierają luksa. Polecam dokumentację arch wiki.
Co do pozostawionej niezaszyfrowanej partycji boot to nie obawiałbym się, nie zawiera ona niczego specjalnego co było przydatne do „złamania” szyfrowania w zagubionym laptopie.
Nie chciałoby Ci się zrobić podobnie z tym że na opensuse z graficznym instalatorem?
Witam!
Właśnie wykonałem udaną próbę pod VirtualBoksem.
Czy w takiej konfiguracji jak wyżej jest możliwość zainstalowania systemu od nowa bez formatowania partycji home? Jeśli nie, to jaka jest przewaga takiego rozwiązania w porównaniu z zainstalowaniem całego systemu na jednej zaszyfrowanej partycji?
Oczywiście, że jest.
Opcja najprostsza czyli zrobić backup /home na niezaszyfrowanej partycji i potem wszystko przekopiować do nowego homea.
Opcja trochę dłuższa to użyć dokładnie tego samego instalatora co w notce, odszyfrować dysk (instalator powinien zapytać o hasło i ładnie pokazać wszystkie woluminy) i wskazać punkt montowania homea (bez opcji format!).
Dzięki za odpowiedź!
Co do pierwszego sposobu: Do tego nie są chyba potrzebne oddzielne woluminy. Co za różnica, czy kopiuję dane z oddzielnego woluminu, czy tylko z podkatalogu.
Co do drugiego sposobu: Właśnie o to mi chodziło. Po kilku próbach udało mi się tego dokonać. Żeby wszystko wyszło, jak należy i żeby instalator rozpoznał istniejące woluminy, to w głównym oknie partycjonowania (po wybraniu opcji „ręcznie”) należy najpierw wybrać „konfiguruj szyfrowane woluminy” , na pytanie, czy zostawić aktualny układ partycji odpowiedzieć „TAK” a następnie wybrać z menu „Activate existing encrypted volumes” i podać hasło ustalone przy poprzedniej instalacji. Następnie trzeba jeszcze ponownie wybrać rodzaj systemu plików i podać punkty montowania dla poszczególnych woluminów.
To prawda, to tylko zwykłe kopiowanie.
Co do drugiego sposobu to dokładnie tak to działa jak przedstawiłeś i instalator sieciowy Ubuntu potrafi sobie z tym poradzić. Najpopularniejsze są tutoriale właśnie z Ubuntu luks/lvm głównie z powodu, że Ubuntu jest w stanie to obsłużyć oraz dlatego, że przy szyfrowaniu całego dysku i na tym utworzeniu woluminów, wymagane jest tylko jedno hasło przy bootowaniu. Bez tego w standardowej konfiguracji należałoby podawać osobno hasło dla każdej montowanej partycji. Chociaż i na to można znaleźć sposób: http://nocnypingwin.pl/szyfrowanie-calego-systemu-wraz-z-partycja-home-przy-uzycia-hasla-i-klucza/
Ile czasu moze trwac tworzenie partycji typu ext4 o rozmarze 11000mb podczas instalacji UBUNTU 15.04 Czy to normalne ze trwa to 4 godziny
To zdecydowanie za długo, nie powinno to trwać dłużej niż 1-2 minuty.