dm-crypt/Encrypting a non-root file system (Polski)

From ArchWiki
Jump to navigation Jump to search

Poniżej przedstawiono przykłady szyfrowania wtórnego, tj. Innego niż root, systemu plików z dm-crypt.

Overview

Szyfrowanie dodatkowego systemu plików zazwyczaj chroni tylko poufne dane, pozostawiając niezaszyfrowany system operacyjny i pliki programów. Jest to przydatne do szyfrowania zewnętrznego nośnika, takiego jak dysk USB, aby można go było bezpiecznie przenieść na inne komputery. Można również wybrać szyfrowanie zestawów danych osobno w zależności od tego, kto ma do nich dostęp.

Ponieważ dm-crypt jest warstwą szyfrowania blokowego, szyfruje tylko pełne urządzenia, pełne partycje i urządzenia pętli. Szyfrowanie pojedynczych plików wymaga warstwy szyfrowania na poziomie systemu plików, takiej jak eCryptfs lub EncFS. Zobacz Disk encryption (Polski), aby uzyskać ogólne informacje na temat zabezpieczania prywatnych danych.

Partycja

Ten przykład obejmuje szyfrowanie partycji /home, ale można ją zastosować do dowolnej innej porównywalnej partycji innej niż root, zawierającej dane użytkownika.

Tip: Możesz mieć katalog pojedynczego użytkownika /home na partycji lub utworzyć wspólną partycję dla wszystkich partycji użytkownika /home

Najpierw upewnij się, że partycja jest pusta (nie ma do niej podłączonego systemu plików). Usuń partycję i utwórz pustą, jeśli ma system plików. Następnie przygotuj partycję przez jej bezpieczne usunięcie, zobacz Dm-crypt/Drive preparation#Secure erasure of the hard disk drive.

Następnie ustaw nagłówek LUKS na

# cryptsetup options luksFormat --type luks2 device

Zamień urządzenie na poprzednio utworzoną partycję. zobacz Dm-crypt/Device encryption (Polski)#Opcje szyfrowania z dm-crypt po szczegóły, takie jak dostępne opcje.


Aby uzyskać dostęp do zaszyfrowanej partycji, odblokuj ją za pomocą urządzenia mapującego, używając:

# cryptsetup open device name

Po odblokowaniu partycji będzie ona dostępna pod adresem /dev/mapper/name. Teraz stwórz a System plików do wyboru z:

# mkfs.fstype /dev/mapper/name

Zamontuj system plików na /home lub jeśli powinien być dostępny tylko dla jednego użytkownika na /home/username, zobacz #Ręczne montowanie i odmontowywanie.

Tip: Odmontuj i zamontuj jeden raz, aby sprawdzić, czy mapowanie działa zgodnie z oczekiwaniami.

Ręczne zakładanie i odmontowywanie

Aby zamontować partycję:

# cryptsetup open device name
# mount -t fstype /dev/mapper/name /mnt/home

Aby odmontować:

# umount /mnt/home
# cryptsetup close name
Tip: GVFS can also mount encrypted partitions. One can use a file manager with gvfs support (e.g. Thunar) to mount the partition, and a password dialog will pop-up. For other desktops, zulucryptAUR also provides a GUI.

Automatyczne odblokowywanie i montowanie

Istnieją trzy różne rozwiązania do automatyzacji procesu odblokowywania partycji i montowania jej systemu plików.

Podczas startu systemu

Użycie pliku konfiguracyjnego /etc/crypttab powoduje automatyczne odblokowanie podczas uruchamiania systemu. Jest to zalecane rozwiązanie, jeśli chcesz użyć jednej wspólnej partycji na wszystkich partycjach domowych użytkownika lub automatycznie zamontować inne zaszyfrowane urządzenie blokowe.

Zobacz Dm-crypt/System configuration#crypttab w przypadku odniesień i Dm-crypt/System configuration#Mounting at boot time na przykład skonfigurować.

Przy logowaniu użytkownika

Za pomocą pam_exec możliwe jest odblokowanie (cryptsetup open) partycja przy logowaniu użytkownika: jest to zalecane rozwiązanie, jeśli chcesz mieć katalog domowy pojedynczego użytkownika na partycji. zobacz dm-crypt/Mounting at login.

Odblokowanie przy logowaniu użytkownika jest również możliwe dzięki pam_mount.

Loop device

Tip: Należy zauważyć, że za pomocą losetup bezpośrednio można uniknąć całkowicie, wykonując alternatywną metodę:
# dd if=/dev/urandom of=key.img bs=20M count=1
# cryptsetup --align-payload=1 --hash=sha512 --cipher=serpent-xts-plain64 --key-size=512 -i 30000 luksFormat key.img
# cryptsetup open key.img lukskey

Za mało pliku dostaniesz Requested offset is beyond real size of device /dev/loop0 błąd, ale jako przybliżone odniesienie tworzenie pliku 4MiB spowoduje jego pomyślne zaszyfrowanie. [1]

Urządzenie z pętlą umożliwia mapowanie urządzenia blokowego do pliku za pomocą standardowego narzędzia util-linux losetup. Plik może wówczas zawierać system plików, który może być używany podobnie jak każdy inny system plików. Wielu użytkowników wie TrueCrypt jako narzędzie do tworzenia zaszyfrowanych kontenerów. Mniej więcej taką samą funkcjonalność można osiągnąć za pomocą systemu plików loopback zaszyfrowanego za pomocą LUKS i pokazano go w poniższym przykładzie.

Najpierw zacznij od utworzenia zaszyfrowanego kontenera, używając odpowiedniego random number generator

# dd if=/dev/urandom of=/bigsecret bs=1M count=10

Spowoduje to utworzenie dużego pliku o rozmiarze 10 megabajtów.

Note: Aby uniknąć konieczności zmiany rozmiaru kontenera w późniejszym czasie, upewnij się, że jest większy niż całkowity rozmiar plików, które mają być zaszyfrowane, aby przynajmniej hostować powiązane metadane potrzebne w wewnętrznym systemie plików. Jeśli zamierzasz używać trybu LUKS, jego nagłówek metadanych wymaga od jednego do dwóch megabajtów.


Następnie utwórz węzeł device /dev/loop0, abyśmy mogli zamontować / używać naszego kontenera:

# losetup /dev/loop0 /bigsecret
Note: Jeśli to daje błąd /dev/loop0: No such file or directory, musisz najpierw załadować moduł jądra za pomocą modprobe loop. Obecnie urządzenia pętli (Kernel 3.2) są tworzone na żądanie. Poproś o nowe urządzenie z pętlą # losetup -f.

Odtąd procedura jest taka sama jak w przypadku #Partycja, z wyjątkiem faktu, że kontener jest już randomizowany i nie będzie wymagał kolejnego bezpiecznego usunięcia.

Tip: Kontenery z dm-crypt mogą być bardzo elastyczne. Spójrz na funkcje i dokumentację Tomb. Zapewnia dm-crypt szybką i elastyczną obsługę.

Ręczne montowanie i odmontowywanie

Aby odmontować kontener:

# umount /mnt/secret
# cryptsetup close secret
# losetup -d /dev/loop0

Aby ponownie zamontować kontener:

# losetup /dev/loop0 /bigsecret
# cryptsetup open /dev/loop0 secret
# mount -t ext4 /dev/mapper/secret /mnt/secret