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

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление


Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7)

  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.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)

См. также Автоматическое монтирование разделяемых ресурсов CIFS (samba и DFS)


Предупреждение

При работе в операционных Astra Linux Special Edition с конфиденциальными данными, предоставляемыми с помощью Samba, в обязательном порядке:

  1. Установить параметр сервера Samba:

    Блок кода
    use socket MAC label = YES

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

    Command
    sudo net conf setparm global "use socket MAC label" "Yes"


  2. В очередных обновлениях Astra Linux Special Edition выпущенных до очередного обновления x.7 установить корректную версию протокола передачи данных (SMB/CIFS)

    Информация
    Для Astra Linux Special Edition очередное обновление x.7 применение указанных ниже настроек параметров подключения не требуется.

    Подключение выполнять с параметрам sec=krb5i,vers=1.0, дополнительно установив параметр сервера server signing = required и подключение выполнять к специальному ресурсу homes. Для настройки:

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

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

      Блок кода
      server max protocol = NT1
      server signing = required

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

      Command
      sudo net conf setparm global "server max protocol" "NT1"
      sudo net conf setparm global "server signing" "required"

      Если конфигурация хранится в файле /etc/samba/smb.conf, то внести изменения в файл;

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

    Command
    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. Ресурс для монтирования домашних каталогов при работе с нулевой классификационной меткой;
  2. Только для Astra Linux Special Edition. Ресурс для монтирования домашний каталогов при работе с ненулевой классификационной меткой.

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

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

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


    2. Для Astra Linux Special Edition с включенным МРД для работы с конфиденциальными данными следует:

      1. Для домашних каталогов с нулевой классификационной меткой создать отдельный ресурс (имя ресурса может быть произвольным, в примере используется имя nomac). Этот ресурс фактически эмулирует работу специального ресурса home для "нулевых" домашних каталогов, что позволяет использовать специальный ресурс home для домашних каталогов с ненулевой классификационной меткой:

        Command

        cat << EOT > nomac.txt
        [nomac]
            comment = NOMAC Home Dirs
            read only = No
            valid users = %U
            browseable = No
            create mask = 0600
            directory mask = 0700
            follow symlinks = yes
            path = /home/%U
        EOT


      2. В качестве пути (path) специального разделяемого ресурса home (имя ресурса в обязательном порядке должно быть home) использовать каталог /home/.pdp/<имя_пользователя>:

        Command

        cat << EOT > homes.txt
        [homes]
           comment = Home Directories
           read only = No
           valid users = %S
           browseable = No
           create mask = 0600
           directory mask = 0700
           follow symlinks = yes
           path = /home/.pdp/%U
        EOT


  2. Импорт в конфигурацию 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"
и т.д.

Дополнительно:

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

    Command
    sudo net conf setparm global "allow insecure wide links" yes

    Подробнее см. man samba.conf;

  2. При совместном использовании параметров 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
sudo chown ipauser:ipauser /home/.pdp/ipauser
sudo pdpl-file 3:0:-1:CCNR /home/.pdp/ipauser

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

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

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

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

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

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


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

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

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

Command
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/<имя_пользователя>):

    Блок кода
    titleРесурс 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 с включенным МРД и с использованием конфиденциальных данных:

    1. монтирование домашних каталогов с нулевой классификационной меткой осуществлять в специальный каталог /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;

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

      1. при подключении с нулевой классификационной меткой - каталог /home/.pdp/<имя_пользователя> (применение параметра path = /home/.pdp/%U в конфигурации разделяемого ресурса для сессий с нулевой классификационной меткой);
      2. при подключении с ненулевой классификационной меткой - каталог /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:

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 добавить две строки: проверку, является ли пользователь локальным (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]   

Использование собственных сценариев монтирования

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

При использовании этого варианта достаточно установить пакет cifs-utils:

Command
sudo apt install cifs-utils

Настройка

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

Предупреждение

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

Блок кода
path = /home/.pdp/%U


Например:

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

Блок кода
title/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-стеке может выглядеть так:

Блок кода
title/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 в системном журнале:

Command
sudo grep cifs.upcall /var/log/syslog

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

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

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

Блок кода
log level = 5

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

Статья не для публикации.

Предупреждение

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

