Изучаем Linux, 302 (смешанные среды): Интеграция с Active Directory

Статья последний раз была обновлена 28.03.2023

  • Программа: интеграция и работа в доменной среде Active Directory.
  • Автор: Трейси Бост — консультант и преподаватель, писатель. Опытный разработчик программного обеспечения и проектировщик систем. Он специализируется на интеграции корпоративных приложений. Был сопредседателем рабочей группы по бизнес-правилам Организации по поддержке стандартов ипотечной отрасли (MISMO) и сопредседателем секции промышленных стандартов на симпозиуме RuleML2010. Работал в различных отраслях, в том числе в ипотеке, недвижимости и некоммерческом секторе.
  • Описание: начиная с операционной системы Windows 2000, компания Microsoft предлагает собственную службу каталогов под названием Active Directory, позже переименованную в Active Directory Domain Services (AD DS). Службы AD DS используют преимущества таких популярных протоколов, как LDAP (для управления ресурсами) и Kerberos (для аутентификации), и тесно интегрированы со службой доменных имен DNS. Если вы используете среду AD DS, то интеграция в нее сервера Linux поможет централизовать управление идентификационной информацией пользователей и обеспечить поддержку файловых служб и служб печати Linux. Однако при такой интеграции могут возникнуть серьезные проблемы. К счастью, в Samba имеется решение для интеграции Linux с AD DS, не требующее внесения изменений в службу каталогов.
  • Уровень сложности: сложный.

Об этой серии

Эта серия статьей поможет вам освоить задачи администрирования операционной системы Linux. Вы можете использовать материалы этих статей для подготовки к экзаменам программы LPIC третьего уровня (LPIC-3).

В этой статье рассматриваются следующие темы:

  • Доменные службы Active Directory (AD DS).
  • Механизмы взаимодействия Samba со службами AD DS.
  • Настройка Samba для работы со службами AD DS.
  • Взаимодействие со службами AD DS.

Эта статья поможет вам подготовиться к сдаче экзамена LPI 302 (специализация «Смешанные среды») и содержит материалы цели 314.3 темы 314. Цель имеет вес 2.

Предварительные требования

Чтобы извлечь наибольшую пользу из наших статей, необходимо обладать продвинутыми знаниями о Linux и иметь работоспособный компьютер с Linux, на котором можно будет выполнять все встречающиеся команды. В частности, предполагается, что читатель умеет работать с командной строкой Linux и в общих чертах понимает назначение Samba. Для выполнения примеров этой статьи на вашем компьютере должно быть инсталлировано программное обеспечение Samba. Кроме того, необходимо иметь доступ к компьютеру под управлением операционной системы Windows Server с запущенными службами AD DS.

О факультативном экзамене LPI-302

Как и многие другие программы, программа сертификации Linux Professional Institute (LPIC) предусматривает различные уровни сертификации, где для получения каждого последующего уровня необходимо обладать более глубокими знаниями и практическим опытом. Экзамен LPI-302 — это факультативный экзамен третьего уровня программы LPIC, требующий продвинутых знаний в области системного администрирования Linux.

Для получения сертификата LPIC третьего уровня (LPIC-3) необходимо успешно сдать два экзамена первого уровня (101 и 102), два экзамена второго уровня (201 и 202), а также базовый экзамен 301 третьего уровня (LPIC-3). Если вы получили сертификат третьего уровня, вы можете сдавать факультативные экзамены по определенным специализациям, например, экзамен LPI-302.

Что такое Active Directory?

Если в вашей сети имеются множество Windows-клиентов или уже работают службы AD DS, то стоит подумать об интеграции Linux-серверов в доменное окружение Active Directory. Службы AD DS используются в качестве средства аутентификации и службы каталога со времен операционной системы Windows 2000. Существенным отличием от ранее используемых основного и резервного контроллеров домена стало то, что в AD DS используются контроллеры домена, которые можно реплицировать между собой.

Несмотря на существование различных методов интеграции Linux-серверов в домен AD DS, Samba позволяет упростить управление и настройку, не требуя внесения изменений в схему AD DS или инсталляции дополнительного программного обеспечения на компьютере с Windows Server. Сервер Samba не может работать в качестве контроллера домена Active Directory, но может работать в качестве рядового (member) сервера, взаимодействуя со службами AD DS.

Службы AD DS основаны на следующих стандартах сети Интернет:

  • Система доменных имен DNS (Domain Name System), используемая для разрешения имен.
  • Протокол Kerberos версии 5, предназначенный для выполнения аутентификации.
  • Протокол LDAP (Lightweight Directory Access Protocol) версии 3, обеспечивающий работу служб каталогов.

Протокол LDAP 3

