null

NFS для мобильных пользователей

Когда пользователи мигрируют с тонких клиентов и рабочих станций на персональные ноутбуки, они обычно сталкиваются с проблемой доступа к домашним каталогам и общим корпоративным ресурсам. Ведь рабочие станции и тонкие клиенты используют общую, централизованно хранимую и управляемую базу учетных записей пользователей и их групп. Например, NIS или LDAP. Администрировать ноутбуки пользователей, ставя их в зависимость от корпоративной сети и лишать тем самым необходимой мобильности не всегда приемлемо. Если в сетевой инфраструктуре используется Kerberos, подобная задача может быть решена при помощи керберизированногоNFS.

Условия применения подобного подхода:

  1. домашние каталоги пользователей и общие файловые системы доступны по протоколу NFS
  2. для аутентификации пользователей уже применяется протокол Kerberos
  3. на ноутбуках пользователей установлена unix-like операционная система, например, Solaris, Linux или FreeBSD
  4. пользователи имеют учетные записи на серверах, которые экспортируют файловые системы
  5. пользователи имеют учетные записи на своих ноутбуках, почти всегда отличные от своих корпоративных учетных записей (отличаться может как имя учетной записи, так и ее числовой идентификатор)
  6. пользователи обладают правами суперпользователя на своих ноутбуках, но не обладают ими на серверах

Рассмотрим настройку сервера на примере Solaris и настройку клиента на примере FreeBSD.

На сервере экспортируем файловые системы, делая их доступными по протоколу NFS, при условии обязательной аутентификации клиента с использованием протокола Kerberos. Предоставлять доступ к данным без использования аутентификации ни в коем случае нельзя, т.к. любой пользователь, обладающий правами суперпользователя на своем компьютере сможет получить доступ к любому файлу на экспортируемой файловой системе сервера.

Для этого на сервере выполняем команду:

root@solaris# share -F nfs -o sec=krb5,rw /export

Как ни странно, на этом настройку сервера можно считать законченой. На клиенте нам потребуется поддержка Kernel GSSAPI. В случае FreeBSD для этого необходимо добавить в конфигурационный файл ядра соответствующий параметр:

options         KGSSAPI         # Kernel GSSAPI implementaion

Следует заметить, что в виде загружаемого модуля эта подсистема  недоступна. Узнать о наличии такого параметра в уже скомпилированном ядре можно при помощи команд kldstat и/или config:

root@freebsd# kldstat -m kgssapi
Id  Refs Name
197    1 kgssapi
root@freebsd# config -x /boot/kernel/kernel | grep KGSSAPI
options KGSSAPI

Для автоматического монтирования сетевых файловых систем на стороне клиента можно воспользоваться пакетом am-utils, входящим в базовую поставку системы. Настройка автомонтировщика заключается в описании карт монтирования, которое может храниться в текстовых файлах:

root@freebsd# cat /etc/amd.corp
/defaults       type:=program;fs:=${autodir}${path};\
                umount:="/sbin/umount umount ${fs}";\
                mount:="/sbin/mount mount -t nfs -o nfsv3,sec=krb5 ${rhost}:${rfs} ${fs}";
home            rhost:=solaris;rfs:=/export/home/bilbo;
docs            rhost:=solaris;rfs:=/export/docs;

использование такого набора параметров обусловлено непониманием опции монтирования sec=krb5 для файловой системы NFS со стороны атомонтировщика. Для запуска автомонтировщика необходимо добавить в /etc/rc.conf,
/etc/rc.conf.local или /etc/rc.conf.d/amd строки:

amd_enable="YES"
amd_flags="-a /.amd -l syslog /corp /etc/amd.corp"

И запустить этот сервис:

root@freebsd# /etc/rc.d/amd status
amd is running as pid 1710.

Также на стороне клиента необходимо использование gssd — Generic Security Services Daemon. Для этого в /etc/rc.conf,
/etc/rc.conf.local или /etc/rc.conf.d/amd или /etc/rc.conf.d/gssd добавляем строку:

gssd_enable="YES"

Запускаем этот сервис:

