Настройка клиентов Linux для Файлы Azure с помощью Доменные службы Microsoft Entra

Область применения: ✔️ общие папки SMB

Файлы Azure поддерживает аутентификацию на основе идентификации через Server Message Block (SMB) для виртуальных машин Linux с использованием протокола аутентификации Kerberos с Доменные службы Microsoft Entra. В этой статье показано, как подключить клиент Linux к управляемому домену Доменные службы Microsoft Entra и подключить общий файловый ресурс Azure с помощью аутентификации Kerberos.

Дополнительные сведения о поддерживаемых параметрах и рекомендациях см. в разделе Обзор параметров аутентификации в Файлы Azure на основе идентификационных данных для доступа к SMB.

Замечание

Microsoft Entra Kerberos отличается от Доменные службы Microsoft Entra и не поддерживается для Linux-клиентов, независимо от дистрибутива Linux или гибридных или облачных идентичностей. Для источников идентификации и поддерживаемых клиентских операционных систем см. Обзор опций аутентификации на основе идентификации Файлы Azure для доступа SMB.

Замечание

В этой статье используется Ubuntu для примера шагов. Похожие конфигурации работают для клиентов RHEL и SLES, позволяя монтировать файловые ресурсы Azure с помощью Доменные службы Microsoft Entra.

Ограничения клиента SMB для Linux

Нельзя использовать аутентификацию на основе удостоверений для подключения общих папок Azure Files на клиентах Linux при загрузке системы с использованием записей fstab. Это ограничение существует, потому что клиент не может получить билет Kerberos заранее, чтобы выполнить монтирование при загрузке системы. Можно использовать fstab запись и указать noauto параметр, чтобы пользователь мог подключить общую папку после входа с помощью простой команды подключения без всех параметров. Вы также можете использовать autofs, чтобы подключить общую папку в момент доступа.

Необходимые условия

Прежде чем настроить клиент Linux для использования аутентификации Доменные службы Microsoft Entra через SMB для файловых ресурсов Azure, выполните следующие требования:

  • Виртуальная машина Linux под управлением Ubuntu 18.04+, или эквивалентная виртуальная машина RHEL или SLES. Если виртуальная машина работает в Azure, она должна иметь как минимум один сетевой интерфейс в виртуальной сети с подключением к управляемому домену Доменные службы Microsoft Entra.
  • Арендатор Microsoft Entra с развернутым и настроенным управляемым доменом Доменные службы Microsoft Entra. Убедитесь, что управляемый домен работает и синхронизация хэша паролей включена.
  • Файловый ресурс Azure по протоколу SMB в учетной записи хранения, настроенной для аутентификации Доменные службы Microsoft Entra.
  • Учетные данные root или доступ пользователя к учетной записи локального пользователя с полными правами sudo (в этом руководстве — localadmin).
  • Виртуальная машина Linux ещё не подключена к другому домену. Если это так, выйдите из этого домена, прежде чем присоединить виртуальную машину к управляемому домену.
  • Учетная запись пользователя в управляемом домене с разрешением подключать компьютеры к домену. Пользователь должен изменить пароль Microsoft Entra после включения Доменные службы Microsoft Entra, чтобы сгенерировать необходимые хэши паролей.

Установка пакета samba не является строго необходимой, но предоставляет некоторые полезные инструменты и автоматически предоставляет другие пакеты, например samba-common и smbclient. Выполните следующие команды, чтобы установить его. Если вы запрашиваете входные значения во время установки, оставьте их пустыми.

sudo apt update -y
sudo apt install samba winbind libpam-winbind libnss-winbind krb5-config krb5-user keyutils cifs-utils

Это wbinfo средство является частью набора samba и полезно для проверки подлинности и отладки, таких как проверка доступности контроллера домена, проверка того, к какому домену присоединен компьютер, и поиск сведений о пользователях.

Убедитесь, что Linux-хост синхронизирует время с управляемым доменом. Смотрите документацию по вашему дистрибутиву Linux. Для некоторых дистрибутивов это можно сделать с помощью systemd-timesyncd. Измените /etc/systemd/timesyncd.conf, включив следующую конфигурацию. Замените ntp.server на тот же хост или IP-адрес сервера по протоколу Network Time Protocol (NTP), который используется управляемым доменом.

