Когда пользователи мигрируют с тонких клиентов и рабочих станций на персональные ноутбуки, они обычно сталкиваются с проблемой доступа к домашним каталогам и общим корпоративным ресурсам. Ведь рабочие станции и тонкие клиенты используют общую, централизованно хранимую и управляемую базу учетных записей пользователей и их групп. Например, NIS или LDAP. Администрировать ноутбуки пользователей, ставя их в зависимость от корпоративной сети и лишать тем самым необходимой мобильности не всегда приемлемо. Если в сетевой инфраструктуре используется Kerberos, подобная задача может быть решена при помощи керберизированногоNFS.
Условия применения подобного подхода:
- домашние каталоги пользователей и общие файловые системы доступны по протоколу NFS
- для аутентификации пользователей уже применяется протокол Kerberos
- на ноутбуках пользователей установлена unix-like операционная система, например, Solaris, Linux или FreeBSD
- пользователи имеют учетные записи на серверах, которые экспортируют файловые системы
- пользователи имеют учетные записи на своих ноутбуках, почти всегда отличные от своих корпоративных учетных записей (отличаться может как имя учетной записи, так и ее числовой идентификатор)
- пользователи обладают правами суперпользователя на своих ноутбуках, но не обладают ими на серверах
Рассмотрим настройку сервера на примере 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
Описанный подход позволяет обеспечить доступ к корпоративным ресурсам для мобильных пользователей без необходимости синхронизации учетных записей между серверами и песональными ноутбуками пользователей.