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

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

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

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

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

  • 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 РУСБ.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:

    1. Для 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

    2. Для 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

  2. Импорт в конфигурацию samba созданного на предыдущем шаге файла homes.txt:

    sudo net conf import homes.txt 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"
и т.д.
Дополнительно:

  1. При использовании в параметрах разделяемого ресурса домашних каталогов значения follow symlinks = yes установить глобальный параметр:

    sudo net conf setparm global "allow insecure wide links" yes
    Подробнее см. man samba.conf;

  2. При совместном использовании параметров sec=krb5i и vers=1.0 установить в секции [global] параметр server signing=required:

    sudo net conf setparm global "server signing" required

Настройки пользовательских каталогов для Astra Linux Special Edition

Созданный в примере выше специальный ресурс homes  будет предоставлять для монтирования:

  • в варианте для работы с не конфиденциальными данными - каталог /home/<имя_пользователя> (параметр path = /home/%U в конфигурации ресурса);
  • в варианте для работы с конфиденциальными данными - каталог /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:CCNRA /share/ipauser

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

  1. Для 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"
    />
    
  2. Для Astra Linux Special Edition с выключенным МРД с использованием конфиденциальных данных монтирование следует осуществлять в специальный каталог /home/.pdp/<bvz>:

    Только для 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 [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_mount, сценарий должен вызываться после последнего вызова pam-модуля session pam_parsec_mac в файлах /etc/pam.d/login и /etc/pam.d/fly-dm.  Если сценарий размещен в исполняемом файле /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 = 5

Диагностические сообщения выводятся в файлы в каталоге /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

  • Нет меток