Bezpiecznie zamontuj zaszyfrowany dysk przy logowaniu użytkownika

18

Zaszyfrowany katalog / home jest automatycznie montowany dla mnie po zalogowaniu. Mam drugi wewnętrzny dysk twardy, który sformatowałem i zaszyfrowałem za pomocą Narzędzia dyskowego. Chcę, aby był automatycznie montowany podczas logowania, podobnie jak mój zaszyfrowany katalog / home. Jak mam to zrobic?

Jest tu kilka bardzo podobnych pytań, ale odpowiedzi nie dotyczą mojej sytuacji. Być może najlepiej zamknąć / scalić moje pytanie tutaj i edytować drugie poniżej, ale myślę, że zostało ono porzucone (i dlatego nigdy nie powinno być oznaczone jako zaakceptowane).

To rozwiązanie nie jest bezpieczną metodą, obchodzi szyfrowanie.
Ten wymaga edycji fstab, co wymaga wprowadzenia dodatkowego hasła podczas rozruchu. To nie jest automatyczne jak montaż / home.
To pytanie jest bardzo podobne, ale nie dotyczy szyfrowanego dysku. Rozwiązanie nie będzie działać dla moich potrzeb.
Oto jeden, ale dotyczy dysków NTFS, mój to ext4.

Mogę ponownie sformatować i ponownie zaszyfrować drugi dysk, jeśli rozwiązanie tego wymaga. Mam kopię zapasową wszystkich danych w innym miejscu.

Tom Brossman
źródło
Jakiego FS używasz do szyfrowania? LUKS czy ecrytpfs?
stokrotka
@AaronLewis Po prostu używam Narzędzia dyskowego Ubuntu do sformatowania dysku, a następnie zaznacz pole „szyfruj ten dysk”. Gdybym musiał zgadywać, wybrałbym ecryptfs, ponieważ w ten sposób / home jest domyślnie szyfrowane. Ponieważ jest to tak łatwe do zrobienia, nigdy się tym nie zajmowałem.
Tom Brossman

Odpowiedzi:

5

Nie potrzebujesz już powyższych rozwiązań.

Wymagania wstępne:

Uwaga: ta metoda jest mniej bezpieczna niż ręczne instalowanie zaszyfrowanego dysku. Jeśli ktoś ma fizyczny dostęp do twojego komputera, jesteś nieostrożny z hasłem root lub twój komputer ma wielu kont użytkowników / gości, ta metoda nie jest bezpieczna ; dysk dodatkowy pozostaje zamontowany po wylogowaniu, ale nie wyłącza systemu, więc jego zawartość jest widoczna dla innych użytkowników.

Część 1: Zaszyfruj dysk dodatkowy.

  1. W desce rozdzielczej Unity wpisz „dyski” i naciśnij klawisz Enter.
  2. Pod „Urządzeniami” kliknij dysk twardy, który chcesz zaszyfrować.
  3. Pod „Wolumenami” kliknij przycisk koła zębatego / innych działań.
  4. Kliknij „Formatuj wolumin”. Dla typu wybierz „Szyfrowane, zgodne z systemami Linux”. Nazwij swój dysk i nadaj mu mocne hasło.
  5. Kliknij „Formatuj”

Część 2: Automatycznie zamontuj dysk twardy podczas uruchamiania systemu.

  1. Pozostaw aplikację „Dyski” otwartą i kliknij koło zębate.
  2. Kliknij „Edytuj opcje szyfrowania”.
  3. „Automatyczne opcje szyfrowania” zostaną włączone, a menu poniżej wyszarzone. Wyłącz automatyczne opcje szyfrowania.
  4. Wprowadź frazę hasła od momentu sformatowania dysku. Kliknij OK".

Masz teraz zaszyfrowany dysk twardy, który zostanie automatycznie zamontowany po uruchomieniu komputera.

