Czy mogę wyłączyć szyfrowanie całego dysku?

41

Niedawno zainstalowałem Ubuntu 12.10 i wymaga hasła do uruchomienia (zainstalowałem go z zaszyfrowanym systemem plików).

Czy muszę ponownie zainstalować, aby przejść do standardowego niezaszyfrowanego systemu plików?

Zzealdor
źródło
Czy zaszyfrowałeś całą instalację Ubuntu, czy tylko katalog domowy?
Flimm,
Zaszyfrowałem podczas instalacji, więc zgaduję całą instalację.
Zzealdor,
3
Jestem nowym użytkownikiem, więc nie jestem pewien, jak działają rzeczy w Linuksie (Mam już dość Microsoft!)
Zzealdor,
@Rinzwind Prawdopodobnie nie. Ta metoda (ecryptfs) szyfruje katalog domowy i nie wymaga dodatkowego hasła; hasło logowania jest używane.
Jan
1
@ user163872: Nowe wersje Ubuntu (12 i 13) działają bardzo wolno na starych komputerach, takich jak netbooki. Powinieneś zainstalować Lubuntu, który jest zaprojektowany pod kątem szybkości i działa bardzo szybko na starszych / wolniejszych komputerach, nawet przy niskiej pamięci RAM (tj. 512 MB). Lubuntu jest prawie taki sam jak normalny Ubuntu - tylko menu pulpitu / menu jest nieco inne. Ale wszystko, co działa na normalnym Ubuntu, będzie działać również w Lubuntu.
lara,

Odpowiedzi:

22

Jeśli Ubuntu poprosi o hasło szyfrujące podczas rozruchu (tj. Na konsoli tekstowej przed wyświetleniem ekranu logowania), oznacza to, że użyto metody szyfrowania całego dysku. (Jest na to więcej niż jeden sposób, ale zachowam ogólną odpowiedź.) Szyfrowanie jest obsługiwane przez dodatkową warstwę oprogramowania między systemem plików a fizycznym dyskiem twardym, a nie sam system plików.

Nie ma prostej metody ani narzędzia do cofnięcia tego. Przy odrobinie wiedzy na temat działania systemów Linux można to zrobić. Trzeba przenieść cały system plików (lub wszystkie pliki) na inną partycję (z wystarczającą ilością wolnego miejsca) lub zewnętrzny dysk twardy. Następnie usuń zaszyfrowany pojemnik i ponownie utwórz system plików bez szyfrowania. Na koniec upewnij się, że nowy system plików jest poprawnie rozpoznawany przez moduł ładujący mount -aprzed ponownym uruchomieniem.

Jeśli to możliwe, najlepiej unikać tej czasochłonnej i podatnej na błędy procedury. Po prostu wykonaj świeżą instalację. Dla nowych użytkowników jest to najszybsza i najbezpieczniejsza opcja.

PS: Możliwe, że możesz zmienić hasło szyfrowania, prawdopodobnie na pusty ciąg. Następnie odszyfrowanie wymaga jedynie naciśnięcia Enter. Być może możesz pójść dalej i pominąć monit (teraz bezużyteczny) o hasło. Nie wyłącza to jednak szyfrowania. Dane nadal byłyby szyfrowane, chociaż szyfrowanie byłoby bezużyteczne, ponieważ klucz można zgadnąć w trywialny sposób.

Jan
źródło
3
Teoretycznie nie powinieneś być w stanie zrobić czegoś takiego jak „dd if = / dev / mapper / sda5_crypt of = / dev / sda5 bs = 32M”?
Roy
@ Roy, myślę, że zadziała to tylko wtedy, gdy spełnione są następujące warunki: 1. dda sterowniki bazowe nie piszą, dopóki nie zakończą odczytu każdego bloku (zapewne istnieją flagi i ustawienia, aby to zapewnić) 2. odczyt / zapis bloki nie nakładają się na krawędzie bloków szyfrowania (można to sprawdzić, może wymagać pewnej matematyki) 3. ważne informacje nagłówka potrzebne do odszyfrowania nie są nadpisywane przed zakończeniem (sprawdź podstawowy format szyfrowania, być może przetwarzany od początku do początku). Myślę, że jest to możliwe, ale wymagałoby bardziej starannej konfiguracji i analizy.
fuzzyTew
20

Poniżej moje rozwiązanie, które zadziałało. Pamiętaj, że nie jestem specjalistą od Linuksa, więc może nie być to najlepsze rozwiązanie. W każdym razie nie mogłem znaleźć lepszego.

Migrowanie instalacji FDE na niezaszyfrowaną partycję

UWAGA : Ilekroć mówię, mam na myśli

/dev/sda1 - boot partition
/dev/sda5 - encrypted partition
/dev/sda3 - clean non-encrypted EXT4 partition
/dev/sda2 - my newly created swap partition

Kopiowanie danych z zaszyfrowanego głównego systemu plików

Uruchom z płyty CD na żywo. Użyłem 32-bitowego pulpitu Ubuntu 13.10 ISO.

Zamontuj partycję:

sudo cryptsetup luksOpen /dev/sda5 crypt1

Skopiuj dane źródłowe na docelową partycję i zapisz dd PID w zmiennej pid:

sudo dd if=/dev/ubuntu-vg/root of=/dev/sda3 bs=1M & pid=$!

Spowoduje to wysłanie polecenia ping co drugi proces dd z sygnałem USR1 i statusem wyników dd:

while sudo kill -USR $pid; do sleep 1; done

Alternatywa dla monitorowania DD

