Astra linux настройка kerberos samba

Обновлено: 03.07.2024

В этом посте мы решили рассказать о доменной аутентификации в Linux, с использованием смарт-карт и USB-токенов JaCarta PKI в качестве второго фактора аутентификации. Если о локальной аутентификации через PAM-модуль информации существует довольно много, то вопрос доменной инфраструктуры и аутентификация по Kerberos-билетам в Linux рассмотрен слабо, особенно на русском языке. В качестве операционной системы возьмем Astra Linux и на примере Astra Linux Directory (ALD) это и покажем.

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

Немного вводных об Astra Linux Directory (ALD) и JaCarta PKI

Домен Astra Linux Directory (ALD) предназначен для организации единого пространства пользователей (домена локальной вычислительной сети) в автоматизированных системах.

ALD использует технологии LDAP, Kerberos5, Samba/CIFS и обеспечивает:

  • централизованное хранение и управление учетными записями пользователей и групп;
  • сквозную аутентификацию пользователей в домене с использованием протокола Kerberos5;
  • функционирование глобального хранилища домашних директорий, доступных по Samba/CIFS;
  • автоматическую настройку файлов конфигурации UNIX, LDAP, Kerberos, Samba, PAM;
  • поддержку соответствия БД LDAP и Kerberos;
  • создание резервных копий БД LDAP и Kerberos с возможностью восстановления;
  • интеграцию в домен входящих в дистрибутив СУБД, серверов электронной почты, Web-серверов, серверов печати и другие возможности.


В среде Astra Linux Directory (ALD) электронные ключи JaCarta PKI могут использоваться для двухфакторной аутентификации пользователя в домене ALD и отказа от паролей. Кроме того, с этими же электронными ключами можно выполнять различные сценарии внутри ОС, после аутентификации, такие, как: электронная подпись, хранение ключевых контейнеров, доступ к Web-ресурсам, проброс ключа в сессии MS Windows. Доступ к VDI сервисам, таким, как VmWare или Citrix.

Процесс настройки

