Данная статья применима к:
Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.5)
- Astra Linux Special Edition РУСБ.10015-16 исп. 1 и исп. 2
- Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
При работе в операционных Astra Linux Special Edition с конфиденциальными данными, предоставляемыми с помощью Samba, в обязательном порядке:
Установить параметр сервера Samba:
use socket MAC label = YES
В используемой в данной статье конфигурации (когда конфигурация samba хранится в реестре samba) это можно сделать из командной строки. Команда:
sudo net conf setparm global "use socket MAC label" "Yes"В очередных обновлениях Astra Linux Special Edition выпущенных до очередного обновления x.7 установить корректную версию протокола передачи данных (SMB/CIFS)
Для Astra Linux Special Edition очередное обновление x.7 применение указанных ниже настроек параметров подключения не требуется.Подключение выполнять с параметрам sec=krb5i,vers=1.0, дополнительно установив параметр сервера server signing = required и подключение выполнять к специальному ресурсу homes. Для настройки:
Установить на файловом сервере все доступные оперативные обновления;
Включить на файловом сервере нужную версию протокола, для чего установить в конфигурации samba в секции [global] параметры:
server max protocol = NT1 server signing = required
В используемой в данной статье конфигурации (когда конфигурация samba хранится в реестре samba) это можно сделать из командной строки. Команды:
sudo net conf setparm global "server max protocol" "NT1"Если конфигурация хранится в файле /etc/samba/smb.conf, то внести изменения в файл;
sudo net conf setparm global "server signing" "required"
Независимо от используемой ОС и от того, где хранится конфигурация (в файле или в реестре), после изменения параметров перезагрузить конфигурацию:
sudo smbcontrol all reload-config
Выполняя действия, описанные в этой статье, следует помнить, что предоставление доступа к серверу через сетевые подключения неизбежно снижает защищённость этого сервера.
Стандарт передачи данных по сети не поддерживает передачу меток целостности, поэтому работа с примонтированными каталогами возможна только на нулевом уровне целостности. Домашние каталоги при этом должны иметь нулевой уровень целостности.
Во избежание аварийных ситуаций следует запретить использовать ненулевые уровни целостности тем пользователям, которым позволено удалённо монтировать свои домашние каталоги.
Описание стенда
- Сервер, на котором совмещены FreeIPA и Samba. Порядок установки и настройки см. Samba + FreeIPA аутентификация пользователей Samba в Kerberos.
В промышленной эксплуатации службу Samba рекомендуется размещать на отдельном сервере. Порядок настройки отдельной службы на отдельном сервере см. также в статье Samba + FreeIPA аутентификация пользователей Samba в Kerberos. Параметры сервера FreeIPA + Samba, используемые далее:- имя сервера ipa0.ipadomain.ru;
- администратор домена admin;
- пользователь домена с возможностью входа с ненулевой меткой конфиденциальности - ipauser;
Компьютер - клиент FreeIPA. Инструкцию по вводу компьютера в домен см. в статье FreeIPA;
После ввода компьютера в домен компьютер следует перезагрузить.
Настройка сервера
Создать конфигурации разделяемых ресурсов импортировать их в конфигурацию samba. Создаваемые ресурсы:
- Ресурс для монтирования домашних каталогов при работе с нулевой меткой конфиденциальности - ресурс homes (стандартный ресурс samba);
- Только для Astra Linux Special Edition. Ресурс для монтирования домашний каталогов при работе с ненулевой меткой конфиденциальности. Имя ресурса может быть произвольным, в примере используется имя pdp_homes. Данный ресурс требуется только для Astra Linux Special Edition.
Конфигурации ресурсов сохраняются в файлах homes.txt и pdp_homes.txt, далее импортируются в конфигурацию samba. Команды:
Сохранение конфигурации в файле homes.txt:
Для Astra Linux Common Edition, Astra Linux Special Edition с выключенным МРД, Astra Linux Special Edition без использования конфиденциальных данных:
cat << EOT > homes.txt
[homes]
comment = Home Directories
read only = No
valid users = %S
EOTДля Astra Linux Special Edition с включенным МРД для работы с конфиденциальными данными следует использовать каталог /home/.pdp/<имя_пользователя>:
cat << EOT > homes.txt
[homes]
browseable = No
comment = Home Directories
create mask = 0600
directory mask = 0700
follow symlinks = yes
path = /home/.pdp/%U
read only = No
valid users = %S
EOT
Импорт в конфигурацию samba созданного на предыдущем шаге файла homes.txt:
sudo net conf import homes.txt homes
Эти же действия можно выполнить командами без использования файлов для сохранения данных, например, для создания разделяемого ресурса homes:
sudo net conf setparm "homes" "browseable" "No"
sudo net conf setparm "homes" "valid users" "%U"
и т.д.
При использовании в параметрах разделяемого ресурса домашних каталогов значения follow symlinks = yes установить глобальный параметр:
sudo net conf setparm global "allow insecure wide links" yesПодробнее см. man samba.conf;При совместном использовании параметров sec=krb5i и vers=1.0 (актуально для очередных обновлений, выпущенных ранее очередного обновления x.7) установить в секции [global] параметр server signing=required:
sudo net conf setparm global "server signing" required
Настройки пользовательских каталогов для Astra Linux Special Edition
Созданный в примере выше специальный ресурс homes будет предоставлять для монтирования:
- в варианте без использования конфиденциальных данных - каталог /home/<имя_пользователя> (конфигурация специального ресурса homes, принятая по умолчанию);
- в варианте для работы с конфиденциальными данными - каталог /home/.pdp/<имя_пользователя>/<классификационная_метка> (параметр path = /home/.pdp/%U в конфигурации ресурса);
Каталоги, предоставляемые как ресурсы, должны быть расположены на сервере, и, если их нет, то:
- при работе в Astra Linux Special Edition в варианте для работы с конфиденциальными данными каталоги будут создаваться автоматически по мере подключения к ресурсу home. Это обеспечивается специальными доработками службы samba, действует только для специального ресурса home, и каталоги создаются со всеми необходимыми параметрами меток безопасности;
- для других (отличных от home) ресурсов разделяемые каталоги должны быть созданы вручную и должны:
- принадлежать пользователю;
- иметь низкий уровень целостности, иначе запись в него из сетевого подключения будет невозможна;
- иметь метку конфиденциальности не ниже максимально допустимой для пользователя;
- иметь флаг CCNR, позволяющий создавать в каталоге подкаталоги с меньшими метками конфиденциальности.
Пример создания каталогов для пользователя ipauser:
sudo mkdir /share/ipauser /home/ipauser
sudo chown ipauser:ipauser /share/ipauser /home/ipauser
sudo pdpl-file 3:0:-1:CCNR /share/ipauser
В приведенном выше примере предполагается, что максимальный иерархический уровень конфиденциальности для пользователя 3, и пользователю разрешены все неиерархические категории конфиденциальности (сокращенное обозначение всех разрешенных неиерархических категорий -1).
Настройка клиента
Клиент должен быть введён в домен FreeIPA. Инструкцию по вводу компьютера в домен см. с статье FreeIPA.
Далее, в зависимости от задач, можно выбрать один из вариантов настройки автоматического монтирования домашних каталогов:
- Монтирование с помощью pam_mount (более применимо в Astra Linux Common Edition, так как предоставляет простой стандартный способ монтирования);
- Монтирование с помощью собственного сценария (более применимо в Astra Linux Special Edition, так как позволяет гибко настраивать монтирование каталогов с ненулевыми метками конфиденциальности).
Эти варианты при необходимости могут применяться совместно, дополняя друг друга.
Использование модуля pam_mount
Установка пакетов
Набор пакетов, необходимых для монтирования домашних каталогов можно установить на клиентской машине командой:
В конфигурации модуля pam_mount (файл /etc/security/pam_mount.conf.xml) задать параметры подключаемых сетевых ресурсов (могут быть одновременно заданы несколько подключаемых ресурсов.). Примеры конфигурации (только части конфигурационного файла, непосредственно относящиеся к ресурсам):
Для Astra Linux Common Edition, Astra Linux Special Edition с выключенным МРД, Astra Linux Special Edition без использования конфиденциальных данных монтирование можно осуществлять непосредственно в домашний каталог пользователя (каталог /home/<имя_пользователя>):
Ресурс 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/.pdp/<имя_пользователя>:
Только для 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" />
Дополнительно разрешить использование применяемых параметров, например:
<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 для локальных пользователей:
session optional pam_mount.so
Настройка pam-стека в Astra Linux Special Edition с включенным МРД
Удалить (закомментировать) вызов модуля pam_mount в файле /etc/pam.d/common-session:
... session required pam_parsec_mac.so ... session [success=1 default=ignore] pam_localuser.so session optional pam_mount.so ...
Использование собственных сценариев монтирования
Установка пакетов
При использовании этого варианта достаточно установить пакет cifs-utils:
Вызывать собственные сценарии монтирования можно с помощью модуля pam_exec.
Чтобы пример ниже работал корректно с конфиденциальной информацией на сервере ресурс homes должен использовать путь /home/.pdp/%U:
path = /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_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 в системном журнале:
Для устранения ошибки указать верный идентификатор пользователя в параметре cruid=UID (числовой ID пользователя или просто имя пользователя).
Включение расширенной диагностики на сервере
Уровень диагностики на сервере задаётся конфигурационным параметром log level, например:
log level = 5
Диагностические сообщения выводятся в файлы в каталоге /var/log/samba/ (см. параметр конфигурации log file).
Включение расширенной диагностики на клиенте
Расширенная диагностика операций монтирования на клиенте может быть включена командами:
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
sudo -s
echo 0 > /proc/fs/cifs/cifsFYI
exit