Jeśli nie lubisz powyższej metody „while”, możesz użyć zegarka. Otwórz inne okno terminala i uzyskaj PID:

pgrep -l '^dd$' | awk '{ print $1 }'

Zamień na swój identyfikator procesu:

watch kill -USR1 <pid>

Powinieneś zobaczyć wyjście w terminalu dd co 2s.

Konfigurowanie nowego głównego systemu plików i partycji

Po zakończeniu możesz zamontować nieszyfrowaną partycję, aby sprawdzić, czy jest w porządku:

sudo mount /dev/sda3 /mnt

Następnie odmontuj partycję:

sudo umount /dev/sda3

Zwolnij partycję crypt:

sudo cryptsetup luksClose /dev/sda5

Uruchom gparted. Usuń partycję LUKS (zarówno rozszerzoną, jak i logiczną). Zmień rozmiar / dev / sda3 i przesuń w lewo. Utwórz partycję wymiany.

Uwaga: Przeniesienie / dev / sda3 w lewo może potrwać długo. Dla mnie zajęło to 30 minut na partycji 120 GB i dysku SSD. Jeśli masz 500 GB + HDD, przygotuj się na kilka godzin oczekiwania. Możesz chcieć utworzyć swap przed partycją zamiast przenosić / dev / sda3.

Utwórz nowy system plików wymiany na partycji wymiany:

sudo mkswap /dev/sda2 

i przechowuj gdzieś UUID.

Uzyskaj identyfikator UUID partycji głównej:

sudo blkid /dev/sda3

Edytuj fstab:

sudo nano /etc/fstab

Usuń lub skomentuj linie nakładek i tmpfs.

Dodaj zastąpienie wiersza wynikiem blkid:

UUID=<uuid_root> /  ext4 errors=remount-ro 0 1
UUID=<uuid_swap> none swap sw 0 0

Usuń plik:

rm /etc/crypttab

Zaktualizuj initramfs, aby uniknąć błędów typu „cryptsetup: evms_activate nie jest dostępny”:

sudo -i
mount /dev/sda3 /mnt
mount -t proc none /mnt/proc
mount -o bind /sys /mnt/sys
mount -o bind /dev /mnt/dev
mount /dev/sda1 /mnt/boot
chroot /mnt /bin/bash
apt-get remove --purge cryptsetup
update-initramfs -u -k all

Ostatnie uwagi i rozwiązywanie problemów

Dla mnie to zadziałało, ale jest szansa, że ​​wykonanie powyższej czynności krok po kroku może nie działać. Zanim odkryłem metodę update-initramfs, kilka razy instalowałem ponownie jądro, modyfikowałem grub. Nie powinno to jednak dotyczyć Ciebie. Pamiętaj, że powyższe instrukcje mogą usunąć Twoje dane, więc bądź ostrożny i wykonaj KOPIĘ ZAPASOWĄ , PRZED kontynuowaniem.

Na wypadek problemów z jądrem (chrootowany i / boot zamontowany):

uname -r
sudo apt-get install --reinstall linux-image-3.X.Y-ZZ-generic

Oczywiście zastąp linux-image-3.XY-ZZ datą jądra od uname.

lub GRUB (poza chroot):

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && (boot-repair &)

Więcej informacji: https://help.ubuntu.com/community/Boot-Repair

Powodzenia

NeverEndingQueue
źródło
1
Uważam, że musisz /etc/initramfs-tools/conf.d/resumeręcznie zmienić identyfikator UUID partycji wymiany i zaleciłbym skopiowanie zawartości systemu plików z cp -alub, rsync -aponieważ byłoby to ogólnie szybsze i bezpieczniejsze dla dysków SSD.
LiveWireBT,
Dzięki, że moje opracowanie jest bardziej przyjazne dla użytkownika. Nie zrobiłem zmiany wznowienia, byłem również przestraszony za pomocą cp lub rsync, myślałem, że dd (surowa kopia z urządzenia na urządzenie) jest odpowiednim narzędziem do takich zadań. Robiłem to na maszynie wirtualnej, ale obraz został umieszczony na dysku SSD. Czy możesz opracować: „bezpieczniejsze dla dysków SSD”?
NeverEndingQueue
Używając ddkopiuje całą partycję, nawet bloki, które powinny być puste, co powoduje niepotrzebne zapisy na SSD (a na niektórych nawet szkodzi wydajności zapisu do prawie wszystkich komórek). Kilka lat temu ja i niektórzy inni odkryliśmy również, że kopiowanie ddi aktywowanie TRIM (opcja odrzucania EXT4) spowoduje, że TRIM usunie bloki, które uważa za puste i po kilku godzinach pozostawi zepsutą instalację.
LiveWireBT
W pierwszej metodzie monitorowania powinien być USR1 zamiast USR. Wiem, że to oczywiste, ale może być problemem dla początkujących takich jak ja;)
goodfellow
9

W przypadku, gdy utrzymanie szyfrowania jest w porządku, ale wyłączenie monitu o hasło jest o wiele prostsze, wystarczy ustawić trywialne hasło, takie jak „hasło”, a następnie zapisać to trywialne hasło w initramfs w postaci czystego tekstu. Wyłącz hasło szyfrowania LUKS .

Zasadniczo dodaj skrypt przechwytujący, który z kolei dodaje „skrypt klawiszy” do initramfs. Zwykle te skrypty są używane do uzyskania hasła przez Bluetooth, z pamięci USB itp., Ale w tym przypadku po prostu wydrukuj trywialne hasło.

Richard A.
źródło