Szyfrowanie katalogu domowego

Z funus.net

Za pomocą EncFS i modułu pam_encfs można w stosunkowo prosty sposób utworzyć szyfrowane katalogi domowe użytkowników.

Spis treści

[edytuj] Ingrediencje

Co będzie potrzebne:

  • oczywiście EncFS;
  • moduł PAM o nazwie pam_encfs;
  • uprawnienia roota.

[edytuj] Instrukcja

Instalacja:

  1. Instalujemy EncFS i pam_encfs.
  2. Należy aktywować pam_encfs według załączonej dokumentacji; w Debianie, jeśli konfiguracja PAM nie była modyfikowana, wystarczy w pliku etc/pam.d/common-auth umieścić wiersze:
    auth sufficient pam_encfs.so
    auth required pam_unix.so nullok_secure use_first_pass
  3. Jeśli chcemy, by przy wylogowaniu EncFS próbował odmontować zaszyfrowane konto użytkownika, należy w tym pliku dopisasć jeszcze wiersz:
    session required pam_encfs.so
  4. Jeśli konto użytkownika, jeszcze nie istnieje, należy je utworzyć (jako root); przyjmijmy, że użytkownik będzie miał login zofia:
    adduser zofia
  5. Utworzyć katalog, w którym będą przechowywane zaszyfrowane pliki użytkownika:
    mkdir -p /home/.enc/zofia
    chown zofia:zofia /home/.enc/zofia
    chmod og-rwx /home/.enc/zofia
  6. Utworzyć i zamontować szyfrowany system plików dla użytkownika:
    mkdir /mnt/tmp
    encfs /home/.enc/zofia /mnt/tmp
    (encfs poprosi o hasło)
  7. Upewnić się, że użytkownik nie jest zalogowany i nie działają żadne jego procesy:
    slay -clean zofia
  8. Skopiować zawartość katalogu domowego użytkownika do szyfrowanego filesystemu:
    cd /home/zofia
    tar --one-file-system -cf- . | ( cd /mnt/tmp/ && tar -xf- )
  9. Zachować tymczasowo (na wszelki wypadek) oryginalny katalog domowy użytkownika:
    cd /home/
    mv zofia zofia.bak
  10. Utworzyć w jego miejsce nowy, pusty katalog:
    mkdir zofia
    chown zofia:zofia zofia
    chmod og-rwx zofia
  11. Odmontować zaszyfrowany katalog:
    fusermount -u /mnt/tmp
    rmdir /mnt/tmp
  12. Zmienić uprawnienia zaszyfrowanych plików:
    chown -R zofia:zofia /home/.enc/zofia
  13. W Debianie konieczne jest też dodanie użytkownika do grupy fuse, gdyż tylko członkowie tej grupy mogą korzystać z FUSE, a co za tym idzie – z EncFS:
    adduser zofia fuse
  14. Zmienić uniksowe hasło użytkownika zofia na takie, jakie podaliśmy przy tworzeniu zaszyfrowanego systemu plików (oba hasła muszą być identyczne, inaczej to nie zadziała)
    passwd zofia
    (tu podać hasło)
  15. Jako użytkownik zofia spróbować się zalogować.

[edytuj] Pliki konfiguracyjne

Może okazać się konieczne podkonfigurowanie pewnych opcji. W grę wchodzą następujące pliki konfiguracyjne:

  • wspomniany już wcześniej plik konfiguracyjny /etc/pam.d/common-auth, zawierający wspólne wymagania dotyczące autentykacji użytkowników (dotyczy Debiana, w innych dystrybucjach może to być rozwiązane odmiennie);
  • plik konfiguracyjny modułu pam_encfs: /etc/security/pam_encfs.conf;
  • plik konfiguracyjny FUSE (standardowo nie istnieje): /etc/fuse.conf.

Plik /etc/security/pam_encfs.conf może wyglądać następująco:

#Note that I dont support spaces in params
#So if your for example gonna specify idle time use --idle=X not -i X.

#If this is specified program will attempt to drop permissions before running encfs. (will not work with --public for example)
drop_permissions

#This specifies default encfs options
encfs_default --idle=1

#Same for fuse, note that allow_root (or allow_other, or --public in encfs) is needed to run gdm/X.
fuse_default allow_root,nonempty

#- means match all, put any overrides over it.
#if - is in username it will take source path + "/$USER", and mount to $HOME

#USERNAME       SOURCE          TARGET PATH     ENCFS Options          FUSE Options
#user           /home/.enc/user /home/user      -v,--idle=1,-test,-test2                allow_root
-               /home/.enc      -               -v                      allow_root

Należy zwrócić uwagę na opcje allow_root. Pozwalają one rootowi na dostęp do odszyfrowanej zawartości zamontowanego katalogu domowego użytkownika. Ogólne rzecz biorąc jest to niepożądane, ale konieczne, by możliwe było zalogowanie się użytkownika z poziomu display managera, jak xdm, kdm, czy gdm. Jeśli taka możliwość nie jest konieczna, opcję allow_root należy usunąć, przy czym w "tablicy montowania" na końcu pliku kolumna "FUSE Options" nie może być pusta, więc allow_root można zastąpić minusem (-):

#USERNAME       SOURCE          TARGET PATH     ENCFS Options          FUSE Options
#user           /home/.enc/user /home/user      -v,--idle=1,-test,-test2                allow_root
-               /home/.enc      -               -v                      -


Jeśli przeciwnie – chcemy udostępnić wszystkim użytkownikom pliki, należy zastąpić allow_root przez allow_other.

Zarówno allow_root jak i allow_other wymagają, by w pliku konfiguracyjnym /etc/fuse.conf znajdował się wiersz:

user_allow_other

Wiersz:

encfs_default --idle=1

w pliku /etc/security/pam_encfs specyfikuje, że zaszyfrowany system plików zostanie odmontowany automatycznie, gdy nie będzie używany przez 1 minutę. Jest to przydatne, gdy nie uda się odmontować katalogu domowego przy wylogowywaniu użytkownika (bo np. zostawił jakiś proces działający w tle).

[edytuj] Zobacz też