Протокол LDAP появился как ответ на потребность в более легкой службе каталогов по сравнению с его предшественником, протоколом X.500. Первая версия LDAP была выпущена в 1993 году, и с тех пор этот протокол был существенно усовершенствован. На сегодняшний день он является Интернет-стандартом де-факто для служб каталогов.

Microsoft заявляет о стопроцентном соответствии спецификации LDAP. В таблице 1 перечислены RFC-документы, содержащие расширенную информацию о чтении и выполнении операций в LDAP.

Таблица 1. RFC-документы, содержащие информацию о LDAP.

Номер RFC Поддерживается
2251 LDAP v3 Начиная с Windows 2000
2252 Attribute Syntax Definitions Начиная с Windows 2000
2253 UTF-8 String Representation of Distinguished Names Начиная с Windows 2000
2254 LDAP Search Filters Using Strings Начиная с Windows 2000
2255 The LDAP URL Format Начиная с Windows 2000
2256 The X.500 User Schema for use with LDAPv3 Начиная с Windows 2000
2829 Authentication Methods for LDAP Начиная с Windows 2000
2830 Extension for Transport Layer Security Начиная с Windows 2000
2589 Extensions for Dynamic Directory Services Начиная с Windows Server 2003
2798 Defines the inetOrgPerson LDAP Object Class Начиная с Windows Server 2003
2831 Using Digest Authentication as an SASL Mechanism Начиная с Windows Server 2003
2891 LDAP Control Extension for Server Side Sorting of Search Results Начиная с Windows Server 2003

Протокол Kerberos 5

Протокол Kerberos был разработан Массачусетским технологическим институтом в качестве сетевого протокола аутентификации в то время, когда в глобальных и локальных сетях остро встала проблема безопасности. Этот протокол обеспечивает стойкую криптографическую защиту, позволяющую клиентам и серверам передавать свои учетные данные друг другу. Для такого обмена информацией используются мандаты доступа (tickets) и аутентификаторы (authenticators).

В AD DS протокол Kerberos версии 5 используется для аутентификации пользователей. Контроллер домена Active Directory выступает в роли центра распределения ключей аутентификации клиентов Kerberos.

Система имен DNS

Службы AD DS тесно интегрированы с системой имен DNS, которая используется в следующих целях:

  • Поиск контроллеров домена AD DS.
  • Описание иерархической организационной структуры с использованием имен доменов, входящих в ее состав.
  • Разрешение имен для области контроллера домена и для доменов AD DS.

Следует помнить о том, что сама по себе служба AD DS не является DNS-сервером и не выполняет его задач. Как правило, DNS-сервер хранит записи о зонах и доступных ресурсах, тогда как AD DS использует то же самое пространство имен для хранения объектов домена. В таблице 2 приведено сравнение типовых ролей, выполняемых системой DNS и службами AD DS.

Таблица 2. Роли DNS и AD DS.

DNS AD DS
Хранит имена доменов в качестве записей ресурсов DNS Хранит DNS-имена в качестве объектов (dnsZone)
Хранит имена компьютеров в качестве записей ресурсов DNS Хранит имена компьютеров в качестве записей объектов

Служебная запись, или SRV-запись (service record) DNS содержит информацию, определяющую местоположение серверов для указанных служб. Для правильной работы служб AD DS серверы DNS должны поддерживать записи описания ресурсов (RR). Запись SRV RR сопоставляет имя службы и имя сервера, на котором она запущена. Контроллеры домена и клиенты служб AD DS используют SRV-записи для определения IP-адресов контроллеров домена.

Настройка поддержки служб AD DS в Samba

Прежде чем Linux-сервер сможет взаимодействовать со службами AD DS, необходимо убедиться в том, что установленное программное обеспечение Samba поддерживает протоколы LDAP и Kerberos. Если вы инсталлировали готовую скомпилированную версию Samba, то, вероятно, в ней уже присутствует поддержка LDAP и Kerberos 5. Если же вы инсталлировали Samba из исходного кода, то необходимо убедиться в том, что была включена поддержка библиотек kbr5 и ldap. Как правило, для этого достаточно отредактировать файл заголовков include/config.h перед запуском команды make следующим образом:

#define HAVE_KRB5 1
#define HAVE_LDAP 1

В зависимости от дистрибутива Linux имена библиотек могут отличаться.

После инсталляции Samba на ваш компьютер, можно с помощью системного демона smbd выяснить, какие функции она поддерживает:

Листинг 1. Часть списка функций Kerberos 5 и LDAP, поддерживаемых Samba.

