Описание стенда
- Сервер FreeIPA + Samba. Порядок установки и настройки см. Samba + FreeIPA аутентификация пользователей Samba в Kerberos.
В промышленной эксплуатации службу samba рекомендуется размещать на отдельном сервере. Порядок настройки отдельной службы на отдельном сервере см. также в статье Samba + FreeIPA аутентификация пользователей Samba в Kerberos. - Параметры сервера FreeIPA + Samba, используемые далее:
- имя сервера ipa0.ipadomain/ru;
- администратор домена admin;
- пользователь домена с возможностью входа с ненулевой меткой конфиденциальности - ipauser;
- Компьютер - клиент FreeIPA. Инструкцию по вводу компьютера в домен см. с статье FreeIPA.
Настройка сервера
Предупреждение | ||||
---|---|---|---|---|
При работе с конфиденциальными данными в обязательном порядке следует настроить ограничения на файловом сервере: установить в конфигурации samba в секции [global] параметры:
В используемой в данной статье конфигурации (когда конфигурация samba хранится в реестре samba) это можно сделать из командной строки (сервис при этом перезапускать не обязательно, изменения применятся автоматически). Команды:
Если конфигурация хранится в файле, то внести изменения в файл, после чего перезапустить сервис. |
Информация |
---|
Далее в примерах предполагается, что конфигурация samba находится в реестре samba. Если конфигурация находится в файле необходимо внести указанные изменения в файл конфигурациии перезапустить службу samba. |
Создать конфигурации разделяемых ресурсов импортировать их в конфигурацию samba. Создаваемые ресурсы:
- Ресурс для монтирования домашних каталогов при работе с нулевой меткой конфиденциальности - ресурс homes (стандарный ресурс samba);
- Ресурс для монтирования домашний каталогов при работе с ненулевой меткой конфиденциальности. Имя ресурса может быть произвольным, в примере используется имя pdp_homes.
Конфигурации сохраняются в файлах, далее импортируются в конфигурацию samba. Команды:
Блок кода |
---|
cat << EOT > homes.txt
[homes]
comment = Home Directories
create mask = 0600
directory mask = 0700
read only = No
valid users = %S
browseable = No
EOT
cat << EOT > pdp_homes.txt
[pdp_homes]
comment = pdp homes share
create mask = 0600
directory mask = 0700
path = /home/.pdp/%U
read only = No
browseable = No
valid users = %U
EOT
sudo net conf import homes.txt homes
sudo net conf import pdp_homes.txt pdp_homes
|
Эти же действия можно выполнить командами не используя файлы для сохранения данных, например:
Command |
---|
sudo net conf addshare "homes" "/home/%U" "writeable=y" "guest_ok=N" "Home Directories" sudo net conf setparm "homes" "browseable" "No" sudo net conf setparm "homes" "valid users" "%U" и т.д. |
Ресурс pdp_homes будет предоставлять для монтирования путь /home/.pdp/<имя_пользователя">. При этом с помощью подключения через samba создать такой ресурс невозможно, то есть
Информация |
---|
на момент подключения пользователя его подкаталог должен быть уже создан. |
При этом:
- каталог должен приндлежать пользователю;
- это должен быть каталог с низким уровнем целостности, иначе запись в него из сетевого подключения будет невозможна.
- каталог должен иметь метку конфиденциальности не ниже максимально допустимой для пользователя;
Для пользователя ipauser:
Command |
---|
sudo mkdir /home/.pdp/ipauser |
Далее возможны два варианта:
- Заранее создать в каталоге пользователя все возможные для него варианты каталогов для всех допустимых сочетаний атрибутов конфиденциальности (безопасно);
- Использовать параметр ядра parsec.ccnr_relax, что позволит пользователю самостоятельно создавать каталоги с нужными метками конфиденциальности (не превышающими метку конфиденциальности каталога пользователя) при сетевом подключении. Это более удобно, но несколько снижает защищённость системы.
Настройка клиента
Монтирование выполняется модулем pam_mount.
:
- Запускаемым от root-а с нулевым уровнем конфиденциальности.
- Для авторизации модуль предявляет билет керберос входящего пользователя.
- Т.е. примонтированный модуль действует от имени пользователя с нулевой меткой конфиденциальности, в результате примонтированный каталог пользователя имеет нулевую метку безопасности, и в нём видно только объекты с нулевой меткой.
- Далее Парсек пытается найти каталог с именем соответсвующим ненулевому уровню, не находит, пытается создать, не может
Предложение:
пропатчить pam_mount, чтобы он работал на уровне конфиденциальности пользователя.
Информация |
---|
[global]
|