Блок кода
collapsetrue
/* bind cuurent session's dir to home*/
+ PDPL_T *bind_mac_save = pdp_get_current();
+ if( !bind_mac_save)
+     T("Can not save mac");
+ else {
+     PDPL_T *bind_mac_set=pdpl_dup(md->label);
+    if( !bind_mac_set)
+        T("Session label is NULL");
+    else {
+        pdpl_set_ilev(bind_mac_set,pdp_get_max_ilev()); 
+        if( pdp_set_current( bind_mac_set))
+            T("Can not set mac");
+        pdpl_put(bind_mac_set);
+    }
+ }
if( !(session_home=pdplugm_make_session_dir(homes_root,md->user,MACDIR,md->label,md->uid,md->gid,HOME_MODE)) )
{
+    if( bind_mac_save) {
+    pdp_set_current( bind_mac_save);
+    pdpl_put( bind_mac_save);
+    }
     L(pamh,LOG_ERR,"Error making home dir %m");
     return PAM_SYSTEM_ERR;
}

! T("Home dir is %s. Export environment variable MACDIR", session_home);
if( set_env(pamh,ENV_MACDIR,session_home) ) return PAM_SYSTEM_ERR;

if( bind_dir(session_home,md->home,0,md) )
{
+    if( bind_mac_save) {
+        pdp_set_current( bind_mac_save);
+        pdpl_put( bind_mac_save);
+    }
    L(pamh,LOG_CRIT, "Cannot bind %s on %s: %m",session_home,md->home);
    free(session_home);
    return PAM_SYSTEM_ERR;
}
+ if( bind_mac_save) {
+    pdp_set_current( bind_mac_save);
+    pdpl_put( bind_mac_save);
+ }
+ 
// free(session_home);

ToDo:

Предупреждение
 Почему pam_mount после pam_parsec_mac работает на нужном уровне - непонятно, возможно, это сделано, чтобы мог работать pam_ald. Как с учётом вышеизложенного работает монтирование в ALD тоже непонятно. Нужно разобраться.
Предупреждение

Подключение работает только с устаревшей версией протокола (vers=1) (см. BT-8434). При этом возможно использование только протокола без подписи пакетов (sec=krb5), более защищённый вариант с подписью пакетов (sec=krb5i) несовместим с vers=1.

Предупреждение

Не работает размонтирование при выходе из сессии. Возможная причина - опять не тот мандатный уровень. Нужно разбираться.

Предупреждение
Проверить возможные побочные эффекты от использования pam_parsec_mac unshare_root_only
Предупреждение
Проверить этот способ с ALD - вроде должно работать без pam_ald

Оглавление

Предупреждение

Выполняя действия, описанные в этой статье, следует помнить, что предоставление доступа к серверу через сетевые подключения неизбежно снижает защищённость этого сервера.

Предупреждение

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

Блок кода
client max protocol = NT1
use socket MAC label = YES
Предупреждение

Так как стандарт передачи данных по сети не поддерживает передачу меток целостности работа с примонтированными каталогами возможна только на нулевом уровне целостности. Домашние каталоги при этом должны иметь нулевой уровень целостности.

Предупреждение
Монтирование домашнего каталога с ненулевым уровнем целостности пользователем с ненулевым уровнем целостности ведёт к краху системы.

Во избежание аварийных ситуаций следует запретить использовать ненулевые уровни целостности тем пользователям, которым позволено удалённо монтировать свои домашние каталоги.

Информация
titleДанная статья применима к:
  • ОС ОН Орёл 2.12
  • ОС СН Смоленск 1.6
  • ОС СН Ленинград 8.1

Описание стенда