[tbost@samba3 ~]$ smbd -b | grep KRB
 HAVE_KRB5_H
 HAVE_KRB5_LOCATE_PLUGIN_H
 HAVE_ADDRTYPE_IN_KRB5_ADDRESS
 HAVE_DECL_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE
 HAVE_DECL_KRB5_GET_CREDENTIALS_FOR_USER
 HAVE_INITIALIZE_KRB5_ERROR_TABLE
 HAVE_KRB5
 HAVE_KRB5_AUTH_CON_SETUSERUSERKEY
 HAVE_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE
 HAVE_KRB5_C_ENCTYPE_COMPARE
 HAVE_KRB5_C_VERIFY_CHECKSUM
 HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER
 HAVE_KRB5_ENCRYPT_BLOCK
 HAVE_KRB5_ENCRYPT_DATA
 HAVE_KRB5_ENCTYPE_TO_STRING
.....
[tbost@samba3 ~]$smbd -b | grep LDAP
 HAVE_LDAP_H
 HAVE_LDAP
 HAVE_LDAP_ADD_RESULT_ENTRY
 HAVE_LDAP_INIT
 HAVE_LDAP_INITIALIZE
 HAVE_LDAP_SASL_WRAPPING
 HAVE_LDAP_SET_REBIND_PROC
 HAVE_LIBLDAP
 LDAP_SET_REBIND_PROC_ARGS

В листинге 1 показана поддержка библиотек krb5 и ldap для дистрибутива Fedora. В зависимости от вашего дистрибутива вывод этих команд может отличаться. Несмотря на это, убедитесь, что в выводе команд присутствуют, как минимум, строки HAVE_KRB5_H и HAVE_LDAP_H.

Kerberos и NTP

Протокол Kerberos предполагает, что сервер Samba самостоятельно синхронизирует время с доменом. Обычно службы AD DS используют в качестве сервера времени контроллер домена. Вы можете настроить протокол NTP (протокол сетевого времени) на компьютере Linux, указав в качестве сервера времени контроллер домена Windows.

Samba и Kerberos

Samba может использовать протокол Kerberos для аутентификации пользователей в домене AD DS. Для настройки Samba найдите в директории /etc файл krb5.conf, в который нужно будет внести некоторые изменения. Как минимум, в разделе realms этого файла нужно указать имя домена, а также полное доменное имя (FQDN) сервера в домене Windows, выполняющего аутентификацию для служб AD DS, как показано в листинге 2:

Листинг 2. Настройка конфигурации в файле krb5.conf.

[realms]
LPIC302.LOCAL= {
kdc = wins3.lpic302.local 
admin_server =wins3.lpic302.local
default_domain = LPIC302.LOCAL
}

В листинге 2 показан простой пример конфигурации с использованием имени LPIC302.LOCAL в качестве имени домена AD DS. Имя домена должно быть набрано заглавными буквами, иначе Kerberos не сможет подключиться. Директива kdc указывает на контроллер AD DS с именем wins3.lpic302.local. Кроме того, контроллер домена указан в директиве admin_server. Параметр default_domain определяет для Kerberos имя домена, которое будет использоваться по умолчанию в тех случаях, когда оно не будет указано пользователем.

Демон Winbind

Демон Winbind облегчает процесс аутентификации пользователей в домене AD DS. По существу, нужно настроить систему PAM-модулей на использование модуля pam_winbind, как показано в листинге 3.

Листинг 3. Настройка PAM на использование pam_winbind.

auth sufficient pam_winbind.so
auth sufficient pam_unix.so use_first_pass
auth required pam_stack.so service=system-auth
auth required pam_nologin.so
account sufficient pam_winbind.so
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
session optional pam_console.so

В листинге 3 показан измененный файл system-auth из директории /etc/pam.d в дистрибутиве на базе Fedora. В зависимости от вашего дистрибутива имя файла аутентификации может отличаться. Обычно именем файла является services или login.

Место размещения строки с модулем pam_winbind.so играет важную роль. Если вы предполагаете, что пользователи в основном будут авторизоваться с использованием учетных записей AD DS, а не локального файла passwd, то строка с модулем pam_winbind.so должна стоять первой. В противном случае вы обнаружите в файле auth.log множество сообщений о неудачных попытках входа.

Служба Name Service Switch

Служба Name Service Switch (NSS) предоставляет стандартный механизм, с помощью которого Linux-компьютеры могут взаимодействовать с распространенными службами аутентификации. При использовании этих служб Linux-компьютер обращается к файлу /etc/nsswitch.conf. Для того чтобы Linux-компьютер мог использовать Winbind для аутентификации пользователей, необходимо изменить этот файл следующим образом.

В следующем коде жирным шрифтом выделено добавление поддержки Winbind, которое позволяет пользователем проходить аутентификацию в базе данных Kerberos 5 AD DS с помощью Winbind.

passwd: files winbind
group: files winbind

Файл smb.conf

