Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Предупреждение | ||||||||
---|---|---|---|---|---|---|---|---|
При работе с конфиденциальными данными в операционных системах:
Подключение, корректно работающее с конфиденциальной информацией, работает только с версией протокола vers=1. В этих ОС для корректной работы механизма создания мандатных домашних каталогов необходимо:
В указанных ОС для настройки механизма создания мандатных домашних каталогов в обязательном порядке:
|
Предупреждение |
---|
Выполняя действия, описанные в этой статье, следует помнить, что предоставление доступа к серверу через сетевые подключения неизбежно снижает защищённость этого сервера. |
Предупреждение | ||
---|---|---|
Стандарт передачи данных по сети не поддерживает передачу меток целостности, поэтому работа с примонтированными каталогами возможна только на нулевом уровне целостности. Домашние каталоги при этом должны иметь нулевой уровень целостности.
Во избежание аварийных ситуаций следует запретить использовать ненулевые уровни целостности тем пользователям, которым позволено удалённо монтировать свои домашние каталоги. |
Описание стенда
- Сервер, на котором совмещены FreeIPA и Samba. Порядок установки и настройки см. Samba + FreeIPA аутентификация пользователей Samba в Kerberos.
В промышленной эксплуатации службу samba рекомендуется размещать на отдельном сервере. Порядок настройки отдельной службы на отдельном сервере см. также в статье Samba + FreeIPA аутентификация пользователей Samba в Kerberos. Параметры сервера FreeIPA + Samba, используемые далее:- имя сервера ipa0.ipadomain/ru;
- администратор домена admin;
- пользователь домена с возможностью входа с ненулевой меткой конфиденциальности - ipauser;
- Компьютер - клиент FreeIPA. Инструкцию по вводу компьютера в домен см. в статье FreeIPA;
Предупреждение |
---|
После ввода компьютера в домен компьютер следует перезагрузить. |
Настройка сервера
Информация |
---|
Далее в примерах предполагается, что конфигурация samba находится в реестре samba. |
Создать конфигурации разделяемых ресурсов импортировать их в конфигурацию samba. Создаваемые ресурсы:
- Ресурс для монтирования домашних каталогов при работе с нулевой меткой конфиденциальности - ресурс homes (стандарный стандартный ресурс samba);
- Только для Astra Linux Special Edition. Ресурс для монтирования домашний каталогов при работе с ненулевой меткой конфиденциальности. Имя ресурса может быть произвольным, в примере используется имя pdp_homes. Данный ресурс требуется только для Astra Linux Special Edition.
Конфигурации ресурсов сохраняются в файлах homes.txt и pdp_homes.txt, далее импортируются в конфигурацию samba. Команды:
Сохранение конфигурации в файлах homes.txt и pdp_homes.txt:
Command cat << EOT > homes.txt
[homes]
comment = Home Directories
read only = No
valid users = %S
EOTcat << EOT > pdp_homes.txt
[pdp_homes]
browseable = No
comment = pdp homes share
create mask = 0600
directory mask = 0700
path = /home/.pdp/%U
read only = No
valid users = %U
EOTИмпорт в конфигурацию samba:
Command sudo net conf import homes.txt homes
sudo net conf import pdp_homes.txt pdp_homes
Эти же действия можно выполнить командами без использования файлов для сохранения данных, например, для создания разделяемого ресурса 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" и т.д. |
Дополнительно при совместном использовании параметров sec=krb5i и vers=1.0 установить в секции [global] параметр server signing=required:
Command |
---|
sudo net conf setparm global "server signing" required |
Настройки пользовательских каталогов для Astra Linux Special Edition
- Ресурс pdp_homes будет предоставлять для монтирования каталог /home/.pdp/<имя_пользователя"> (параметр path = /home/.pdp/%U в конфигурации ресурса);
- Ресурс homes будет предоставлять для монтирования каталог /home/<имя_пользователя"> (параметр path = /home/%U в конфигурации ресурса);
Каталоги, предоставляемые как ресурсы, должны быть раположены расположены на сервере, и, если их нет, то с помощью подключения через samba (т.е. действиями со стороны клиентской машины) создать их невозможно, поэтому на момент подключения пользователя эти каталоги должны быть уже созданы. При этом каталоги должны:
- Принадлежать пользователю;
- Иметь низкий уровень целостности, иначе запись в него из сетевого подключения будет невозможна;
- Иметь метку конфиденциальности не ниже максимально допустимой для пользователя;
- Иметь флаг CCNRA, позволяющий создавать в каталоге подкаталоги с меньшими метками конфиденциальности.
Для пользователя ipauser:
Command |
---|
sudo mkdir /home/.pdp/ipauser /home/ipauser |
В приведенном выше примере предполагается, что максимальный иерархический уровень конфиденциальности для пользователя равен трем, и пользователю разрешены все неиерархические категории конфиденциальности (сокращенное обозначение -1).
Настройка клиента
Клиент должен быть введён в домен FreeIPA. Инструкцию по вводу компьютера в домен см. с статье FreeIPA.
Далее, в зависимости от задач, можно выбрать один из вариантов настройки автоматического монтирования домашних каталогов:
- Монтирование с помощью pam_mount (более применимо в Astra Linux Common Edition, так как предоставляет простой стандартный способ монтирования);
- Монтирование с помощью собственного сценария (более применимо в Astra Linux Special Edition, так как позволяет гибко настраивать монтирование каталогов с ненулевыми метками конфиденциальности).
Эти варианты при необходимости могут применяться совместно, дополняя друг друга.
Использование модуля pam_mount
Установка пакетов
Набор пакетов, необходимых для монтирования домашних каталогов можно установить на клиентской машине командой:
Command |
---|
sudo apt install cifs-utils libpam-mount |
Настройка модуля pam_mount
В конфигурации модуля pam_mount (файл /etc/security/pam_mount.conf.xml) задать параметры подключаемых сетевых ресурсов (могут быть одновременно заданы несколько подключаемых ресурсов.). Примеры конфигурации (только части конфигурационного файла, непосредственно относящиеся к ресурсам):
Блок кода | ||
---|---|---|
| ||
<volume fstype="cifs" server="ipa0.ipadomain.ru" path="%(USER)" mountpoint="/home/%(USER)" options="user=%(USER),cruid=%(USER),nosharesock,sec=krb5i" /> |
Блок кода | ||
---|---|---|
| ||
<volume fstype="cifs" server="ipa0.ipadomain.ru" path="pdp_homes" mountpoint="/home/.pdp/%(USER)" options="user=%(USER),cruid=%(USER),uid=%(USERUID),gid=%(USERGID),nosharesock,sec=krb5i" /> |
Дополнительно разрешить использование применяемых параметров, например:
Блок кода |
---|
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other,uid,gid,nosharesock,vers" /> |
Если не срабатывает автоматическое размонтирование каталогов при выходе из сессии, то использовать задержку размонтирования (wait, миллисекунды) или параметры hup="yes", term="yes" или kill="yes" для передачи сигналов завершения "зависшим" процессам:
Блок кода |
---|
<logout wait="0" hup="no" term="no" kill="yes" /> |
Настройка pam-стека в Astra Linux Common Edition
В Astra Linux Common Edition можно использовать стандартную настройку. Опционально перед вызовом session pam_mount в файле /etc/pam.d/common-session можно добавить запрет вызова pam_mount для локальных пользователей:
Command |
---|
session [success=1 default=ignore] pam_localuser.so session optional pam_mount.so |
Настройка pam-стека в Astra Linux Special Edition
Удалить (закомментировать) вызов модуля pam_mount в файле /etc/pam.d/common-session:
Command |
---|
sudo sed -i "s/\(session[[:space:]]\+optional[[:space:]]\+pam_mount.so\)/#\1/" /etc/pam.d/common-session |
В файлах /etc/pam.d/login и /etc/pam.d/fly-dm после первого вызова модуля session required pam_parsec_mac uдобавить две строки: проверку, является ли пользователь локальным (pam_localuser.so), и вызов модуля монтирования (pam_mount.so):
Блок кода |
---|
... session required pam_parsec_mac.so ... session [success=1 default=ignore] pam_localuser.so session optional pam_mount.so ... |
Использование собственных сценариев монтирования
Установка пакетов
При использовании этого варианта достаточно установить пакет cifs-utils:
Command |
---|
sudo apt install cifs-utils |
Настройка
Вызывать собственные сценарии монтирования можно с помощью модуля pam_exec.
Предупреждение | ||
---|---|---|
Чтобы пример ниже работал корректно с конфиденциальной информацией на сервере ресурс homes должен ипользовать путь /home/.pdp/%U:
|
Например:
Для Astra Linux Special Edition сценарий, монтирующий домашний пользовательский каталог, имеющий ненулевую мандатную метку, соответствующую мандатной метке пользовательской сессии непосредственно в локальный домашний каталог пользователя:
Блок кода | ||
---|---|---|
| ||
#!/bin/bash pdp_home=/home/.pdp/$PAM_USER label="l`pdp-id -l`i`pdp-id -i`c`pdp-id -c`t0x0" echo "Begin mounting PDP_HOME for user \"$PAM_USER\" with label \"$label\"" mount //ipa0.ipadomain0.ru/$PAM_USER $pdp_home -o user=$PAM_USER,sec=krb5i,rw,setuids,perm,soft,iocharset=utf8,nosharesock,cruid=$PAM_USER mount --bind $pdp_home/$label /home/$PAM_USER |
Так же, как вызов pam_mount в примерах выше, сценарий должен вызываться после вызова pam-модуля session pam_parsec_mac. Если сценарий размещён в исполняемом файле /etc/pam.d/pdp_home.sh, его вызов в pam-стеке может выглядеть так:
Блок кода | ||
---|---|---|
| ||
session required pam_parsec_mac.so session [success=1 default=ignore] pam_localuser.so session optional pam_exec.so debug log=/dev/tty /etc/pam.d/pdp_home.sh |
Типичные ошибки монтирования и расширенная диагностика
Неизвестная ошибка 524
Возникает при одновременном использовании параметров монтирования sec=krb5i и vers=1.0 если на сервере samba не включен параметр server signing = required.
Для устранения ошибки - добавить параметр в конфигурацию и перезапустить сервер.
Ошибка mount error(126): Required key not available
Не найден билет Kerberos. Для диагностики проверить сообщения cifs.upcall в системном журнале:
Command |
---|
grep cifs.upcall /var/log/syslog |
Для устранения ошибки указать верный идентификатор пользователя в параметре cruid=UID (числовой ID пользователя или просто имя пользователя).
Включение расширенной диагностики на сервере
Уровень диагностики на сервере задаётся конфигурационным параметром log level, например:
Блок кода |
---|
log level = 3 |
Диагностические сообщения выводятся в файлы в каталоге /var/log/samba/ (см. параметр конфигурации log file).
Включение расширенной диагностики на клиенте
Расширенная диагностика операций монтирования на клиенте может быть включена командами:
Command |
---|
sudo -s modprobe cifs echo 'module cifs +p' > /sys/kernel/debug/dynamic_debug/control echo 'file fs/cifs/* +p' > /sys/kernel/debug/dynamic_debug/control echo 7 > /proc/fs/cifs/cifsFYI exit |
Диагностические сообщения выводятся в журнал ядра, посмотреть их можно командой:
Command |
---|
sudo dmesg |
Выключение расширенной диагностики выполняется командами:
Command |
---|
sudo -s |