Данная статья применима к:
Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
Astra Linux Special Edition РУСБ.10015-17
Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
Введение
В настоящей статье рассматривается порядок настройки Samba для предоставления доступа к разделяемым сетевым ресурсам, файловые объекты в которых могут иметь ненулевые классификационное метки. При этом настройка выполняется без использования механизмов домена, т.е.:
- аутентификация пользователей выполняется не доменной службой Kerberos, а внутренней системой аутентификации Samba;
- аутентификация выполняется для локальных пользователей (локальных групп) компьютера, на котором расположен ресурс;
- контроль доступа выполняется на двух уровнях:
- авторизация для доступа к разделяемому ресурсу Samba выполняется службой samba;
- авторизация для доступа к файловым объектам, находящимся на разделяемом ресурсе, выполняется операционной системой на основании дискреционных прав доступа (владелец объекта, группа владельца объекта, маска доступа, ACL).
Установка пакетов
Для выполнения инструкций данной статьи необходимо установить пакет samba:
Настройка сетевых подключений
Для эксплуатации сервера samba рекомендуется назначить ему постоянный (статический) IP-адрес. См. краткую инструкцию Настройка разрешения имен и статических IP-адресов или подробную статью Настройка сетевых подключений в Astra Linux.
Создание каталогов для общего доступа
Для размещения данных с ненулевыми классификационными метками создать на сервере каталоги, которые будут содержать разделяемые файловые ресурсы, и установить желаемые права мандатного и дискреционного доступа, например:
Создать группу каталогов для размещения данных с различными классификационными метками:
sudo mkdir /srv/macshare
sudo mkdir /srv/macshare/zero
sudo mkdir /srv/macshare/dsp
sudo mkdir /srv/macshare/secret
sudo mkdir /srv/macshare/topsecretУстановить желаемые дискреционные атрибуты, например, разрешение на чтение и запись для всех:
sudo chmod 777 /srv/macshare -RУстановить классификационные метки на подкаталоги:
sudo pdpl-file 3:0:-1:ccnr /srv /srv/macshare/В примере выше:
sudo pdpl-file 1:0:0 /srv/macshare/dsp
sudo pdpl-file 2:0:0 /srv/macshare/secret
sudo pdpl-file 3:0:0 /srv/macshare/topsecretна каталог /srv/macshare/zero классификационная метка не устанавливается, по умолчанию используется нулевая классификационная метка;
каталог /srv /srv/macshare/:
на этот каталог установлена максимальная метка из меток подчиненных каталогов;
- на этот каталог установлен флаг ccnr, разрешающий создание подкаталогов с меньшими классификационными метками.
Настройка службы samba
Настройка работы с МРД
Для того, чтобы разрешить работу службы samba с ненулевыми классификационным метками, необходимо добавить в конфигурационный файл /etc/samba/smb.conf в секцию [global] параметр:
use socket MAC label = YES
Создание разделяемого ресурса и настройка доступа
Для создания разделяемого ресурса службы samba добавить в конфигурационный файл /etc/samba/smb.conf секцию с информацией об этом ресурсе, например, секция для файлового ресурса с именем macshare:
[macshare] comment = For all doc's path = /srv/macshare read only = no
Права доступа к разделяемому ресурсу по умолчанию предоставляются всем пользователям, прошедшим аутентификацию. Индивидуальные права доступа к ресурсу можно установить с помощью параметров valid users (разрешение доступа) и invalid users (запрещение доступа), подробнее см. man smb.conf.
Была добавлена жёсткая проверка параметров „valid users“, „invalid users“, „read list“ и „write list“
В предыдущих версиях Samba(до 4.21), если имя пользователя или группы в любой из перечисленных опций не удавалось разрешить в корректный SID, соответствующий пользователь (или группа) просто пропускался без какого-либо уведомления. Это могло приводить к неожиданному и небезопасному поведению.
Начиная с версии Samba 4.21, если любое имя пользователя или группы в любой из этих опций не удаётся разрешить из-за ошибки связи с контроллером домена, Samba зафиксирует ошибку в логах, и подключение к общей папке завершится с отказом (tree connect will fail).
Для того чтобы в данной ситуации добавить пользователя в поля, его нужно указывать в NT-формате:
valid users = @shareacess, "TESTDOMAIN\admin"
read list = @shareaccess,"TESTDOMAIN\admin"
write list = @shareacess,"TESTDOMAIN\admin"
При этом обращаться к каталогу нужно явно указав пользователя из группы в NT-формате:
smbclient //asabirov-smol1832-01.testdomain.test/share --use-kerberos=required -U "TESTDOMAIN.TEST\ipauser01"
Откатив данный функционал мы рискуем вернуть небезопасные подключения.
Например:
- Создать локальную группу smbusers:sudo groupadd smbusers
- Разрешить доступ к ресурсу только участникам этой группы, добавив в описание ресурса строку:
valid users = @smbusers
Пользователей, которые должны получить доступ к ресурсу, включить в группу smbusers:
sudo usermod -aG smbusers <имя_пользователя>
Для того, чтобы ограничить доступ доменных пользователей к разделяемому ресурсу samba можно использовать следующий вариант процедуры:
Получить билет администратора домена:
kinit adminСоздать отдельную группу, участником которой будет далее предоставлено права доступа к ресурсу. Например, группу с именем shareaccess:
ipa group-add shareaccessВключить в созданную группу пользователей, которым будет предоставлено право доступа. Например, доменных пользователей с именами ipauser01 и ipauser02:
ipa group-add-member shareaccess --users=ipauser01 --users=ipauser02В параметрах разделяемого ресурса для параметра valid users указать имя группы (можно также указывать имена пользователей. Имена групп предваряются символом "@", разделителем имен служит запятая или пробел). Например, предоставить доступ к ресурсу share группе shareaccess и пользователю admin. Если конфигурация samba хранится в реестре samba, то для задания значения параметра следует использовать команду:
sudo net conf setparm "share" "valid users" "@shareaccess,admin"Если конфигурация samba хранится в файле, то для внесения изменений использовать текстовый редактор (при этом после внесения изменения потребуется перезапустить службу smbd).
Получив доступ к разделяемому ресурсу локальный или доменный пользователь далее по умолчанию работает от своего имени, подчиняясь установленным в ОС правилам дискреционного и мандатного доступа (если используются). Соответственно, корневой каталог разделяемого ресурса должен иметь атрибуты доступа, обеспечивающие необходимый доступ пользователям. Создаваемые пользователем файловые объекты будут принадлежать этому пользователю, маски доступа будут определяться операционной системой (см. Umask и права доступа), доступ к файловым объектам, принадлежащим другим пользователям, будет регулироваться общесистемными правами доступа.
Для разделяемых ресурсов, файловые объекты в которых предназначены для совместного использования разными пользователями, можно использовать следующие варианты предоставления общего доступа:
- Назначить файловым объектам ACL, предоставив нужные права доступа нужным пользователям (группам). При этом удобно использовать для корневого каталога разделяемого ресурса ACL по умолчанию, которые будут автоматически применяться к создаваемым объектам.
Использовать параметры разделяемого ресурса force user и force group (или параметр guest only = yes). При этом действия с файловыми объектами будут выполняться не от имени аутентифицированного пользователя (группы), а от имени пользователя (группы), заданного параметром (в случае параметра guest only = yes — от имени пользователя nobody и группы nogroup). Все создаваемые файловые объекты будут принадлежать указанному пользователю (пользователь должен существовать), соответственно, доступ к объектам будет обеспечен как к собственным. При этом мандатные права доступа будут определяться меткой пользователя, от имени которого выполняются операции. Например, подключение к ресурсу из пользовательской сессии с ненулевой классификационной меткой будет невозможно, если работа с ресурсом должна выполняться от имени пользователя nobody, не имеющего метки безопасности.
Например, работа от имени пользователя shareuser:force user = shareuser
Для параметров force user/force group не следует использовать имена nobody/nogroup.
Использовать параметры разделяемого ресурса force create mode (для файлов) и force directory mode (для каталогов). Значения этих параметров переопределяют дискреционные маски прав доступа для создаваемых объектов. Создаваемые объекты могут принадлежать разным пользователям, а разрешения доступа к ним будут устанавливаться на основание значения umask (про работу umask см. Umask и права доступа) и дополнительно установленных бит разрешений из маски доступа, заданной параметрами. Например, полный доступ к каталогам и доступ на чтение и запись к файлам:
force directory mode = 0777 force create mode = 0666
Проверка корректности настроек
Проверить корректность конфигурации samba можно командой:
testparm
sudo systemctl restart smbd
tree connect failed: NT_STATUS_ACCESS_DENIED
Убедиться, что доступ работает корректно, выполнив подключение от имени пользователя (понадобится ввести пароль пользователя):