Оглавление:
Статья последний раз была обновлена 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.LOCALaccounting //wins2.lpic302.local/budget private.doc |
В этом примере с помощью команды smbcacls
мы изменяем группу-владельца файла private.doc, хранящегося в общей директории budget на компьютере под управлением Windows Server, на группу accounting домена AD DS. Дополнительную информацию об этой команде можно получить, выполнив команду smbcacls --help
.
- Как узнать IP-адрес по MAC-адресу - 07.04.2023
- Пинг проходит, а страницы в браузере не открываются - 07.04.2023
- Что если сайт пингуется «извне», но не открывается из под «локалки»? - 07.04.2023