tryion
źródło
1
Chociaż jestem pewien, że ktoś będzie do tego przydatny, nie jest to odpowiedź na postawione pytanie, które określa, że ​​dodatkowe podłączenie powinno nastąpić podczas logowania użytkownika, a nie podczas uruchamiania systemu. To sprawia, że ​​początkowe twierdzenie, że „Nie potrzebujesz już powyższych rozwiązań” jest niewłaściwe, i zachęcam autora do odpowiedniego przeredagowania odpowiedzi.
mc0e
2
Myślę, że się tutaj mylisz. Oznacza to, że dodatkowe podłączenie następuje przy logowaniu użytkownika (tylko na koncie, na którym wspomniana operacja została wykonana), a nie sekundę wcześniej. Kiedy moja żona loguje się do swojego konta Ubuntu na tym samym komputerze, napęd nie jest zamontowany. Jeśli spróbuje go zamontować, poprosi o klucz szyfrowania. Utrzymuję, że nie potrzebujesz powyższych odpowiedzi.
tryion
1
Zgadzam się, jest to zdecydowanie najprostszy sposób, ponieważ jestem jedynym użytkownikiem na tym komputerze. To nie będzie działać dla wszystkich, ale jeśli masz instalację Ubuntu i jesteś użytkownikiem głównym / administracyjnym, jest to odpowiedni sposób. Naprawdę powinno być gdzieś duże pole wyboru „Spraw, aby działało dokładnie tak, jak zaszyfrowane / domowe”, jest to prosty przypadek użycia.
Tom Brossman,
@tryion Partycja LUKS jest odblokowana podczas uruchamiania systemu, ale nie jest zamontowana. Tak więc zaraz po włączeniu komputer jest dostępny tak samo, jak niezaszyfrowana partycja. Hasło jest przechowywane w postaci zwykłego tekstu w /etc/crypttab. Aby uzyskać dostęp do partycji, nie jest wymagane hasło użytkownika. To ustawienie jest równoznaczne z brakiem szyfrowania i nie jest odpowiedzią na pytanie.
Victor
Czy istnieją opcje przechowywania go w innym miejscu przy użyciu libsecret w celu odszyfrowania dla konkretnego użytkownika, i czy istnieje przewodnik po tym dla użytkowników spoza GUI / bezgłowych.
MrMesees
10

Kiedy kilka lat temu napisałem tę odpowiedź, był to najlepszy sposób na wdrożenie rozwiązania. Sugeruję teraz, aby spojrzeć na następną odpowiedź, używając zamiast tego mount.ecryptfs_private.

Szukałem również sposobu na automatyczne zamontowanie drugiego woluminu eCryptfs. Poniższy zbiór skryptów i modyfikacji konfiguracji bezpiecznie i automatycznie zamontuje wolumin podczas logowania, zarówno w GUI, jak i CLI.

Istnieje lepsze rozwiązanie, które jest w trakcie tworzenia (choć myślę, że nie jest jeszcze gotowe do automatycznego montażu przy logowaniu użytkownika, ponieważ taki skrypt będzie miał ograniczony okres trwałości.):

ecryptfs na zbyt małym dysku twardym - jak dodać linki do szyfrowania?

Bezpieczeństwo skryptów zależy od szyfrowania twojego katalogu domowego za pomocą eCryptfs, tak aby skrypt i pliki z hasłem do rozpakowywania hasła były szyfrowane. Jeśli pozostawisz komputer odblokowany z otwartą powłoką roota po zalogowaniu, będziesz mieć dostęp do haseł, jednak użycie sudo NOPASSWD pozwala na bezpieczne zamontowanie partycji bez konieczności wprowadzania hasła lub pozostawiania hasła w pliku czytelnym dla użytkownika.

Jednym ze znanych wad tych skryptów jest to, że drugi wolumin nie zostanie odmontowany podczas wylogowywania, dlatego nie jest szczególnie odpowiedni dla systemów z wieloma użytkownikami.

Moje rozwiązanie zostało zaimplementowane z kilkoma częściami, dwoma skryptami powłoki, z których jedna wykonuje rzeczywiste montowanie, a druga służy jako opakowanie.

To jest skrypt otoki, który sprawdza, czy katalog jest już podłączony, jeśli nie jest, to wywoła skrypt montażowy za pomocą sudo:

