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

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

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

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


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


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

client max protocol = NT1
use socket MAC label = YES

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

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

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

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

  • ОС ОН Орёл 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.

Настройка сервера

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

client max protocol = NT1
use socket MAC label = YES

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

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. Команды:


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

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

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. это должен быть каталог с низким уровнем целостности, иначе запись в него из сетевого подключения будет невозможна.
  3. каталог должен иметь метку конфиденциальности не ниже максимально допустимой для пользователя;

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

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

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

  1. Заранее создать в каталоге пользователя все возможные для него варианты каталогов для всех допустимых сочетаний атрибутов конфиденциальности (безопасно);
  2. Использовать параметр ядра parsec.ccnr_relax, что позволит пользователю самостоятельно создавать каталоги с нужными метками конфиденциальности (не превышающими метку конфиденциальности каталога пользователя) при сетевом подключении. Это более удобно, но несколько снижает защищённость системы.

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

Монтирование выполняется модулем pam_mount.

:

  1. Запускаемым от root-а с нулевым уровнем конфиденциальности.
  2. Для авторизации модуль предявляет билет керберос входящего пользователя.
  3. Т.е. примонтированный модуль действует от имени пользователя с нулевой меткой конфиденциальности, в результате примонтированный каталог пользователя имеет нулевую метку безопасности, и в нём видно только объекты с нулевой меткой.
  4. Далее Парсек пытается найти каталог с именем соответсвующим ненулевому уровню, не находит, пытается создать, не может

Предложение:

пропатчить pam_mount, чтобы он работал на уровне конфиденциальности пользователя.


[global]
create krb5 conf = No
dedicated keytab file = /etc/samba/samba.keytab
disable spoolss = Yes
domain logons = Yes
domain master = Yes
kerberos method = dedicated keytab
ldap group suffix = cn=groups,cn=accounts
ldap machine suffix = cn=computers,cn=accounts
ldap ssl = no
ldap suffix = dc=ipadomain0,dc=ru
ldap user suffix = cn=users,cn=accounts
log file = /var/log/samba/log.%m
max log size = 100000
passdb backend = ipasam:ldapi://%2fvar%2frun%2fslapd-IPADOMAIN0-RU.socket
realm = IPADOMAIN0.RU
registry shares = Yes
security = USER
server max protocol = NT1
use socket MAC label = Yes
workgroup = IPADOMAIN0
rpc_daemon:lsasd = fork
rpc_daemon:epmd = fork
rpc_server:tcpip = yes
rpc_server:netlogon = external
rpc_server:samr = external
rpc_server:lsasd = external
rpc_server:lsass = external
rpc_server:lsarpc = external
rpc_server:epmapper = external
ldapsam:trusted = yes
idmap config * : backend = tdb


[homes]
comment = Home Directories
create mask = 0600
directory mask = 0700
read only = No
valid users = %S


[pdp_homes]
comment = pdp homes share
create mask = 0666
directory mask = 0777
path = /home/.pdp/%U
read only = No


[share0]
comment = users share
create mask = 0666
directory mask = 0777
path = /share0/%U
read only = No

  • Нет меток