Automatyczne odblokowanie istniejących partycji LUKS
Mam kilka szyfrowanych LUKS-em dysków na stanie, do których potrzebuje sporadycznie dostępu (do danych na nich zgromadzonych). Więc stwierdziłem, podłącze je do serwera i udostępnie sobie przez NFS. Wszystko spoko, fajnie tylko, że trzeba by je odblokować (rozszyfrować) podczas rozruchu. Oczywiście jest tak możliwość. Można wykorzystać plik klucza, który należy dodać do partycji. Generalnie to do partycji LUKS, możemy dodać maksymalnie 8 kluczy odblokowywujących (odszyfrywujących). Dodając do takiej partycji plik klucz, tak naprawdę zapisujemy w wolnym miejscu (slocie) jego zawartość jako kolejny z 8-miu możliwych do podania haseł. Całą konfigurację należy rozpocząć od zdefiniowania samego hasła, może być to coś konkretnego, np. jakieś zdanie lub zdefiniowany przez nas ciąg znaków, ale również możemy skorzystać generatora pseudolosowego wbudowanego w każdego Uniksa - /dev/random. Wygenerujen 32 bajty (lub więcej) losowych danych, które posłużą nam jako klucz do partycji LUKS.
~# dd if=/dev/random bs=32 count=1 of=plik_klucza0
Tak wygenerowany klucz możemy dodać teraz do partycji LUKS, przy użyciu narzędzia cryptsetup.
# cryptsetup luksAddKey /dev/sdX /root/plik_klucza0
Narzędzie to poprosi nas o podanie jednego z obecnie dodanych klucz,
jeśli wcześniej nie dodawaliśmy, żadnych dodatkowych klucz
deszyfrujących, to podajemy hasło, które używaliśmy do tej pory do
odblokowywania LUKS. Po zatwierdzeniu hasła, klucz został dodany.
Warto zmienić mu uprawnienia, aby tylko właściciel mógł odczytać
jego zawartość
(chmod 600 /root/plik_klucza0
).
Teraz w pliku /etc/crypttab należy zdefiniować automatyczne odblokowywanie partycji, podając jej: nazwę dla mapera, UUID partycji, plik klucz i jeśli to wymagane inne opcję cryptsetup używane podczas odblokowywania. Na przykład:
luks-disk UUID="d03d9875-6310-4eea-809e-8570909408ea" /root/plik_klucza0
Na koniec musimy wskazać w pliku /etc/fstab punkt montowania oraz opcje dla odszyforwanej partycji. Tutaj nie musimy posługiwać się UUID-ami, jak zazwyczaj, ponieważ nazwa dla mappera jest unikalnym identyfikatorem dla partycji, wątpię w to aby została ona zmieniona podczas działania systemu. Chyba, że ręcznie zablokujemy tego LUKS-a i odblokujemy pod inną nazwą.
/dev/mapper/luks-disk /srv/cryptdisk ext4 defaults 0 2
Po restartcie systemu, powinniśmy zobaczyć odblokowany i zamontowany LUKS w naszym systemie. To rozwiązanie ma jedną zasadniczą wadę związaną z bezpieczeństwem danych zgromadzonych na LUKS. W momencie gdy ktoś uzyska dostęp fizyczny do maszyny, to uzyska również dostęp do danych na LUKS. Rozwiązań tego problemu może być kilka, nie mniej warto się jednak nad nim zastanowić.
Źródło: How to add a passphrase, key, or keyfile to an existing LUKS device
~xf0r3m