Пример демо-зоны

  • Сервер — Astra Linux Smolensk SE 1.5 4.2.0-23-generic, x86_64, с установленными пакетами:
    • JaCarta IDProtect 6.37;
    • libccid;
    • pcscd;
    • libpcsclite1;
    • krb5-pkinit;
    • libengine-pkcs11-openssl;
    • opensc.
    • JaCarta IDProtect 6.37;
    • libccid;
    • pcscd;
    • libpcsclite1;
    • krb5-pkinit.

    Установка драйверов на сервер и клиент

    Для обеспечения работы со смарт-картой JaCarta PKI на клиенте и сервере установите следующие пакеты: libccid, pcscd, libpcsclite1. После установки этих обязательных пакетов установите пакет драйверов IDProtectClient, который можно загрузить с официального сайта «Аладдин Р.Д.».

    Для обеспечения работы со смарт-картой подсистемы Kerberos добавочно к предустановленным пакетам ald/kerberos установите пакет krb5-pkinit на клиенте и сервере.

    Для обеспечения возможности выпуска ключей и сертификатов на JaCarta PKI на сервере также установите пакеты libengine-pkcs11-openssl и opensc.

    Установка и настройка центра сертификации на сервере

    В качестве центра сертификации (CA) будет использован OpenSSL.

    OpenSSL — криптографический пакет с открытым исходным кодом для работы с SSL/TLS. Позволяет создавать ключи RSA, DH, DSA и сертификаты X.509, подписывать их, формировать CSR и CRT.

      Выпустите сертификат KDC:
      $ openssl x509 -req -in kdc.req -CAkey cakey.pem -CA cacert.pem -out kdc.pem -extfile pkinit_extensions -extensions kdc_cert –CAcreateserial –days 365

    Подготовка смарт-карты. Выпуск ключей и сертификата пользователя

    Убедитесь в том, что установлены пакеты libengine-pkcs11-openssl и opensc. Подключите устройство, которое следует подготовить.

    Проинициализируйте устройство, установите PIN-код пользователя. Помните, что инициализация устройства удалит все данные на JaCarta PKI без возможности восстановления.

    Для инициализации необходимо воспользоваться утилитой pkcs11-tool.

    pkcs11-tool --slot 0 --init-token --so-pin 00000000 --label 'JaCarta PKI' --module /lib64/libASEP11.so,

    --slot 0 — указывает, в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.;

    --init-token – команда инициализации токена;

    --so-pin 00000000 – PIN-код администратора JaCarta PKI. По умолчанию имеет значение 00000000;

    --label 'JaCarta PKI' – метка устройства;

    --module /lib64/libASEP11.so — указывает путь до библиотеки libASEP11.so. Устанавливается в рамках пакета idprotectclient см. раздел «Установка драйверов на сервер и клиент».

    Для задания PIN-кода пользователя используйте команду:

    pkcs11-tool --slot 0 --init-pin --so-pin 00000000 --login --pin 11111111 --module /lib64/libASEP11.so,

    --slot 0 — указывает, в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.;

    --init-pin – команда установки PIN-кода пользователя;

    --so-pin 00000000 – PIN-код администратора JaCarta PKI. По умолчанию имеет значение 00000000;

    --login – команда логина;

    --pin 11111111 – задаваемый PIN-код пользователя;

    --module /lib64/libASEP11.so — указывает путь до библиотеки libASEP11.so. Устанавливается в рамках пакета idprotectclient см. раздел «Установка драйверов на сервер и клиент».

    Сгенерируйте ключи на устройстве, для этого введите следующую команду:

    pkcs11-tool --slot 0 --login --pin 11111111 --keypairgen --key-type rsa:2048 --id 42 --label “test1 key” --module /lib64/libASEP11.so,

    --slot 0 — указывает, в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.;

    --login --pin 11111111 — указывает, что следует произвести логин под пользователем с PIN-кодом «11111111». Если у Вашей карты другой PIN-код пользователя, укажите его;

    --keypairgen --key-type rsa:2048 — указывает, что должны быть сгенерированы ключи длиной 2048 бит;

    --id 42 — устанавливает атрибут CKA_ID ключа. CKA_ID может быть любым;

    Запомните это значение! Оно необходимо для дальнейших шагов подготовки устройства к работе.

    --label “test1 key” — устанавливает атрибут CKA_LABEL ключа. Атрибут может быть любым;

    --module /lib64/libASEP11.so — указывает путь до библиотеки libASEP11.so. Устанавливается в рамках пакета idprotectclient см. раздел «Установка драйверов на сервер и клиент».

    Сгенерируйте запрос на сертификат с помощью утилиты openssl. Для этого введите следующие команды:


    Обратите внимание на -new -key 0:42, где 0 — номер виртуального слота с устройством, 42 — атрибут CKA_ID сгенерированных раннее ключей.

    Информацию, которую необходимо указать в запросе, следует задавать в поле "/C=RU/ST=Moscow/L=Moscow/O=Aladdin/OU=dev/CN=test1 (! Ваш_Пользователь!)/emailAddress=test1@mail.com".

    Необходимо установить переменные окружения

    и выпустить сертификат на пользователя.

    $ openssl x509 -CAkey cakey.pem -CA cacert.pem -req -in client.req -extensions client_cert -extfile pkinit_extensions -out client.pem –days 365

    Далее перекодируйте полученный сертификат из PEM в DER.

    Запишите полученный сертификат на токен.

    pkcs11-tool --slot 0 --login --pin 11111111 --write-object client.cer --type 'cert' --label 'Certificate' --id 42 --module /lib/libASEP11.so,

    --slot 0 — указывает, в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.;

    --login --pin 11111111 — указывает, что следует произвести логин под пользователем с PIN-кодом «11111111». Если у Вашей карты другой PIN-код пользователя, укажите его;

    --write-object ./client.cer — указывает, что необходимо записать объект и путь до него;

    --type 'cert' — указывает, что тип записываемого объекта – сертификат;

    'cert' --label 'Certificate' — устанавливает атрибут CKA_LABEL сертификата. Атрибут может быть любым;

    --id 42 — устанавливает атрибут CKA_ID сертификата. Должен быть указан тот же CKA_ID, что и для ключей;

    --module /lib64/libASEP11.so — указывает путь до библиотеки libASEP11.so.

    Настройка клиента. Проверка работоспособности

    Создайте на клиенте каталог /etc/krb5/. Скопируйте в /etc/krb5/ сертификат CA (cacert.pem) c сервера.

    Настройте kerberos в /etc/krb5.conf. Секцию [libdefaults] дополните следующими строками.

    kinit Когда появится строка запроса PIN-кода к карте, введите его.

    Для проверки того, что kerberos-тикет был успешно получен для пользователя, введите команду klist. Для удаления тикета — kdestroy.

    Для входа в домен по смарт-карте на экране входа в ОС вместо пароля введите PIN-код от смарт-карты.

    На этом настройка окончена. Да, к сожалению, система сама не поменяет и не подстроит login окно под смарт-карту, и оно будет стандартным, но если приложить немного секретных усилий, можно добиться красивого результата.

    В дистрибутивах Astra Linux доступны две версии Samba:

    • версия MIT (далее - Samba MIT);
    • версия Heimdal (далее Samba Heimdal);

    Необходимость применения той или иной версии Samba определяется используемой версией системы аутентификации Kerberos, которая также может быть представлена в версиях MIT и Heimdal (в основной состав ОС Astra Linux входит Kerberos MIT).

    В системах управления доменами FreeIPA или Astra Linux Directory (ALD) для авторизации используется Kerberos MIT, соответственно, в случае применения Samba Heimdal в таких системах не будет работать авторизация Kerberos (однако в остальном версии Samba полностью совместимы как по командам, так и по протоколам передачи данных).

    Проверить установленную версию Samba можно командой:

    sudo smbd -b | grep _USES_

    Пакеты версий Samba MIT и Samba Heimdal имеют одинаковые названия, поэтому при установке Samba следует внимательно следить за источниками установки пакетов. Samba Heimdal несовместима со многими пакетами, входящими в основной репозиторий Astra Linux и использующими авторизцию Kerberos MIT, поэтому устанавливать Samba Heimdal желательно на машину в базовой конфигурации ОС, и при установке необходимо в обязательном порядке контролировать возможные изменения в составе пакетов.

    Предполагается, что установка выполняется в системе, где настроен доступ к сетевому репозиторию Astra Linux. Файл /etc/apt/sources.list имеет вид:

    Пакет Samba Heimdal доступен в том же репозитории как отдельный компонент репозитория smb-heimdal. Для включения установки пакетов из этого компонента репозитория в файл /etc/apt/sources.list добавить отдельную строчку:

    После внесения изменений обновить каталог пакетов:

    Проверить доступные версии Samba:

    В примере выше видно, что для установки доступны две версии Samba:

    • 2:4.12.5+dfsg-3astra.ce4 из компонента репозитория orel/smb-heimdal
    • 2:4.9.5+dfsg-5astra.ce6 из компонента репозитория orel/main

    Перед установкой Samba Heimdal следует обязательно убедиться в том, что не будут затронуты (удалены) ранее установленные пакеты, для чего выполнить команду имитации установки (ключ -s):

    и проверить список устанавливаемых и удаляемых пакетов.

    В примере выше Samba Heimdal имеет версию (4.12.5) выше, чем Samba MIT (4.9.5), и, так как по умолчанию будет установлена более высокая версия, установку Samba Heimdal можно выполнить просто командой:

    Если требуется изменить принятый по умолчанию порядок предпочтения версий пакетов можно использовать механизм назначения приоритетов. Для этого:

    создать файл /etc/apt/preferences.d/00-smb-heimdal со следующим содержимым:

    Где:
    Строка Pin: release c=smb-heimdal определяет компонент репозитория smb-heimdal;
    Строка Pin-Priority: 1001 задает пакетам из этого репозитория приоритет установки (приоритет более 1000 задает установку даже с понижением версии).

    Обновить каталоги пакетов:

    В примере выше видно, что пакету из компонента orel/smb-heimdal задан приоритет 1001.

    Для удаления Samba Heimdal:

    Отключить компонент репозитория smb-heimdal и обновить каталоги пакетов:

    Проверить версии установленных пакетов и samba и libtdb1:

    Выполнить команду установки пакетов, указав версии пакетов samba* и libtdb1, которые нужно установить (для краткости версия samba задана переменной ver):

    ver=2:4.9.5+dfsg-5astra.ce6
    sudo apt install samba-common-bin=$ver smbclient=$ver libsmbclient=$ver samba-libs=$ver libwbclient0=$ver samba-common=$ver python-samba python-tdb libtdb1=1.3.16-2

    После выполнения указанных команд серверная часть Samba Heimdal будет удалена, клиентская часть будет заменена на клиентскую часть Samba MIT.

    Пакет samba (с поддержкой MIT Kerberos) входит в стандартные дистрибутивы Astra Linux, но по умолчанию не устанавливается.
    Дополнительно, в стандартный дистрибутив входит графический инструмент для настройки samba - fly-admin-samba .
    Вариант samba с поддержкой Heimdal Kerberos доступен по ссылке.

    Установку можно сделать из графического менеджера пакетов, или из командной строки.
    Можно сразу установить графический инструмент администрирования fly-admin- samba , пакет samba при этом установится автоматически:

    apt install fly-admin-samba

    После установки графического инструмента он станет доступен в меню "Пуск" > "Панель управления" > "Сеть" > "Общие папки (Samba)"

    Для быстрой настройки сервиса запустите графический инструмент:

    С помощью графического инструмента возможно выполнение большинства действий по администрированию разделяемых ресурсов сервиса samba :

    • Задание имени рабочей группы;
    • Запуск/остановка сервиса;
    • Определение разделяемых ресурсов;
    • Определение списка пользователей;
    • Настройка аутентификации пользователей через Керберос;

    При создании директорий, которые будут доступны через samba, следует установить на них права доступа 0775 и сделать владельцем пользователя nobody, группу nogroup:

    sudo chown nobody:nogroup /samba/share
    sudo chmod 775 /samba/share

    Основной файл настройки сервиса samba - /etc/samba/smb.conf - содержит значительное количество комментариев по проведению настройки.

    После изменения имени рабочей группы в файле /etc/samba/smb.conf
    для того, чтобы изменения немедленно стали доступны другим машинам
    нужно перезапустить не только сервис samba (smbd), но и сервис nmbd, обслуживающий запросы имён netbios:

    Инструменты командной строки для samba

    Для того, чтобы проверить разделяемые ресурсы samba, доступные в сети, можно использовать команду

    Эта команда выводит дерево рабочих групп, и принадлежащих им ресурсов (файлов, принтеров и пр.) всех серверов samba, доступных в сети.

    Список ресурсов конкретного сервера с именем hostname:

    Работа с разделяемой сервером hostname файловой системой sharename:

    После запуска команды в интерактивном режиме доступны команды для просмотра содержимого разделяемых каталогов, создания и удаления поддиректорий и пр.
    Полный список команд доступен по команде help

    Простой доступ к ресурсам

    Простой доступ к разделяемым ресурсам работает "из коробки", специальных настроек не требует, и поддерживается графическим менеджером файлов fly-fm (меню "Пуск" - "Менеджер файлов"). Для просмотра ресурсов в левой панели менеджера выбрать пункт "Сеть" - "Samba", и объявленные доступные ресурсы будут обнаружены автоматически.

    Для доступа к не объявленным ресурсам можно использовать пункт "Сеть" - "Создать сетевое место" в верхнем меню файлового менеджера, в открывшейся форме ввода указать имя сервиса, и его адрес.

    Примеры форматов задания адресов имеются непосредственно в форме ввода.

    Монтирование ресурсов

    Для монтирования ресурсов на клиентские машины следует установить пакет cifs-utils, который входит в дистрибутивы, но по умолчанию не устанавливается:

    После установки пакета монтирование ресурсов будет доступно командой mount , например:

    • //10.0.10.201/share - ресурc "share" на сервере 10.0.10.201
    • /mnt - точка монтирования

    Автоматическое монтирование ресурсов

    Для того, чтобы сетевой ресурс монтировался при загрузке системы, необходимо в конфигурационный файл /etc/fstab добавить строчку вида:

    //10.0.10.201/share /mnt cifs credentials=/root/.smbclient,rw,nosharesock,vers=1.0,soft,noperm 0 0

    Комментарий по используемым и возможным опциям:

    Имя файла, содержащего логин и пароль samba для автоматического монтирования. Формат файла:

    Параметр domain можно не указывать, если доменное имя не используется.

    Логин и пароль можно указать непосредственно в файле /etc/fstab (опции username= и password=), однако,
    следует помнить, что файл /etc/fstab обычно открыт на чтение для всех пользователей,
    так что логин и пароль рекомендуется указывать в отдельном файле, с ограниченным доступом.

    Клиент не выполняет проверку прав доступа. Это позволяет предоставить доступ к файловым объектам этой точки монтирования другим локальным пользователям клиентской системы.
    Обычно используется, когда сервер поддерживает Unix-расширения CIFS (CIFS Unix Extensions), а идентификаторы пользователей/групп на клиенте и сервере различаются, что не позволяет корректно проверять права доступа.
    Этот параметр не влияет на обычную проверку списков контроля доступа (ACL) на целевой машине, выполняемую на сервере (проверка пользовательских ACL на сервере выполняется при монтировании).

    Предполагается, что у нас уже есть установленный сервер FreeIPA.
    При стандартной установке FreeIPA на таком сервере уже установлены службы samba и winbind.

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

    Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)

    Astra Linux Special Edition РУСБ.10015-16 исп. 1 и исп. 2

    Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)

    Astra Linux Common Edition 2.12

    Если при установке сервера не была применена опция --setup-adtrust (установка компонент для работы с samba и Windows AD), то доустановить необходимые компоненты:

    sudo kinit admin
    sudo ipa-adtrust-install --add-sids --add-agents

    Отдельно выполнять команду добавления службы "ipa service-add . ", как рекомендуется во многих Интернет-инструкциях, не нужно: служба добавится автоматически.

    После установки ipa-adtrust-install чтение конфигурации samba на сервере будет доступно только суперпользователю.
    Монтирование и авторизация через samba на сервере для простых пользователей работать не будут.
    Монтировать разделяемые ресурсы следует только с компьютеров-клиентов.

    Службы samba и winbind теперь будут управляться командой ipactl, в списке служб появится службы smb и winbind:

    В конфигурационном файле сервиса samba /etc/samba/smb.conf останется только отсылка в БД "registry", куда будут перенесены все конфигурационные параметры:

    Опция "config backend = registry" указывает, что все конфигурационные параметры будут храниться в БД registry, а параметры, указанные в файле /etc/samba/smb.conf после этой опции будут игнорироваться.
    Можно создать комбинированную конфигурацию, заменив "config backend = registry" на "include = registry", что позволит задавать параметры в файле /etc/samba/smb.conf.

    Проверить конфигурацию можно стандартной командой testparm, однако теперь только от имени суперпользователя:

    Перед редактированием БД "registry" рекомендуем сохранить текущую конфигурацию (вывод команды sudo testparm), чтобы иметь возможность восстановить конфигурацию в случае ошибок.

    Редактировать БД "registry" можно с помощью специальной утилиты samba-regedit (устанавливается автоматически при установке пакета samba):

    При этом параметры samba хранятся в ветке /HKEY_LOCAL_MACHINE/SOFTWARE/Samba/smbconf:


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

    При этом конфигурационные данные можно импортировать в registry из файлов с синтаксисом конфигурационного файла samba с помощью команды net.
    Например, создадим разделяемые ресурсы homes и share, для чего:

    • Создадим в любом редакторе файл homes.txt с описанием ресурса homes:

    [share]
    comment = anonymous share
    create mask = 0666
    directory mask = 0777
    guest ok = yes
    guest only = yes
    path = /srv/share
    read only = no

    • Импортируем созданные описания ресурсов в конфигурацию samba:

    sudo net conf import homes.txt homes
    sudo net conf import share.txt share

    После внесения изменений в registry изменения применяются автоматически, и, в отличие от работы с конфигурационным файлом, службу samba перезапускать не нужно.

    Для тестирования создадим на сервере условный домашний каталог пользователя admin (т.е. администратора FreeIPA, создаваемого "по умолчанию"):

    sudo mkhomedir_helper admin

    После выполнения указанных выше действий ресурс (в данном примере - автоматически монтируемый домашний каталог пользователя см. специальный ресурс homes) будет доступен на клиентской машине с авторизацией через Kerberos:

    Монтирование разделяемых ресурсов также будет доступно с авторизацией Kerberos (опции монтирования cruid, user, sec):

      На контроллере домена:

    Если при установке контроллера домена не была применена опция --setup-adtrust (установка компонент для работы с samba и Windows AD), то доустановить необходимые компоненты:

    sudo kinit admin
    sudo ipa-adtrust-install --add-sids --add-agents
      Рекомендуется назначить файловому серверу статический IP-адрес;

    и в файле /etc/hosts указать настройки IP для этого имени;

    Ввести файловый сервер в домен:

    Установить на файловом сервере необходимые пакеты:

    sudo apt install libwbclient-sssd samba samba-client

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

    Создание разделяемого файлового ресурса (например /home/share) и назначение ему прав доступа:

    sudo mkdir -p /home/share
    sudo chown nobody:nogroup /home/share

    Получен ие таблицы ключей:

    Настройку конфигурации службы samba (файл /etc/samba/smb.conf):

    [homes]
    browsable = no
    writable = yes

    [shared]
    path = /home/share
    writable = yes
    browseable = yes

    Перезапуск службы samba:

    • Ошибка соединения NT_STATUS_BAD_NETWORK_NAME при попытке доступа к ресурсу говорит о том, что забыли создать на сервере каталог (в данном случае - домашний каталог пользователя).

    В любой даже самой маленькой организации необходим файловый сервер. Организовать его можно различными способами. Для этих целей можно использовать как аппаратные так и программные средства. Если есть средства то лучше купить готовый продукт NAS. Ну а если их нет то придется настраивать программный продукт. И все это ляжет на плечи системного администратора. Для того чтобы облегчить жизнь админам особенно начинающим решил написать статью. В которой подробно опишу процесс установки и настройки доступа к файловому серверу. Будем использовать Samba и устанавливать его на Astra Linux.

    Админ старайся все серверы поднимать на Linux.

    Настройка файлового сервера с графической оболочкой

    И так у нас есть установленная ОС Astra Linux. Дальже запускаем термина и устанавливаем Samba. Плюсом к Sambe установим графическую оболочку. Для начала нужно получить парва супер пользователя командой.

    Дальше устанавливаем Samba с графической оболочкой командой.

    После установки сразу создадим общею папку командой.

    создание общей папки Linux

    Панель управления astra linux

    Графическая оболочка samba

    Добавляем общей ресусрс.

    Общие папки samba

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

    настройка samba server

    Открывать общей доступ всем не правильно и не безопасно.

    Админ ограничивай доступ к общим ресурсам каждому пользователю.

    samba настройка доступа

    Пользователей можно создать через политику безопасности. Попасть в неё можно через панель управления и раздел безопасность. Добавляем пользователя настраиваем необходимые параметры.

    Важная особенность пользователь станет активным только после создания пароля.

    Проверяем доступность например из Windows. Вводим адрес сервера и логин пароль.

    файловый сервер на Linux для Windows сетей

    На этом установка и настройка файлового сервера (Samba) на Astra Linux завершена. Остается только добавить необходимое количество пользователей и общих ресурсов.

    Читайте также: