Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
См. также Автоматическое монтирование разделяемых ресурсов CIFS (samba и DFS)
Предупреждение | ||||||
---|---|---|---|---|---|---|
При работе в операционных Astra Linux Special Edition с конфиденциальными данными, предоставляемыми с помощью Samba, в обязательном порядке:
|
Статья не для публикации.
Примечание | ||||||||
---|---|---|---|---|---|---|---|---|
Предупреждение | При работе с конфиденциальными данными в операционных системах:
в обязательном порядке :
|
Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
|
Предупреждение |
---|
Выполняя действия, описанные в этой статье, следует помнить, что предоставление доступа к серверу через сетевые подключения неизбежно снижает защищённость этого сервера. |
Предупреждение |
---|
Стандарт |
Предупреждение |
---|
Выполняя действия, описанные в этой статье, следует помнить, что предоставление доступа к серверу через сетевые подключения неизбежно снижает защищённость этого сервера. |
Предупреждение | ||
---|---|---|
Стандарт передачи данных по сети не поддерживает передачу меток целостности, поэтому работа с примонтированными каталогами возможна только на нулевом уровне целостности. Домашние каталоги при этом должны иметь нулевой уровень целостности.
Во избежание аварийных ситуаций следует запретить использовать ненулевые уровни целостности тем пользователям, которым позволено удалённо монтировать свои домашние каталоги. |
Описание стенда
- Сервер FreeIPA + , на котором совмещены FreeIPA и Samba. Порядок установки и настройки см. Samba + FreeIPA аутентификация пользователей Samba в Kerberos.
В промышленной эксплуатации службу samba Samba рекомендуется размещать на отдельном сервере. Порядок настройки отдельной службы на отдельном сервере см. также в статье статье Samba + FreeIPA аутентификация пользователей Samba в Kerberos.
Параметры сервера FreeIPA + Samba, используемые далее:- имя сервера ipa0.ipadomain/.ru;
- администратор домена admin;
- пользователь домена с возможностью входа с ненулевой классификационной меткой конфиденциальности - ipauser;
Компьютер - клиент FreeIPA. Инструкцию по вводу компьютера в домен см.
с статье FreeIPAв статье FreeIPA;
Предупреждение После ввода компьютера в домен компьютер следует перезагрузить.
Настройка сервера
title | Только для ОС СН |
---|
Информация |
---|
Далее в примерах предполагается, что конфигурация samba находится в реестре samba. |
Создать конфигурации разделяемых ресурсов импортировать их в конфигурацию samba. Создаваемые ресурсы:
- Ресурс для монтирования домашних каталогов при работе с нулевой классификационной меткой;
- Только для Astra Linux Special Edition. Ресурс для монтирования домашний каталогов при работе с ненулевой классификационной меткой.
Конфигурации ресурсов сохраняются в текстовых файлах, и далее импортируются в конфигурацию samba. Команды:
Сохранение конфигурации в файле homes.txt:
Для Astra Linux Common Edition, Astra Linux Special Edition с выключенным МРД, Astra Linux Special Edition без использования конфиденциальных данных:
Command cat << EOT > homes.txt
[homes]
comment = Home Directories
read only = No
valid users = %S
EOTДля Astra Linux Special Edition с включенным МРД для работы с конфиденциальными данными следует:
Для домашних каталогов с нулевой классификационной меткой создать отдельный ресурс (имя
При работе с конфиденциальными данными в обязательном порядке следует настроить ограничения на файловом сервере: установить в конфигурации samba в секции [global] параметры:
Блок кода |
---|
client max protocol = NT1
use socket MAC label = YES
server signing = required |
В используемой в данной статье конфигурации (когда конфигурация samba хранится в реестре samba) это можно сделать из командной строки. Команды:
Command |
---|
sudo net conf setparm global "server max protocol" "NT1" sudo net conf setparm global "use socket MAC label" "Yes" sudo net conf setparm global "server signing" "required" |
Если конфигурация хранится в файле, то внести изменения в файл.
Назависимо от того, где хранится конфигурация (в файле или в реестре) - после изменения указанных параметров перезагрузить параметры конфигурации:
Command |
---|
sudo smbcontrol all reload-config |
Информация |
---|
Далее в примерах предполагается, что конфигурация samba находится в реестре samba. |
Создать конфигурации разделяемых ресурсов импортировать их в конфигурацию samba. Создаваемые ресурсы:
- Ресурс для монтирования домашних каталогов при работе с нулевой меткой конфиденциальности - ресурс homes (стандарный ресурс samba);
- Только для ОС СН. Ресурс для монтирования домашний каталогов при работе с ненулевой меткой конфиденциальности. Имя
ресурса может быть произвольным, в примере используется имя
nomac). Этот ресурс фактически эмулирует работу специального ресурса home для "нулевых" домашних каталогов, что позволяет использовать специальный ресурс home для домашних каталогов с ненулевой классификационной меткой:
Command cat << EOT >
nomac.txt
[
nomac]
comment = NOMAC Home
create mask = 0600
directory mask = 0700
Dirs
read only = No
valid users =
%U
browseable = No
[pdp_homes]
comment = pdp homes share
create mask = 0600
directory mask = 0700
follow symlinks = yes
path = %H
EOTВ качестве пути (path) специального разделяемого ресурса home (имя ресурса в обязательном порядке должно быть home) использовать каталог /home/.pdp/
read
<имя_пользователя>:
Command cat << EOT > homes.txt
[homes]
comment = Home Directories
read only = No
valid users = %S
browseable = No
EOTsudo net conf import homes.txt homes
create mask = 0600
directory mask = 0700
follow symlinks = yes
path = /home/.pdp/%U
EOT
Импорт в конфигурацию samba созданные на предыдущем шаге файлы homes.txt и nomac.txt:
Command sudo net conf import
homes.txt
homes
sudo net conf import nomac.txt nomac
Эти же действия можно выполнить командами не используя файлы без использования файлов для сохранения данных, например, для создания разделяемого ресурса 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" и т.д. |
Настройки пользовательских каталогов для Astra Linux Special Edition
Ресурс pdp_homes будет предоставлять для монтирования путь /home/.pdp/<имя_пользователя"> (параметр path = /home/.pdp/%U в конфигурации). Если такого каталога нет, то с помощью подключения через samba (т.е. действиями со стороны клиентской машины) создать его невозможно, поэтому на момент подключения пользователя пользовательский подкаталог должен быть уже создан. При этом:
- каталог должен принадлежать пользователю;
- это должен быть каталог с низким уровнем целостности, иначе запись в него из сетевого подключения будет невозможна.
- каталог должен иметь метку конфиденциальности не ниже максимально допустимой для пользователя;
Для пользователя ipauser:
Command |
---|
sudo mkdir /home/.pdp/ipauser |
Настройка клиента
Клиент должен быть введён в домен FreeIPA. Инструкцию по вводу компьютера в домен см. с статье FreeIPA.
Далее, в зависимости от задач, можно выбрать один из вариантов настройки автоматического монтирования домашних каталогов:
- Монтирование с помощью pam_mount (скорее применимо в ОС ОН, так как предоставляет простой стандартный способ монтирования);
- Монтирование с помощью собственного сценария (скорее применимо в ОС СН, так как позволяет гибко настраивать монтирование каталогов с ненулевыми мандатными метками).
Эти варианты при необходимости могут применяться совместно, дополняя друг друга.
Предупреждение |
---|
При работе с конфиденциальными данными в ОС СН следует в обязательном порядке использовать параметры монтирования sec=krb5i,vers=1.0 |
Использование модуля 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,vers=1.0"
/>
|
Блок кода | ||
---|---|---|
| ||
<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,vers=1.0"
/>
|
Дополнительно разрешить использование применяемых параметров, например:
Блок кода |
---|
<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 Special 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 заменить на:
Дополнительно:
При использовании в параметрах разделяемого ресурса домашних каталогов значения follow symlinks = yes установить глобальный параметр:
Command sudo net conf setparm global "allow insecure wide links" yes Подробнее см. man samba.conf;
При совместном использовании параметров sec=krb5i и vers=1.0 (актуально для очередных обновлений, выпущенных ранее очередного обновления x.7) установить в секции [global] параметр server signing=required:
Command sudo net conf setparm global "server signing" required
Настройки пользовательских каталогов на сервере для Astra Linux Special Edition
Созданный в примере выше специальный ресурс homes будет предоставлять для монтирования:
- в варианте настройки без использования конфиденциальных данных — каталог /home/<имя_пользователя> (конфигурация специального ресурса homes, принятая по умолчанию);
- в варианте настройки для работы с конфиденциальными данными:
- при подключении с нулевой классификационной меткой - каталог /home/.pdp/<имя_пользователя> (применение параметра path = /home/.pdp/%U в конфигурации ресурса для сессий с нулевой классификационной меткой);
- при подключении с ненулевой классификационной меткой - каталог /home/.pdp/<имя_пользователя>/<классификационная_метка> (применение параметра path = /home/.pdp/%U в конфигурации ресурса для сессий с ненулевой классификационной меткой);
Каталоги, предоставляемые как ресурсы, должны быть расположены на сервере, и, если их нет, то нужно создать корневые пользовательские каталоги (включая каталог для работы с "нулевой" меткой) и назначить им корректные атрибуты. Пример создания каталогов для пользователя ipauser:
Command |
---|
sudo mkdir -p /home/.pdp/ipauser/l0i0c0x0t0x0 |
В приведенном выше примере предполагается, что максимальный иерархический уровень конфиденциальности для пользователя 3, и пользователю разрешены все неиерархические категории конфиденциальности (сокращенное обозначение всех разрешенных неиерархических категорий -1).
Настройка клиента
Клиент должен быть введён в домен FreeIPA. Инструкцию по вводу компьютера в домен см. с статье Контроллер ЕПП FreeIPA в Astra Linux.
Далее, в зависимости от задач, можно выбрать один из вариантов настройки автоматического монтирования домашних каталогов:
- Монтирование с помощью 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) задать параметры подключаемых сетевых ресурсов (могут быть одновременно заданы несколько подключаемых ресурсов.). Примеры конфигурации (только части конфигурационного файла, непосредственно относящиеся к ресурсам):
Для Astra Linux Common Edition, Astra Linux Special Edition с выключенным МРД, Astra Linux Special Edition без использования конфиденциальных данных монтирование можно осуществлять непосредственно в домашний каталог пользователя (каталог /home/<имя_пользователя>):
Блок кода title Ресурс homes - монтирование домашних каталогов <volume fstype="cifs" server="ipa0.ipadomain.ru" path="%(USER)" mountpoint="/home/%(USER)" options="user=%(USER),cruid=%(USER),nosharesock,sec=krb5i" />
Для Astra Linux Special Edition с включенным МРД и с использованием конфиденциальных данных:
монтирование домашних каталогов с нулевой классификационной меткой осуществлять в специальный каталог /home/.<имя_пользователя>:
Блок кода <volume fstype="cifs" server="ipa0.ipadomain0.ru" path="nomac" mountpoint="/home/%(USER)" options="user=%(USER),cruid=%(USER),uid=%(USERUID),gid=%(USERGID),nosharesock,sec=krb5i" />
для примера монтироваться будет ресурс nomac;
монтирование домашних каталогов с ненулевой классификационной меткой осуществлять в специальный каталог /home/.pdp/<имя_пользователя>:
Блок кода title Только для Astra Linux Special Edition - ресурс pdp_homes для монтирования домашних каталогов с ненулевой меткой конфиденциальности <volume fstype="cifs" server="ipa0.ipadomain.ru" path="%(USER)" mountpoint="/home/.pdp/%(USER)" options="user=%(USER),cruid=%(USER),uid=%(USERUID),gid=%(USERGID),nosharesock,sec=krb5i" />
при этом, как указано выше, в каталог /home/.pdp/<имя_пользователя> будет монтироваться:
- при подключении с нулевой классификационной меткой - каталог /home/.pdp/<имя_пользователя> (применение параметра path = /home/.pdp/%U в конфигурации разделяемого ресурса для сессий с нулевой классификационной меткой);
- при подключении с ненулевой классификационной меткой - каталог /home/.pdp/<имя_пользователя>/<классификационная_метка> (применение параметра path = /home/.pdp/%U в конфигурации разделяемого ресурса для сессий с ненулевой классификационной меткой);
Дополнительно разрешить использование применяемых параметров монтирования, например:
Блок кода |
---|
<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 с выключенным МРД
В Astra Linux Common Edition или Astra Linux Special Edition с выключенным МРД можно без изменений использовать стандартную настройку PAM-стека. Опционально перед вызовом 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:
|
В файлах /etc/pam.d/login и /etc/pam.d/fly-dm после первого вызова модуля session required pam_parsec_mac добавить две строки: проверку, является ли пользователь локальным (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
... |
В итоге структура монтирования при входе пользователя с нулевой классификационной меткой будет выглядеть так:
Блок кода |
---|
TARGET SOURCE...├─/home/ipauser01 //ipa0.ipadomain.ru/nomac
└─/home/.pdp/ipauser01 //ipa0.ipadomain.ru/ipauser01 |
Структура монтирования при входе пользователя с ненулевой классификационной меткой будет выглядеть так:
Блок кода |
---|
TARGET SOURCE
├─/home/ipauser01 //ipa0.ipadomain0.ru/nomac
├─/home/.pdp/ipauser01 //ipa0.ipadomain0.ru/ipauser01
│ └─/home/.pdp/ipauser01/l0i0c0x0t0x0 //ipa0.ipadomain0.ru/nomac
├─/var/private/tmp/l0i0c0x0t0x0 /dev/vda1[/tmp]
├─/tmp /dev/vda1[/var/private/tmp/l1i0c0x0t0x0]
├─/var/private/vartmp/l0i0c0x0t0x0 /dev/vda1[/var/tmp]
└─/var/tmp /dev/vda1[/var/private/vartmp/l1i0c0x0t0x0] |
Блок кода |
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,vers=1.0
mount --bind $pdp_home/$label /home/$PAM_USER |
Так же, как вызов В отличие от вызова pam_mount в примерах вышес использованием модуля pam_mount, сценарий должен вызываться после последнего вызова pam-модуля session pam_parsec_mac . Приняв, что сценарий размещён в файлах /etc/pam.d/login и /etc/pam.d/fly-dm. Если сценарий размещен в исполняемом файле /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 |
---|
sudo grep cifs.upcall /var/log/syslog |
Для устранения ошибки указать верный идентификатор пользователя в параметре cruid=UID (числовой ID пользователя или просто имя пользователя).
Включение расширенной диагностики на сервере
Уровень диагностики на сервере задаётся конфигурационным параметром log level, например:
Блок кода |
---|
log level = 35 |
Диагностические сообщения выводятся в файлы в каталоге /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 |