Сетевая файловая система NFS с аутентификацией Kerberos в домене FreeIPA
«В случае необходимости использования мандатного управления доступом на сетевых дисках, их монтирование в файловую систему ОС должно осуществляться только с использованием файловой системы CIFS, поддерживающей расширенные (в т.ч. мандатные) атрибуты пользователей;»
«Руководство по КСЗ. Часть 1 РУСБ.10015-01 97 01-1» п. 17.3. «Условия применения»
При настройках по умолчанию аутентификация через Kerberos в файловой системе NFS осуществляется:
Таким образом, монтирование сетевого ресурса NFS может быть выполнено любым пользователем или процессом. С одной стороны, это позволяет автоматически монтировать общие разделяемые ресурсы до входа первого пользователя, но, с другой стороны, может стать причиной утечки или повреждения данных при некорректно настроенных правах доступа.
В статье рассматривается использование NFSv4. Более старые версии использовать не рекомендуется, так как они подвержены известным уязвимостям и некорректно работают при использовании аутентификации Kerberos.
При некорректно настроенных параметрах подключения NFS может выполнять монтирование с произвольным понижением уровня протокола (NFSv3 вместо NFSv4) и/или изменением типа аутентификации (аутентификация SYS вместо Kerberos), что также является источником потенциальных уязвимостей.
Описание стенда
- контроллер домена FreeIPA:
- имя сервера ipa0.ipadomain0.ru;
- имя администратора admin;
- IP-адрес контроллера домена не используется, так как подразумевается наличие настроенной службы DNS;
- имя клиента host0.ipadomain0.ru;
Настройка сервера
sudo sed -i ‘s/^[[:space:]]*NEED_SVCGSSD[[:space:]]*=.*/NEED_SVCGSSD=»yes»/’ /etc/default/nfs-kernel-server sudo sed -i ‘s/^[[:space:]]*NEED_GSSD[[:space:]]*=.*/NEED_GSSD=yes/’ /etc/default/nfs-common
sudo sed -i ‘s/^[[:space:]]*NEED_IDMAPD[[:space:]]*=.*/NEED_IDMAPD=yes/’ /etc/default/nfs-commonЕсли билет Kerberos был получен до регистрации службы, то после регистрации службы он должен быть обновлен (получен повторно).
ldapmodify -x -D «cn=directory manager» -W -h ipa0.ipadomain0.ru << EOT
dn: cn=IPADOMAIN0.RU,cn=kerberos,dc=ipadomain0,dc=ru
changetype: modify
add: krbSupportedEncSaltTypes
krbSupportedEncSaltTypes: des-cbc-crc:normal
EOT
ldapmodify -x -D «cn=directory manager» -W -h ipa0.ipadomain0.ru << EOT
dn: cn=IPADOMAIN0.RU,cn=kerberos,dc=ipadomain0,dc=ru
add: krbSupportedEncSaltTypes
krbSupportedEncSaltTypes: des-cbc-crc:special
EOT
ldapmodify -x -D «cn=directory manager» -W -h ipa0.ipadomain0.ru << EOT
dn: cn=IPADOMAIN0.RU,cn=kerberos,dc=ipadomain0,dc=ru
add: krbDefaultEncSaltTypes
krbDefaultEncSaltTypes: des-cbc-crc:special
EOT<>Разделяемые ресурсы определяются в конфигурационном файле /etc/exports. Подробно про возможные параметры разделяемых ресурсов см. man exports.
В NFSv4 все сетевые ресурсы предоставлены единым деревом каталогов. Соответственно, в списке разделяемых ресурсов один из них должен быть обозначен как корневой. Для этого используется параметр fsid=0. Отсутствие или некорректное определение корневого ресурса ведёт к неработоспособности примонтированных ресурсов, и, в случае монтирования домашних каталогов, к невозможности входа пользователей.
Пример файла с ресурсами (экспортируется домашний ката/etлог пользователей /home и созданный каталог /export):
/ *(rw,fsid=0,no_subtree_check,sec=krb5:krb5i:krb5p) /home gss/krb5i(rw,sync,no_subtree_check) /export *(rw,sync,no_subtree_check,no_root_squash,sec=krb5:krb5i:krb5p)
В приведенном примере первый ресурс — корневой, и использованы два альтернативных синтаксиса для «подчинённых» ресурсов NFSv4 с аутентификацией Kerberos.
В целях обеспечения безопасности в разделяемых ресурсах используется технология подмены идентификатора суперпользователя (root_squash). При этом операции, инициированные суперпользователем, выполняются от имени nobody:nogroup или от имени Kerberos-пользователя (См. ниже Настройка клиентской аутентификации Kerberos). Об этом ограничении следует помнить планируя настройку прав доступа в разделяемых ресурсах.Для того, чтобы в «подчиненные» ресурсы была разрешена запись, запись должна быть разрешена в корневой ресурс.
Для того, чтобы при доступе к «подчиненным» ресурсам корректно работала аутентификация Kerberos, корневой ресурс должен использовать такой же тип аутентификации.
Параметр no_root_squash неработоспособен, то есть подмена идентификатора суперпользователя выполняется всегда. См. ниже Настройка клиентской аутентификации Kerberos.Настройка NFS в Gentoo
Краткая инструкция по настройке NFS (Network File System) на сервере и клиенте в ОС Gentoo GNU/Linux.
Исходные данные
Необходимо открыть доступ клиенту на сервере в директории /home/share/
Установка NFS на сервере и клиенте
Сначала необходимо включить поддержку NFS в ядро. Для этого переходим в каталог /usr/src/linux/
на всякий случай скопируем файл конфигурации ядра .config
переходим в пункт File Systems
затем в Network File Systems
* NFS client support for NFSv4.1 (NEW) -- NFS client support for NFSv4.2 (NEW) * NFS server support (NEW) -- NFS server support for NFS version 3 (NEW) -- NFS server support for NFS version 4 (NEW)
Собираем и устанавливаем ядро и на всякий случай модули
# make && make modules && make modules_install && make install
Надо будет подождать окончания сборки и установки
После этого переписываем конфиг загрузчика grub
# grub-mkconfig -o /boot/grub/grub.cfg
и устанавливаем пакет nfs-utils
Настройка NFS на сервере
Создадим каталог /home/share/
Открываем файл /etc/exports
и пропишем такую строчку для монтирования каталога /home/share/:
/home/share 192.168.1.0/24(rw,no_root_squash)
для всех клиентов данной подсети
/home/share 192.168.1.55(rw,no_root_squash)
для клиента с IP-адресом 192.168.1.55
Запустим службу nfs и включим её в автозагрузку
# rc-service nfs start # rc-update add nfs default
При необходимости можно перезагрузить машину
Настройка NFS на клиенте
Создадим каталог /mnt/share/ для монтирования
Проверим монтирование ресурса NFS
# mount -t nfs 192.168.1.45:/home/share /mnt/share
Если необходимо монтирование во время загрузки системы, то открываем файл /etc/fstab
192.168.1.45:/home/share /mnt/share nfs rw 0 1
Для проверки ручное отключим монтирование
и монтируем всё, что прописано в файле /etc/fstab
На всякий случай перезагрузим машину
и проверим, примонтируется ли ресурс NFS.
Похожие посты: