Статьи‎ > ‎

Монтирование файловой системы при логине

Постановка задачи

Монтирование криптованого раздела при входе пользователя в систему. Эта задача актуальна для защиты информации как на мобильных компьютерах, так и для стационарных компьютерах, находящихся в общедоступных помещениях. Идея навеяна пестрящими новостями о том, что на украденом ноутбуке какого-то важного служащего было куча конфиденциальной информации и пр. В данной схеме даже в случае попадания компьютера в чужие руки доступ к информации получен не будет. Описанное решение реализовано на базе Gentoo Linux.

Установка необходимых пакетов

Отдельные пакеты находятся в нестабильном дереве, потому предварительно необходимо добавить их в список разрешенных

# echo "sys-auth/pam_mount">>/etc/portage/package.keywords

Теперь можно установить

# emerge sys-auth/pam_mount sys-fs/cryptsetup

Создание раздела

Важно: пароль на криптованый раздел и пароль пользователя в системе должны совпадать!

Шифрование раздела:

 # cryptsetup luksFormat /dev/sda3

WARNING!
========
This will overwrite data on /dev/sda3 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.

Открываем раздел:

$ cryptsetup luksOpen /dev/sda3 homeD
Enter LUKS passphrase:
key slot 0 unlocked.
Command successful.

Форматирование:

# mkfs.ext3 /dev/mapper/homeD
mke3fs 1.39-WIP (09-Apr-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
2432 inodes, 9724 blocks
486 blocks (5.00%) reserved for the super user
First data block=1
2 block groups
8192 blocks per group, 8192 fragments per group
1216 inodes per group
Superblock backups stored on blocks:
8193

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override

Закрываем раздел:

# cryptsetup luksClose homeD

Настройка

Правим конфигурационный файл /etc/security/pam_mount.conf.xml под комментарием Volume definitions

   <volume fstype="crypt" user="anviar" path="/dev/sda3" mountpoint="/home" cipher="aes-cbc-essiv:sha256" /> 

Разберем что значит эта запись:

fstype - тип раздела

user - применять правило только для указаного пользователя

path - наше устройство

mountpoint - точка монтирования

cipher - алгоритм шифрования 

Для примера конфигурация для EncFS выглядит следующим образом:

<volume user="anviar" fstype="fuse" path="encfs#/home/anviar/.crypt" mountpoint="/home/anviar/crypt" options="nonempty" />
Для EncFS обязательно следует указывать полные, а не относительные пути.

Gentoo

Подключаем модуль к системе авторизации в файле /etc/pam.d/system-auth

auth required pam_env.so
auth required pam_unix.so try_first_pass likeauth nullok
auth optional pam_mount.so

account required pam_unix.so

password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
password required pam_unix.so try_first_pass use_authtok nullok sha512 shadow

session required pam_limits.so
session required pam_env.so
session required pam_unix.so
session optional pam_permit.so
session optional pam_mount.so

GNU/Debian

Подключаем модуль к системе авторизации добавлением строки @include common-pammount в конец файла авторизации. К примеру, если используется GDM, то требуется отредактировать файл /etc/pam.d/gdm

#%PAM-1.0
auth requisite pam_nologin.so
auth required pam_env.so readenv=1
auth required pam_env.so readenv=1 envfile=/etc/default/locale
@include common-auth
auth optional pam_gnome_keyring.so
@include common-account
session required pam_limits.so
@include common-session
session optional pam_gnome_keyring.so auto_start
@include common-password
@include common-pammount


Таким образом при входе в систему пользователя anviar, и только него, будет происходить доступ к шифрованому разделу /dev/sda3, его монтирование в точку /home. При выходе из системы пользователя anviar будет происходить отмонтирование и закрытие раздела.