Mam serwer Debian Wheezy, który działa przez jakiś czas z zaszyfrowanym dyskiem. Hasło do zaszyfrowanego dysku ( /dev/sda5
) zostało utracone, gdy mój zaszyfrowany plik hasła został uszkodzony.
Chciałbym móc zrestartować ten serwer, ale to oczywiście wymaga tego hasła. Ponieważ dysk jest wyraźnie w stanie odszyfrowanym, czy istnieje sposób na zmianę hasła bez znajomości starego?
cryptsetup luksChangeKey /dev/sda5
wymaga hasła woluminu.
Mógłbym oczywiście rsync
wszystko wyłączyć i odbudować, ale chciałbym tego uniknąć. Przeglądałem pamięć ( #cat /dev/mem | less
), ale nie byłem w stanie jej znaleźć (co jest bardzo dobrą rzeczą!).
Odpowiedzi:
Tak, możesz to zrobić, uzyskując dostęp do klucza głównego podczas odszyfrowywania woluminu.
Szybkie i brudne dodanie nowego hasła:
device
ivolume_name
powinny być odpowiednio ustawione.volume_name
to nazwa odszyfrowanego woluminu, tego, w którym się widzisz/dev/mapper
.Wyjaśnienie:
Woluminy LUKS szyfrują swoje dane za pomocą klucza głównego. Każde dodane hasło po prostu przechowuje kopię tego klucza głównego zaszyfrowaną tym hasłem. Jeśli więc masz klucz główny, wystarczy użyć go w nowym gnieździe na klucz.
Pozwala rozerwać powyższe polecenie.
To zrzuca garść informacji o aktywnie odszyfrowanym woluminie. Dane wyjściowe wyglądają następująco:
Pole nr 5 to klucz główny.
Nie pokażę wyniku tego, ponieważ są to dane binarne, ale to, co to robi, to pobrać klucz główny dla woluminu, a następnie przekształcić go w surowe dane binarne, które są potrzebne później.
To mówi cryptsetup, aby dodał nowy klucz do woluminu. Zwykle ta czynność wymaga istniejącego klucza, jednak
--master-key-file
informujemy, że chcemy zamiast tego użyć klucza głównego.Jest
<(...)
to podstawianie i przekierowywanie poleceń powłoki. Zasadniczo wykonuje wszystko w środku, wysyła dane wyjściowe do potoku, a następnie zastępuje<(...)
ścieżkę do tego potoku.Tak więc całe polecenie jest tylko linijką, aby skondensować kilka operacji.
źródło
linear
, to nie jest to otwarty wolumin LUKS (niepoprawna wartość dlavolume_name
podanego polecenia). Otwarty wolumin LUKS będzie miałcrypt
w 3. polu. Wcryptsetup luksOpen /dev/foo bar
Thevolume_name
wartość będziebar
./dev/mapper
nazwąluks-.....
. To wolumin, którego musisz użyć, a nie LVM, zmapowany wolumin logiczny.dmsetup table
zmienił. Przynajmniej dla mnie klucz główny jest pokazany w kolumnie$6
.