root@freebsd# /etc/rc.d/gssd status
gssd is running as pid 1774.

И последнее, в зависимости от наполнения локальной зоны корпоративного DNS домена нам также может понадобиться минимальная настройка Kerberos клиента:

root@freebsd# cat /etc/krb5.conf
[libdefaults]
        default_realm = CORP.RU
[realms]
        CORP.RU = {
                kdc = kdc.corp.ru
        }
[domain_realm]
        .corp.ru = CORP.RU

На этом настройка клиента заканчивается. Зарегистрировавшись под учетной записью обыкновенного локального пользователя (например, frodo), попробуем получить доступ к домашнему каталогу копоративного пользователя, например, bilbo:

frodo@freebsd$ kinit bilbo
bilbo@CORP.RU 's Password:

frodo@freebsd$ klist
Credentials cache: FILE:/tmp/krb5cc_2345
         Principal: bilbo@CORP.RU

   Issued           Expires          Principal
Mar 11 02:00:23  Mar 11 12:04:06  krbtgt/CORP.RU@CORP.RU

Т.е. мы успешно аутентифицировались под именем bilbo@CORP.RU и получили билет с ограниченным сроком действия. Теперь наш локальный пользователь ноутбука frodo может прозрачно получать доступ к ресурсам корпоративной
сети с привилегиями корпоративного пользователя bilbo, не вводя пароля при использовании
ssh, ftp, telnet и прочих керберизированных приложений:

frodo@freebsd$ ssh bilbo@solaris 'uname -a && id'
SunOS solaris 5.10 Generic_137111-03 sun4u sparc SUNW,Sun-Fire-V490
uid=987654(bilbo) gid=10(staff)

Кроме аутентификации, керберизированный NFS дает нам прозрачный доступ к удаленным файловым системам. Т.е. при работе с данными, расположенными на файловых системах сервера, NFS сервер предоставляет доступ текущему
локальному пользователю frodo с привилегиями корпоративного пользователя bilbo:

frodo@freebsd$ id
uid=2345(frodo) gid=2000(users) groups=2000(users),5(operator)
frodo@freebsd$ touch /corp/home/text.txt
frodo@freebsd$ ls -l /corp/home
drwx--x--x   4 987654  10      1536 11 мар 01:57 Desktop
drwx--x--x   3 987654  10       512 11 мар 01:50 Documents
drwx--x--x   2 987654  10      1024 11 мар 00:50 bin
-rwxr-xr-x   1 987654  10        88  6 ноя  2009 test.sh
-rw-r--r--   1 987654  10         0 11 мар 02:27 test.txt

В процессе работы пользователя автомонтировщик самостоятельно монтирует удаленные файловые системы сервера в момент доступа к расположенным на них каталогам и файлам:

frodo@freebsd$ mount -t nfs
solaris:/export/home/bilbo on /.amd/corp/home

Клиент Kerberos автоматически запрашивает доступ к требуемым ресурсам. Посмотреть список активных билетов можно при помощи команды klist:

frodo@freebsd$ klist
Credentials cache: FILE:/tmp/krb5cc_2345
         Principal: bilbo@CORP.RU

   Issued           Expires          Principal
Mar 11 02:00:23  Mar 11 12:04:06  krbtgt/CORP.RU@CORP.RU
Mar 11 02:06:08  Mar 11 12:04:06  host/solaris.corp.ru@CORP.RU
Mar 11 02:20:48  Mar 11 12:04:06  nfs/solaris.corp.ru@CORP.RU

Описанный подход позволяет обеспечить доступ к корпоративным ресурсам для мобильных пользователей без необходимости синхронизации учетных записей между серверами и песональными ноутбуками пользователей.

 

Назад

Не делайте из еды культа!

Очень люблю готовить и вкусно покушать. А чтобы времени на эти увлекательные занятия оставалось как можно больше, я стараюсь автоматизировать любые задачи, которые оказываются в поле моей профессиональной деятельности.
В своем скромном дневнике я буду делиться с Вами рецептами блюд, которые удаются мне особенно хорошо