[Time]
NTP=ntp.server
FallbackNTP=ntp.ubuntu.com

Затем перезапустите службу:

sudo systemctl restart systemd-timesyncd.service

Включить аутентификацию Kerberos с помощью Доменные службы Microsoft Entra

Следуйте этим шагам, чтобы включить аутентификацию Kerberos с помощью Доменные службы Microsoft Entra. Для получения дополнительной информации о настройке Samba см. раздел «Настройка Samba как члена домена».

Подключитесь к Доменные службы Microsoft Entra и откройте для себя сервисы

Настройте виртуальную сеть так, чтобы использовать IP-адреса управляемого контроллера домена в качестве DNS-серверов. Дополнительные сведения см. в статье Обновление настроек DNS для виртуальной сети Azure.

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

ping contosodomain.contoso.com
PING contosodomain.contoso.com (10.0.2.4) 56(84) bytes of data.
64 bytes from pwe-oqarc11l568.internal.cloudapp.net (10.0.2.4): icmp_seq=1 ttl=128 time=1.41 ms
64 bytes from pwe-oqarc11l568.internal.cloudapp.net (10.0.2.4): icmp_seq=2 ttl=128 time=1.02 ms
64 bytes from pwe-oqarc11l568.internal.cloudapp.net (10.0.2.4): icmp_seq=3 ttl=128 time=0.740 ms
64 bytes from pwe-oqarc11l568.internal.cloudapp.net (10.0.2.4): icmp_seq=4 ttl=128 time=0.925 ms

^C

--- contosodomain.contoso.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3016ms
rtt min/avg/max/mdev = 0.740/1.026/1.419/0.248 ms

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

nslookup
> set type=SRV
> _ldap._tcp.contosodomain.contoso.com.
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:

_ldap._tcp.contosodomain.contoso.com service = 0 100 389 pwe-oqarc11l568.contosodomain.contoso.com.
_ldap._tcp.contosodomain.contoso.com service = 0 100 389 hxt4yo--jb9q529.contosodomain.contoso.com.

Если вы не можете разрешить управляемые доменные или сервисные записи, проверьте конфигурацию DNS для Доменные службы Microsoft Entra и проверьте сетевое подключение к управляемым контроллерам домена.

Настройка имени узла и полностью квалифицированного доменного имени (FQDN)

С помощью текстового редактора обновите /etc/hosts файл с окончательным полным доменным именем (после присоединения к домену) и псевдонимом хоста. IP-адрес пока не имеет значения, потому что эта строка в основном переводит короткое имя хоста в FQDN. Дополнительные сведения см. в разделе "Настройка Samba в качестве члена домена".

127.0.0.1       contosovm.contosodomain.contoso.com contosovm
#cmd=sudo vim /etc/hosts
#then enter this value instead of localhost "ubuntuvm.contosodomain.contoso.com UbuntuVM"

Теперь убедитесь, что ваше имя хоста правильно разрешается, выполнив следующие три команды.

Используйте getent hosts для подтверждения того, что короткое имя хоста разрешается в FQDN. Вы можете игнорировать возвращённый IP-адрес.

getent hosts contosovm
127.0.0.1       contosovm.contosodomain.contoso.com contosovm

Используйте dnsdomainname, чтобы убедиться, что доменное имя настроено правильно.

dnsdomainname
contosodomain.contoso.com

Используйте hostname -f, чтобы убедиться, что полное доменное имя (FQDN) успешно разрешается.

hostname -f
contosovm.contosodomain.contoso.com

Замечание

В некоторых дистрибутивах Linux необходимо выполнить команду hostnamectl, чтобы обновить hostname -f:

hostnamectl set-hostname contosovm.contosodomain.contoso.com

Настройка krb5.conf

Настройте /etc/krb5.conf так, чтобы для аутентификации можно было связаться с центром распределения ключей Kerberos (KDC) в Доменные службы Microsoft Entra. Дополнительные сведения см. в документации по MIT Kerberos. Ниже приведен пример /etc/krb5.conf файла.

[libdefaults]
        default_realm = CONTOSODOMAIN.CONTOSO.COM
        dns_lookup_realm = false
        dns_lookup_kdc = true

Настройка smb.conf

Определите путь к smb.conf.

sudo smbd -b | grep "CONFIGFILE"
   CONFIGFILE: /etc/samba/smb.conf