Сервер FreeIPA + Samba. Порядок установки и настройки см. Samba + FreeIPA аутентификация пользователей Samba в Kerberos.
В промышленной эксплуатации службу samba рекомендуется размещать на отдельном сервере. Порядок настройки отдельной службы на отдельном сервере см. также в статье Samba + FreeIPA аутентификация пользователей Samba в Kerberos.
  • Параметры сервера FreeIPA + Samba, используемые далее:
    • имя сервера ipa0.ipadomain/ru;
    • администратор домена admin;
    • пользователь домена с возможностью входа с ненулевой меткой конфиденциальности - ipauser;
  • Компьютер - клиент FreeIPA. Инструкцию по вводу компьютера в домен см. с статье FreeIPA.
  • Настройка сервера

    Предупреждение
    titleТолько для ОС СН

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

    Блок кода
    client max protocol = NT1
    use socket MAC label = YES

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

    Command
    sudo net conf setparm global "server max protocol" "NT1"
    sudo net conf setparm global "use socket MAC label" "Yes"

    Если конфигурация хранится в файле, то внести изменения в файл, после чего перезапустить сервис.

    Информация
    Далее в примерах предполагается, что конфигурация samba находится в реестре samba. Если конфигурация находится в файле необходимо внести указанные изменения в файл конфигурациии перезапустить службу samba.

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

    1. Ресурс для монтирования домашних каталогов при работе с нулевой меткой конфиденциальности - ресурс homes (стандарный ресурс samba);
    2. Ресурс для монтирования домашний каталогов при работе с ненулевой меткой конфиденциальности. Имя ресурса может быть произвольным, в примере используется имя pdp_homes. Данный ресурс требуется только для ОС СН.

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

    Command

    cat << EOT > homes.txt
    [homes]
    comment = Home Directories
    create mask = 0600
    directory mask = 0700
    read only = No
    valid users = %S
    browseable = No
    EOT

    cat << EOT > pdp_homes.txt
    [pdp_homes]
    comment = pdp homes share
    create mask = 0600
    directory mask = 0700
    path = /home/.pdp/%U
    read only = No
    browseable = No
    valid users = %U
    EOT

    sudo net conf import homes.txt homes
    sudo net conf import pdp_homes.txt pdp_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"
    и т.д.

    Специальные настройки для ОС СН

    Ресурс pdp_homes будет предоставлять для монтирования путь /home/.pdp/<имя_пользователя">. С помощью подключения через samba (т.е. действиями со стороны клиентской машины) создать такой ресурс невозможно, поэтому на момент подключения пользователя его подкаталог должен быть уже создан. При этом:

    1. каталог должен приндлежать пользователю;
    2. только в ОС СН:
      1. это должен быть каталог с низким уровнем целостности, иначе запись в него из сетевого подключения будет невозможна.
      2. каталог должен иметь метку конфиденциальности не ниже максимально допустимой для пользователя;

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

    Command

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

    Далее возможны два варианта:

    Заранее создать в каталоге пользователя все возможные для него варианты каталогов для всех допустимых сочетаний атрибутов конфиденциальности (безопасно). При этом, так как при входе в любую сессию независимо от её метки конфиденциальности Парсек проверяет и создаёт пользовательский каталог с нулевой меткой конфиденциальности, этот каталог также в обязательном порядке должен быть создан заранее:

    Command

    sudo mkdir /home/.pdp/ipauser/l0i0c0x0t0x0
    sudo chown ipauser:ipauser /home/.pdp/ipauser/l0i0c0x0t0x0
    sudo pdpl-file 0:0:0 /home/.pdp/ipauser/l0i0c0x0t0x0

  • Изменить настройки ОС, принятые по умолчанию, и спользовать параметр ядра parsec.ccnr_relax, что позволит Парсеку пользователя самостоятельно создавать каталоги с нужными метками конфиденциальности (не превышающими метку конфиденциальности каталога пользователя) при сетевом подключении. Это более удобно, но несколько снижает защищённость системы.
  • Настройка клиента

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

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

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

    Command
    sudo apt install cifs-utils libpam-mount

    Настройка модуля pam_mount

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

    Блок кода
    titleРесурс homes - монтирование домашних каталогов
    <volume 
    fstype="cifs"
    server="ipa0.ipadomain.ru"
    path="%(USER)"
    mountpoint="/home/%(USER)"
    options="user=%(USER),cruid=%(USER),nosharesock,sec=krb5,vers=1.0"
    />
    
    Блок кода
    titleДля ОС СН - ресурс 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=krb5,vers=1.0"
    />
    

    Дополнительно разрешить использование применяемых параметров:

    Блок кода
    <mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other,nosharesock,gid,uid,vers,user_xattr" />

    Настройка pam-стека

    Удалить (закомментировать) вызов модуля 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 вызов модуля pam_parsec_mac заменить на:

    Command
    session [success=2 default=ignore] pam_localuser.so
    session required pam_parsec_mac.so unshare_root_only
    session optional pam_mount.so
    session required pam_parsec_mac.so