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

Интеграция и работа в доменной среде Active Directory

Начиная с операционной системы Windows 2000, компания Microsoft предлагает собственную службу каталогов под названием Active Directory, позже переименованную в Active Directory Domain Services (AD DS). Службы AD DS используют преимущества таких популярных протоколов, как LDAP (для управления ресурсами) и Kerberos (для аутентификации), и тесно интегрированы со службой доменных имен DNS. Если вы используете среду AD DS, то интеграция в нее сервера Linux поможет централизовать управление идентификационной информацией пользователей и обеспечить поддержку файловых служб и служб печати Linux. Однако при такой интеграции могут возникнуть серьезные проблемы. К счастью, в Samba имеется решение для интеграции Linux с AD DS, не требующее внесения изменений в службу каталогов. [Примечание. Мы изменили заголовок листинга 4 и облегчили раздел "Использование команды net" на основании отзывов читателей.]

Трейси Бост, консультант и преподаватель, Свободный писатель

Author photo - Tracy BostТрейси Бост - опытный разработчик программного обеспечения и проектировщик систем. Он специализируется на интеграции корпоративных приложений. Был сопредседателем рабочей группы по бизнес-правилам Организации по поддержке стандартов ипотечной отрасли (MISMO) и сопредседателем секции промышленных стандартов на симпозиуме RuleML2010. Работал в различных отраслях, в том числе в ипотеке, недвижимости и некоммерческом секторе.



01.08.2012

Об этой серии

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

Чтобы посмотреть описания статей этой серии и получить ссылки на них, обратитесь к нашему перечню материалов для подготовки к экзаменам LPIC-3. Этот перечень постоянно дополняется новыми статьями по мере их готовности и содержит текущие (по состоянию на ноябрь 2010 года) цели экзаменов сертификации LPIC-3.

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

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

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

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

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


Что такое Active Directory

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

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

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

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

Протокол Kerberos 5

Создайте ваш собственный канал

Вы можете создать ваш собственный RSS, Atom или HTML канал обновлений и получать уведомления о новых или обновленных статьях нашего сайта. Для этого перейдите на страницу developerWorks RSS feeds, выберите зону Linux, установите флажок Статьи и введите в качестве ключевой фразы Linux Professional Institute, после чего выберите требуемый тип канала.

Протокол 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
DNSAD 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.

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=828642
ArticleTitle=Изучаем Linux, 302 (смешанные среды): Интеграция с Active Directory
publish-date=08012012