Дерево страниц

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 50 Следующий »

Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.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 РУСБ.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 РУСБ.10015-01 (очередное обновление 1.7) применение указанных ниже ограничений параметров подключения не требуется.

Подключение, корректно работающее с конфиденциальной информацией, работает только с версией протокола vers=1. В этих ОС для корректной работы механизма создания мандатных домашних каталогов необходимо:

  1. Подключение выполнять с параметрам sec=krb5i,vers=1.0, дополнительно установив параметр сервера server signing = required;
  2. Подключение выполнять к специальному ресурсу homes, с другими ресурсами механизм не работает.

В указанных ОС для настройки механизма создания мандатных домашних каталогов в обязательном порядке:

  1. Установить на файловом сервере все доступные оперативные обновления;

  2. Настроить на файловом сервере ограничения версии протокола, для чего установить в конфигурации samba в секции [global] параметры:

    server max protocol = NT1
    use socket MAC label = YES
    server signing = required

    В используемой в данной статье конфигурации (когда конфигурация samba хранится в реестре samba) это можно сделать из командной строки. Команды:

    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"
    Если конфигурация хранится в файле /etc/samba/smb.conf, то внести изменения в файл;

  3. Независимо от того, где хранится конфигурация (в файле или в реестре) - после изменения указанных параметров перезагрузить параметры конфигурации:

    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 находится в реестре samba.

Создать конфигурации разделяемых ресурсов импортировать их в конфигурацию samba. Создаваемые ресурсы:

  1. Ресурс для монтирования домашних каталогов при работе с нулевой меткой конфиденциальности - ресурс homes (стандартный ресурс samba);

  2. Только для Astra Linux Special Edition. Ресурс для монтирования домашний каталогов при работе с ненулевой меткой конфиденциальности. Имя ресурса может быть произвольным, в примере используется имя pdp_homes. Данный ресурс требуется только для Astra Linux Special Edition.

Конфигурации ресурсов сохраняются в файлах homes.txt и pdp_homes.txt, далее импортируются в конфигурацию samba. Команды:

  1. Сохранение конфигурации в файлах homes.txt и pdp_homes.txt:

    cat << EOT > homes.txt
    [homes]
       comment = Home Directories
       read only = No
       valid users = %S
    EOT

    cat << 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

  2. Импорт в конфигурацию samba:

    sudo net conf import homes.txt homes
    sudo net conf import pdp_homes.txt pdp_homes

Эти же действия можно выполнить командами без использования файлов для сохранения данных, например, для создания разделяемого ресурса homes:

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:
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 (т.е. действиями со стороны клиентской машины) создать их невозможно, поэтому на момент подключения пользователя эти каталоги должны быть уже созданы. При этом каталоги должны:

  1. Принадлежать пользователю;
  2. Иметь низкий уровень целостности, иначе запись в него из сетевого подключения будет невозможна;
  3. Иметь метку конфиденциальности не ниже максимально допустимой для пользователя;
  4. Иметь флаг CCNRA, позволяющий создавать в каталоге подкаталоги с меньшими метками конфиденциальности.

Для пользователя ipauser:

sudo mkdir /home/.pdp/ipauser /home/ipauser
sudo chown ipauser:ipauser /home/.pdp/ipauser /home/ipauser
sudo pdpl-file 3:0:-1:CCNRA /home/.pdp/ipauser

В приведенном выше примере предполагается, что максимальный иерархический уровень конфиденциальности для пользователя равен трем, и пользователю разрешены все неиерархические категории конфиденциальности (сокращенное обозначение -1).

Настройка клиента

Клиент должен быть введён в домен FreeIPA. Инструкцию по вводу компьютера в домен см. с статье FreeIPA.

Далее, в зависимости от задач, можно выбрать один из вариантов настройки автоматического монтирования домашних каталогов:

  1. Монтирование с помощью pam_mount (более применимо в Astra Linux Common Edition, так как предоставляет простой стандартный способ монтирования);
  2. Монтирование с помощью собственного сценария (более применимо в Astra Linux Special Edition, так как позволяет гибко настраивать монтирование каталогов с ненулевыми метками конфиденциальности).

Эти варианты при необходимости могут применяться совместно, дополняя друг друга.


Использование модуля pam_mount

Установка пакетов

Набор пакетов, необходимых для монтирования домашних каталогов можно установить на клиентской машине командой:

sudo apt install cifs-utils libpam-mount
Настройка модуля pam_mount

В конфигурации модуля pam_mount (файл /etc/security/pam_mount.conf.xml) задать параметры подключаемых сетевых ресурсов (могут быть одновременно заданы несколько подключаемых ресурсов.). Примеры конфигурации (только части конфигурационного файла, непосредственно относящиеся к ресурсам):

Ресурс 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 - ресурс pdp_homes для монтирования домашних каталогов с ненулевой меткой конфиденциальности
<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 для локальных пользователей:

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:

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:

sudo apt install cifs-utils
Настройка

Вызывать собственные сценарии монтирования можно с помощью модуля pam_exec.

Чтобы пример ниже работал корректно с конфиденциальной информацией на сервере ресурс homes должен использовать путь /home/.pdp/%U:

path = /home/.pdp/%U

Например:

Для Astra Linux Special Edition сценарий, монтирующий домашний пользовательский каталог, имеющий ненулевую мандатную метку, соответствующую мандатной метке пользовательской сессии непосредственно в локальный домашний каталог пользователя:

/etc/pam.d/pdp_home.sh
#!/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-стеке может выглядеть так:

/etc/pam.d/pdp_home.sh
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
Где debug - необязательный параметр включения отладки, а log=/dev/tty - необязательный параметр вывода на терминал (также может быть полезен для отладки).

Типичные ошибки монтирования и расширенная диагностика

Неизвестная ошибка 524

Возникает при одновременном использовании параметров монтирования sec=krb5i и vers=1.0 если на сервере samba не включен параметр server signing = required.
Для устранения ошибки - добавить параметр в конфигурацию и перезапустить сервер.

Ошибка mount error(126): Required key not available

Не найден билет Kerberos. Для диагностики проверить сообщения cifs.upcall в системном журнале:

grep cifs.upcall /var/log/syslog

Для устранения ошибки указать верный идентификатор пользователя в параметре cruid=UID (числовой ID пользователя или просто имя пользователя).

Включение расширенной диагностики на сервере

Уровень диагностики на сервере задаётся конфигурационным параметром log level, например:

log level = 3

Диагностические сообщения выводятся в файлы в каталоге /var/log/samba/ (см. параметр конфигурации log file).

Включение расширенной диагностики на клиенте

Расширенная диагностика операций монтирования на клиенте может быть включена командами:

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
Диагностические сообщения выводятся в журнал ядра, посмотреть их можно командой:
sudo dmesg
Выключение расширенной диагностики выполняется командами:

sudo -s
echo 0 > /proc/fs/cifs/cifsFYI
exit

  • Нет меток