Измените конфигурацию SMB, чтобы она выступала в роли члена домена Доменные службы Microsoft Entra. В следующем примере используется рекомендуемый бэкенд rid idmap.

[global]
   workgroup = CONTOSODOMAIN
   security = ADS
   realm = CONTOSODOMAIN.CONTOSO.COM

   winbind refresh tickets = Yes
   vfs objects = acl_xattr
   map acl inherit = Yes
   store dos attributes = Yes

   dedicated keytab file = /etc/krb5.keytab
   kerberos method = secrets and keytab

   winbind use default domain = Yes

   load printers = No
   printing = bsd
   printcap name = /dev/null
   disable spoolss = Yes

   log file = /var/log/samba/log.%m
   log level = 1

   idmap config * : backend = tdb
   idmap config * : range = 3000-7999

   idmap config CONTOSODOMAIN : backend = rid
   idmap config CONTOSODOMAIN : range = 10000-999999

   template shell = /bin/bash
   template homedir = /home/%U

Принудительно заставьте winbind перечитать изменённый файл конфигурации.

sudo smbcontrol all reload-config

Присоединяйтесь к управляемому домену

Используйте net ads join команду, чтобы присоединить хост к управляемому домену. Аккаунт должен иметь разрешение на подключение компьютеров к управляемому домену. Если команда возвращает ошибку, см. раздел «Устранение неполадок с членами домена Samba».

sudo net ads join -U contososmbadmin

Enter contososmbadmin's password:
Using short domain name -- CONTOSODOMAIN
Joined 'CONTOSOVM' to dns domain 'contosodomain.contoso.com'

Убедитесь, что DNS-запись существует для этого хоста в управляемом домене.

nslookup contosovm.contosodomain.contoso.com 10.0.2.5
Server:         10.0.2.5
Address:        10.0.2.5#53

Name:   contosovm.contosodomain.contoso.com
Address: 10.0.0.8

Настройка nsswitch.conf

Настройтеnsswitch.conf, если пользователи будут активно входить на клиентские компьютеры и получать доступ к файловым ресурсам Azure. Если запланированный доступ ограничен приложениями, использующими пользовательскую или компьютерную учетную запись и требующие аутентификации Kerberos для доступа к файловому ресурсу, этот шаг можно пропустить.

После подключения хоста к управляемому домену добавьте winbind библиотеки в пользовательские и групповые поисковые пути. Используйте текстовый редактор для редактирования /etc/nsswitch.conf и добавления следующих записей:

passwd:         compat systemd winbind
group:          compat systemd winbind

Включите службу winbind для автоматического запуска при перезагрузке.

sudo systemctl enable winbind

Перезапустите сервис и проверьте её статус.

sudo systemctl restart winbind
sudo systemctl status winbind

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

getent passwd contososmbadmin
contososmbadmin:*:12604:10513::/home/contososmbadmin:/bin/bash
getent group 'domain users'
domain users:x:10513:

Если предыдущие шаги не помогут, проверьте, доступен ли управляемый контроллер домена с помощью инструмента wbinfo :

wbinfo --ping-dc

Настройка PAM для winbind

Если пользователям нужно войти на клиентские машины и получить доступ к файловым ресурсам Azure, настройте PAM для Winbind. Если доступ ограничен приложениями, использующими пользовательскую или компьютерную учетную запись и требующие аутентификации Kerberos для доступа к файловому ресурсу, этот шаг можно пропустить.

Поместите winbind в стек аутентификации, чтобы управляемые пользователи домена аутентифицировали через winbind. Настройте PAM (Pluggable Authentication Module) для winbind. Вторая команда гарантирует, что система создаёт домашнюю директорию для пользователя домена при входе.

sudo pam-auth-update --enable winbind
sudo pam-auth-update --enable mkhomedir

Проверьте, что конфигурация аутентификации PAM содержит правильные pam_winbind.so аргументы в /etc/pam.d/common-auth:

grep pam_winbind.so /etc/pam.d/common-auth
auth    [success=1 default=ignore]      pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass

Если команда не возвращает вывод, повторно запустите sudo pam-auth-update --enable winbind , чтобы убедиться, что winbind добавлен в стек аутентификации PAM.