/ home / johnf / scripts / automount_ecryptfs

#!/bin/bash

MOUNT_POINT=/home/johnf/slow

grep -q $MOUNT_POINT /proc/mounts
if [ $? -eq 1 ]; then
  sudo /home/johnf/scripts/mount_other_ecryptfs
fi

Ten skrypt wywołuje / home / johnf / scripts / mount_other_ecryptfs, co jest następujące.

Zauważ, że ten skrypt zakłada, że ​​masz włączone szyfrowanie nazw plików, jeśli nie, konieczne będzie zmodyfikowanie skryptu w celu obsługi wykrywania (spójrz na ecryptfs-recovery-private) lub możesz usunąć opcję montowania ecryptfs_fnek_sig.

Poniżej znajduje się skrypt / home / johnf / scripts / mount_other_ecryptfs:

#!/bin/bash

ENCRYPTED_VOLUME=/vol0/.ecryptfs/johnf/.Private/
MOUNT_POINT=/home/johnf/slow
PASSFILE=/home/johnf/scripts/ecryptfs_passphrase
MOUNT_PASSWORD=secret_passphrase
ECRYPTFS_SIG=`head -1 ${ENCRYPTED_VOLUME}//../.ecryptfs/Private.sig`
ECRYPTFS_FNEK_SIG=`tail -1 ${ENCRYPTED_VOLUME}//../.ecryptfs/Private.sig`

printf "%s" $MOUNT_PASSWORD | ecryptfs-insert-wrapped-passphrase-into-keyring ${ENCRYPTED_VOLUME}/../.ecryptfs/wrapped-passphrase
mount -t ecryptfs -o key=passphrase:passfile=${PASSFILE},ecryptfs_sig=${ECRYPTFS_SIG},ecryptfs_fnek_sig=${ECRYPTFS_FNEK_SIG},ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=n ${ENCRYPTED_VOLUME} ${MOUNT_POINT}

Będziesz także musiał utworzyć plik z hasłem, ten plik będzie używany przez komendę eCryptfs mount:

/ home / johnf / scripts / ecryptfs_passphrase:

passwd=secret_passphrase

Musisz zmodyfikować uprawnienia do kilku plików:

chmod +x /home/johnf/scripts/automount_ecryptfs
sudo chown root:root /home/johnf/scripts/mount_other_ecryptfs /home/johnf/scripts/ecryptfs_passphrase
sudo chmod a=x /home/johnf/scripts/mount_other_ecryptfs
sudo chmod 400 /home/johnf/scripts/ecryptfs_passphrase

Przed utworzeniem skryptów należy utworzyć konfigurację sudoers, aby umożliwić wykonanie skryptu instalacyjnego przy użyciu sudo bez podawania hasła sudo.

Dodaj następujące elementy do / etc / sudoers (lub pliku w /etc/sudoers.d). Będziesz chciał zastąpić johnf swoją nazwą użytkownika. Konieczne jest użycie bezwzględnej ścieżki do skryptu montowania.

johnf   ALL = NOPASSWD: /home/johnf/scripts/mount_other_ecryptfs

Ostatnim krokiem jest wywołanie skryptu automount_ecryptfs podczas logowania.

W systemie Ubuntu Unity (i prawdopodobnie gnome) użyj apletu Aplikacje startowe, aby utworzyć nowy program startowy, który wywołuje / home / johnf / scripts / automount_ecryptfs.

Aby automatycznie zamontować drugi wolumin eCryptfs podczas logowania do powłoki bash, będziesz chciał zmodyfikować plik ~ / .bashrc. Dodaj następujące:

/home/johnf/scripts/automount_ecryptfs

Po skonfigurowaniu tej konfiguracji powinieneś teraz automatycznie zamontować drugi wolumin eCryptfs.

John
źródło
Wow, świetna odpowiedź! Pozytywne i zaakceptowane. Nie mogę tego jeszcze przetestować, ale wygląda to bardzo kompletnie.
Tom Brossman
Autor mount.ecryptfs_privateodtąd zaleca stosowanie ecryptfs-mount-privaterównież przez niego skryptu opakowującego mount.ecryptfs_private. thesimplecomputer.info/... może być wart przeczytania ze względu na względne zalety ecryptfs i LUKS.
mc0e,
9