Как можно было предположить, для работы Samba в домене AD DS необходимо выполнить определенные настройки в файле smb.conf. В простейшем случае нужно задать значения для параметров realm и security, как показано в листинге 4.

Листинг 4. Настройка параметров файла smb.conf.

[global]
realm = lpic302.LOCAL
security = ADS
password server = wins.lpic302.local
workgroup = lpic302
winbind use default domain = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes

В листинге 4 параметру realm присваивается имя домена lpic302.local. Параметр security установлен в ADS. Значение ADS означает, что Samba будет работать в режиме безопасности AD DS Service. Чтобы избавиться от необходимости дополнять имена пользователей и других ресурсов доменным суффиксом при обращении к ним, можно задать параметр windbind use default domain = yes. Например, вместо полного имени пользователя LPIC302.LOCAL/tbost можно будет указать просто имя tbost — Winbind сам определит, что именем домена является LPIC302.LOCAL.

Взаимодействие с AD DS

После выполнения всех настроек, перезапуска Samba и запуска демона Winbind можно начинать работу с AD DS.

Использование команды net

Утилита net чрезвычайно полезна для администраторов Samba. Если вам приходилось работать с командой net в Windows, то многие ее функции и параметры будут вам знакомы. При работе с AD DS используется команда net ADS. Первое, с чего следует начать — это присоединить компьютер к домену:

[tbost@samba3 ~]$ sudo net ADS join -U Administrator%password
[tbost@samba3 ~]$ sudo net ADS testjoin
[tbost@samba3 ~]$ sudo net ADS join -U Administrator createcomputer="ACCOUNTING/Servers"

Первая команда net в этом примере используется для присоединения компьютера к домену. В качестве альтернативного способа можно не использовать строку %password и ввести пароль учетной записи администратора Windows при получении запроса. Вторая команда выполняет проверку успешного присоединения сервера к домену. Третья команда создает (или перемещает объект из организационного подразделения Computers, используемого по умолчанию) учетную запись сервера Samba в AD DS в организационном подразделении ACCOUNTING/Servers, которое должно существовать в каталоге Active Directory перед выполнением этой команды. Если вы хотите узнать больше о команде net, то обратитесь к ее онлайновой man-странице, которая содержит много полезной информации; кроме того, можно выполнить команду net help ADS, как показано в листинге 5.

Листинг 5. Справочная информация, выводимая командой net help ADS.

[tbost@samba3 ~]$ net help ADS
Usage:
net ads info
 Display details on remote ADS server
net ads join
 Join the local machine to ADS realm
net ads testjoin
 Validate machine account
net ads leave
 Remove the local machine from ADS
net ads status
 Display machine account details
net ads user
 List/modify users
net ads group
 List/modify groups
net ads dns
 Issue dynamic DNS update
net ads password
 Change user passwords
net ads changetrustpw
 Change trust account password
net ads printer
 List/modify printer entries
net ads search
 Issue LDAP search using filter
net ads dn
 Issue LDAP search by DN
net ads sid
 Issue LDAP search by SID
net ads workgroup
 Display the workgroup name
net ads lookup
 Find the ADS DC using CLDAP lookups
net ads keytab
 Manage local keytab file
net ads gpo
 Manage group policy objects
net ads kerberos
 Manage kerberos keytab

Взаимодействие с помощью wbinfo

Утилита wbinfo из состава демона Winbind используется для получения информации о ресурсах AD DS:

[tbost@samba3 ~]$ wbinfo -p
[tbost@samba3 ~]$ wbinfo -u
[tbost@samba3 ~]$ wbinfo -g

В этом примере команда wbinfo используется для получения информации о домене. Команда wbinfo -p посылает запрос демону Winbind, чтобы проверить, что он запущен. Команда wbinfo -u возвращает список всех пользователей домена, а команда wbinfo -g — список всех групп домена. За дополнительной информацией о команде wbinfo обратитесь к ее справочному руководству.

Управление списками контроля доступа с помощью smbcacls

Если вы знакомы с командами setfacl и getfacl, то у вас не будет особых проблем с командой smbcacls из клиентского пакета Samba. С помощью этой команды можно изменять группы и владельцев файлов и директорий, а также управлять разрешениями списков контроля доступа для общих ресурсов, расположенных в домене на компьютере под управлением Windows Server:

[tbost@samba3 ~]$sudo smbcacls -G LPIC302.LOCAL\accounting \
//wins2.lpic302.local/budget private.doc

В этом примере с помощью команды smbcacls мы изменяем группу-владельца файла private.doc, хранящегося в общей директории budget на компьютере под управлением Windows Server, на группу accounting домена AD DS. Дополнительную информацию об этой команде можно получить, выполнив команду smbcacls --help.

Губарь Маргарита Александровна

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *