- Введение
- Исходные данные
- Настройка сервера
- Подготовка
- Корректировка настроек пакета
- Конфигурация
- Экспорт разделяемого ресурса
- Безопасный экспорт разделяемых ресурсов
- Настройка клиента
- Монтируем ресурс
- Автоматическое монтирование ресурса при загрузке
- Автоматическое монтирование ресурса по запросу
- Решение проблемы зависания графических приложений
- Сетевая файловая система NFS с аутентификацией Kerberos в домене FreeIPA
- Описание стенда
- Настройка сервера
Введение
Защищенной сетевой файловой системой для работы с информацией ограниченного доступа в Astra Linux Special Edition является Samba SMB/CIFS.
При работе в Astra Linux Special Edition с включенной политикой мандатного управления доступом (МРД) и обработкой информации ограниченного доступа применять сетевую файловую систему NFS для хранения данных в общем случае не рекомендуется.
NFS (сокращение от Network File System, Сетевая Файловая Система) — сервис, обеспечивающий общий доступ к файлам и каталогам систем *nix / Linux. Файловая система NFS позволяет монтировать удалённые разделяемые файлы подобно локальным. Существует в двух вариантах:
- вариант nfs-kernel -server , работающий на уровне ядра (входит в состав Astra Linux)
- и вариант работающий на уровне пользовательских программ (в состав Astra Linux не входит)
В Astra Linux Special Edition для того, чтобы включить NFS v2, нужно добавить опцию «-V 2» в две переменные в файле /etc/default/nfs-kernel-server (второй переменной по умолчанию нет, её надо создавать):
Исходные данные
Пакеты nfs-kernel-server (сервер) и nfs-common (клиент) входят в стандартный дистрибутив Astra Linux Special Edition, и доступны в сетевом репозитории Astra Linux Common Edition. Поддержка файловой системы NFS интегрирована в ядро всех ОС Astra Linux.
По умолчанию пакет nfs-kernel-server не устанавливается. Установить сервер nfs и клиент nfs-common можно из графического менеджера пакетов (см. Графический менеджер пакетов synaptic) , или из командной строки.
При установке пакетов для работы с файловой системой NFS будет автоматически установлена служба rpcbind. Использование службы rpcbind несовместимо с работой на ненулевых уровнях конфиденциальности. Для работы с включенным МРД на ненулевых уровнях конфиденциальности следует использовать рекомендованную сетевую файловую систему Samba SMB/CIFS.
Установка сервера из командной строки:
Дополнительно, можно установить пакет «монтирования ресурсов NFS по запросу», позволяющий монтировать ресурсы только при обращениях к ним, см. Autofs монтирование по запросу.
Настройка сервера
Подготовка
Для развёртывания сервера NFS, как и любого другого сервера:
- рекомендуется назначить серверу постоянный IP-адрес;
- настроить разрешение имён клиентских компьютеров, или назначить им статические IP-адреса;
- выделить ресурс (каталог), который в дальнейшем станет разделяемым. Пример: создание каталога /srv/nfsshare и задание для него полного доступа на чтение и запись:
Корректировка настроек пакета
При работе в операционных системах Astra Linux, выпущенных ранее очередного обновления x.7, для нормального автоматического запуска службы nfs-kernel-server после перезагрузки компьютера внести изменения в его UNIT-файл /etc/systemd/system/multi-user.target.wants/nfs-server.service добавив следующие строки в секцию unit:
Указанные исправления обеспечат запуск службы nfs-server после службы rpcbind. После внесения изменений перезапустить службу:
При работе в Astra Linux Special Edition очередное обновление x.7 указанные действия не требуются.
Конфигурация
Основная конфигурация сервиса nfs хранится в файле /etc/exports . Кроме этого файла сервис использует файлы:
- /etc/fstab — записи обо всех файловых системах, включая nfs, автоматически монтируемых при загрузке системы.
- /etc/hosts.allow , /etc/hosts.deny — используется, чтобы решить, принять или отклонить подключения, приходящие с внешних IP-адресов
Экспорт разделяемого ресурса
Для экспорта созданного ранее разделяемого ресурса (каталога) /srv/nfsshare добавить в конфигурационный файл /etc/exports строку
- — постоянный IP-адрес компьютера-клиента (может быть использовано имя компьютера), или, для указания группы компьютеров, можно использовать адрес сети или подстановочный знак «*» (подробнее см. справку man exports);
Строк с записями о разделяемых ресурсах может быть добавлено несколько. После внесения изменений для того, чтобы они вступили в силу, нужно выполнить команду
Безопасный экспорт разделяемых ресурсов
- Протокол передачи данных NFS поддерживает защитное преобразование данных начиная с версии 4 (NFSv4).
А следующая строка файла/etc/exports, напротив, определяет для того же каталога компьютеру master.astralinux.ru разрешение только на чтение, а всем остальным разрешает не только чтение, но и запись
Отличие конфигураций состоит всего в одном пробеле после имени компьютера :
Чтобы избежать подобных ошибок,
проверяйте все настроенные общие ресурсы NFS с помощью команды showmount:
- Не рекомендуется использование параметра no_root_squash, так как потенциально создает угрозы безопасности, связанные с возможностью удаленного внедрения в файловую систему вредоносного ПО. По умолчанию, в общих ресурсах NFS пользователь root становится обычным пользователем nfsnobody. Таким образом, владельцем всех файлов, созданных root, становится пользователь nfsnobody, что предотвращает загрузку на сервер программ с установленным битом setuid.
Настройка клиента
После установки клиентского пакета nfs-common, на компьютере — клиенте следует примонтировать разделяемые ресурсы. Список доступных ресурсов можно проверить, выполнив команду:
sudo showmount -e 192.168.1.10
Export list for 192.168.1.10:
/srv/nfsshare 192.168.1.20
Монтируем ресурс
Чтобы примонтировать разделяемый ресурс на клиентской машине:
- Создать на клиентской машине точку монтирования, например, каталог /mnt/share:
Команда выдаст строку (строки) с информацией о примонтированном ресурсе (ресурсах). Кроме того, можно использовать команду проверки свободного места на всех примонтированных ресурсах:
Автоматическое монтирование ресурса при загрузке
Чтобы ресурс NFS монтировался автоматически при перезагрузки ОС, его нужно зарегистрировать в файле /etc/fstab добавив строчку вида
Автоматическое монтирование ресурса по запросу
Автоматическое монтирование ресурсов NFS можно выполнить с помощью пакета autofs.
Решение проблемы зависания графических приложений
При работе в сессии с ненулевой классификационной меткой с одновременным использованием файловых систем NFS и Samba возможна нештатная работа графических приложений. Нарушение работы приложения может проявляться, например, «в зависаниях» текстового редактора kate, и вызвано несовместимостью службы rpcbind с работой КСЗ Astra Linux Special Edition. Д ля устранения нарушений работы следует остановить и запретить службу rpcbind:
Для находящихся в эксплуатации систем Astra Linux следует использовать рекомендованную для работы с информацией ограниченного доступа сетевую файловую систему Samba SMB/CIFS.
Сетевая файловая система 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.