Opierając się na odpowiedzi @ johnf, ale zamiast tego używając mount.ecryptfs_private :

  • zaszyfrowane /home/bob/(np. na dysku SSD), przy użyciu normalnej zaszyfrowanej magii domowej Ubuntu.
  • zaszyfrowane /media/hdd/bob_extra/(np. na dysku twardym), do którego ma zostać podłączony /home/bob/extra. Powinno to zostać automatycznie zamontowane przy logowaniu, tak jak robi to katalog domowy.
  • użyj tych samych kluczy / poświadczeń dla obu.

Stwórz To

mkdir /media/hdd/bob_extra
cp /home/bob/.ecryptfs/Private.sig /home/bob/.ecryptfs/extra.sig
echo "/media/hdd/bob_extra /home/bob/extra ecryptfs none 0 0" > /home/bob/.ecryptfs/extra.conf

Sprawdź to

mount.ecryptfs_private extra

uruchomiony mount, powinieneś zobaczyć:

...
/media/hdd/bob_extra on /home/bob/extra type ecryptfs (ecryptfs_check_dev_ruid,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs,ecryptfs_sig=12345678abcdef,ecryptfs_fnek_sig=abcdef12345678)

odmontować:

sudo umount /media/hdd/bob_extra

ustaw automount

Utwórz /home/bob/bin/automount_ecryptfs.extra, który zamontuje go, jeśli nie został jeszcze zamontowany.

#!/bin/bash

MOUNT_POINT=/home/bob/extra

grep -q $MOUNT_POINT /proc/mounts
if [ $? -eq 1 ]; then
  mount.ecryptfs_private extra
fi

Ustaw go jako wykonywalny ( chmod +x), a następnie dodaj go do /home/bob/.bashrc:

...
/home/bob/bin/automount_ecryptfs.extra

Następnie dodaj go również do aplikacji startowych Gnome.

rcoup
źródło
+1 dzięki za odpowiedź. Mam teraz znacznie bardziej skomplikowaną konfigurację z wieloma dyskami SSD i dowiązaniami symbolicznymi do dysku współdzielonego, więc nie będę w stanie tego przetestować. Mam nadzieję, że szyfrowanie wielu dysków twardych będzie kiedyś tak proste jak szyfrowanie / home.
Tom Brossman,
Zobacz także, ecryptfs-mount-privatektóry jest podobny, bardziej funkcjonalny. Np. Może automatycznie użyć klucza z kluczy użytkownika.
mc0e
Ta odpowiedź dotyczy montowania prywatnego katalogu eCryptfs. Pytanie dotyczyło zamontowania partycji LUKS utworzonej za pomocą narzędzia Dyski .
Victor
1

Utwórz skrypt w zaszyfrowanym katalogu domowym ~/scripts/mount_storage.sh:

#!/bin/bash

sudo cryptsetup open --type luks UUID=12e26119-0ee2-4eb4-bd40-d8a3547ecf0c storage --key-file ~/keys/storage_keyfile
sudo mount /dev/mapper/storage /storage

Dodaj do „Aplikacji startowych”:

sh ~/scripts/mount_storage.sh

Dodaj do /etc/sudoers:

%sudo   ALL= NOPASSWD: /sbin/cryptsetup open --type luks UUID=12e26119-0ee2-4eb4-bd40-d8a3547ecf0c storage --key-file *
%sudo   ALL= NOPASSWD: /bin/mount /dev/mapper/storage /storage

Musisz utworzyć /storagepunkt montowania i zmienić UUID w powyższym skrypcie (znajdź go za pomocą blkid).

Raul Laasner
źródło
Czy istnieje prosty sposób na uruchomienie takiego skryptu przy każdym podłączeniu USB?
naught101
Nie próbowałem tego sam, więc nie mogę powiedzieć na pewno, ale nie rozumiem, dlaczego nie. Trzeba będzie utworzyć regułę udev, która jest ukierunkowana na określone urządzenie USB i uruchamia powyższy skrypt. Ten post może być na przykład punktem wyjścia.
Raul Laasner
0

Obawiam się, że nie będzie to popularna odpowiedź ...

Nie będzie możliwe automatyczne zamontowanie żadnej zaszyfrowanej partycji bez obchodzenia bezpieczeństwa samego szyfrowania.

Zastanów się, co oznacza „ automatycznie ”, i zrozum, że automatycznie oznacza, że ​​również zobaczą twoje dane.

Dustin Kirkland
źródło
Użyłem „Bezpiecznie” subiektywnie, mogłem usunąć go z pytania. Chcę tylko, aby zaszyfrowany dysk pełen zdjęć był zamontowany podczas logowania, tak jak / home jest. Wiem, że jest to teoretycznie możliwe, ponieważ mam trzeci (również zaszyfrowany) dysk jako miejsce docelowe dla Déjà Dup. Ten dysk jest montowany tylko po uruchomieniu narzędzia do tworzenia kopii zapasowych. W pełni automatyczny mam klucz zapisany, więc nie wprowadzam go za każdym razem. Czuję się dobrze, gdy wszystkie moje klucze są obsługiwane automatycznie po wpisaniu hasła na ekranie logowania. Masz pomysł, jak to zrobić? Dzięki.
Tom Brossman
3
Automatycznie w tym kontekście oznacza, że ​​należy go zamontować po wprowadzeniu hasła logowania. Hasło logowania może być kluczem, lub częściej kluczem do klucza, do zaszyfrowanej partycji. Jest to dość bezpieczne (daje dobre hasło do logowania).
Javier Rivera
Nie zostanie automatycznie zamontowany na innym komputerze, dlatego większość z nas szyfruje niektóre dyski. W moim przypadku jest to dysk, którego używam do tworzenia kopii zapasowych. Pracuję we wspólnej przestrzeni i wiem, że jeden z was z dużą wiedzą będzie w stanie obejść to, co robię z fizycznym dostępem do mojego dysku / komputera: chcę tylko zmniejszyć dostępność moich plików, aby każdy mógł nie rób tego.
Ramon Suarez
Czy czyniąc to procesem automatycznym, czy ktoś, kto kradnie twój komputer, mógłby uzyskać dostęp do klucza zaszyfrowanego dysku dodatkowego? (a następnie oczywiście zamontuj i
uzyskaj
Prosty, oczywisty scenariusz: podłączam dysk USB do serwera w biurze, aby wykonać kopię zapasową danych. Zabieram dysk USB do domu, aby zapewnić kopie zapasowe poza siedzibą na wypadek, gdyby coś złego się wydarzyło na serwerze. Ktoś włamuje się do mojego samochodu i zabiera dysk USB, gdy jestem w sklepie w drodze do domu. Teraz muszą 1) wiedzieć, gdzie jest serwer, i 2) włamać się do biura, aby odszyfrować dysk. Ta część jest o wiele trudniejsza niż „wystarczy podłączyć ją do komputera w domu”.
Ernie,
0

Postępowanie w następujący sposób powinno być bezpieczne. Wymaganie hasła uniemożliwia innym użytkownikom dostęp do woluminu, nawet jeśli jest on zamontowany.

1. Otwórz dyski, wybierz napęd i kliknij wolumin LUKS. Kliknij koła zębate i odznacz „Domyślne ustawienia sesji użytkownika”. Wybierz „Odblokuj przy uruchomieniu systemu” i „Wymagaj dodatkowej autoryzacji, aby odblokować”: wprowadź opis zdjęcia tutaj

2. Kliknij wolumin dysku (poniżej woluminu LUKS). Kliknij koła zębate i odznacz „Domyślne ustawienia sesji użytkownika”. Wybierz „Zamontuj przy starcie systemu” i „Pokaż w interfejsie użytkownika”: wprowadź opis zdjęcia tutaj

Możesz również wymagać dodatkowego uwierzytelnienia w celu zamontowania woluminu, ale w takim przypadku montaż nie będzie automatyczny dla danego użytkownika.

ElToro1966
źródło