Теперь вы можете войти в эту систему как управляемый пользователь домена через SSH suили другой метод аутентификации.

su - contososmbadmin
Password:

Проверьте аутентификацию Доменные службы Microsoft Entra на Linux

Чтобы убедиться, что клиентская машина подключена к управляемому домену, проверьте FQDN клиента с помощью управляемого DNS-сервера и убедитесь, что DNS-запись существует для клиента. Во многих случаях <dnsserver> это то же самое, что и управляемое доменное имя, к которому присоединён клиент.

nslookup <clientname> <dnsserver>

Далее запустите klist , чтобы просмотреть тикеты в кэше Kerberos:

klist

Вывод должен включать запись, начинающуюся с , krbtgt которая выглядит похоже на:

krbtgt/CONTOSODOMAIN.CONTOSO.COM@CONTOSODOMAIN.CONTOSO.COM

Если вы не настроили PAM для winbind, klist может не отобразить запись билета. В этом случае можно вручную пройти проверку подлинности пользователя, чтобы получить билеты:

wbinfo -K contososmbadmin

Вы также можете выполнить команду в рамках скрипта:

wbinfo -K 'contososmbadmin%SUPERSECRETPASSWORD'

Подключение общей папки

После включения проверки подлинности Kerberos и присоединения вашей виртуальной машины Linux к управляемому домену вы сможете смонтировать общий файловый ресурс.

Используйте следующий параметр подключения со всеми моделями управления доступом, чтобы включить безопасность Kerberos: sec=krb5 При использовании sec=krb5не укажите имя пользователя и пароль. Рассмотрим пример.

sudo mount -t cifs $SMB_PATH $MNT_PATH -o sec=krb5,cruid=$UID,serverino,nosharesock,actimeo=30,mfsymlinks

Замечание

Эта функция поддерживает только серверную модель управления доступом, которая использует NT ACL без битов режима. Инструментов Linux для обновления списков управления доступом NT немного, поэтому обновляйте их через Windows. В настоящее время не поддерживаются модели управления доступом, управляемые клиентом (modefromsid,idsfromsid), и модели управления доступом, преобразованные клиентом (cifsacl).

Дополнительные параметры подключения SMB для Файлы Azure в Linux

Монопользовательское подключение и подключение для нескольких пользователей

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

В сценарии многопользовательского монтирования по-прежнему существует одна точка монтирования, но несколько пользователей управляемого домена могут получить доступ к этой же точке монтирования. В сценариях, когда несколько пользователей на одном клиенте обращаются к одной и той же общей папке и система настроена для Kerberos и подключена с параметром sec=krb5, рассмотрите возможность использования параметра multiuser для подключения.

Разрешения для файла

Разрешения файлов имеют значение, особенно если клиенты Linux и Windows получают доступ к общей папке. Чтобы преобразовать разрешения файлов в DACL на файлах, используйте параметр подключения по умолчанию, например file_mode=<>,dir_mode=<>. Клиент применяет только разрешения файлов, указанные как file_mode и dir_mode. Сервер применяет управление доступом на основе дескриптора безопасности файла или каталога.

Владение файлом

Владение файлами имеет значение, особенно если клиенты Linux и Windows получают доступ к общей папке. Выберите один из следующих параметров монтирования, чтобы преобразовать UID/GID владения файла в SID владельца/группы на DACL файла.

  • Используйте стандартный вариант, например uid=<>,gid=<>.
  • Настройте отображение UID/GID через RFC2307 и Доменные службы Microsoft Entra с помощью nss_winbind или nss_sssd.

Согласованность кэша атрибутов файлов

Производительность важна, даже если атрибуты файла не всегда точны. Значение по умолчанию для actimeo равно 1 (секунда), что означает, что атрибуты файла запрашиваются снова с сервера, если кэшированные атрибуты старше 1 секунды. Увеличение значения до 60 означает, что атрибуты кэшируются не менее одной минуты. Для большинства вариантов использования используйте значение 30 для этого параметра (actimeo=30).

Для новых ядер рассмотрите возможность более детальной настройки функций actimeo . Вы можете использовать acdirmax для кэширования переоценки записей каталога и acregmax для кэширования метаданных файла, например, acdirmax=60,acregmax=5.

Следующий шаг

Чтобы узнать, как подключить общую папку SMB в Linux, см.: