Статьи и кейсы

Интеграция системы Linux с Active Directory

Статьи
Перевод статьи из журнала ADMIN (https://www.admin-magazine.com/Archive/2023/76)
Автор:
Али Имран Нагори — технический писатель и энтузиаст Linux, который любит писать о системном администрировании Linux и связанных с ним технологиях.
Введение
Если ваша организация управляет сетью, в которой есть машины под управлением Windows и Linux, вам может понадобиться единый механизм аутентификации. Многие компании используют Active Directory (AD) от Microsoft в качестве службы каталогов (см. врезку «Active Directory»). Microsoft AD уже много лет доминирует на рынке корпоративного контроля доступа. Подключение клиента Microsoft к Active Directory практически не требует усилий - вам не нужна наша отдельная статья,чтобы объяснить это. Добавить систему Linux по-прежнему просто, но этот процесс требует еще нескольких шагов.
Active Directory
Служба Active Directory создает уникальный объект для каждого пользователя в центральной базе данных, а также уникальный набор учетных данных. Кроме того, в качестве объекта создается каждая компьютерная система. С помощью одного и того же набора учетных данных каждый пользователь получает автоматический доступ к другим системам на рабочем месте. Все необходимые обновления учетных записей выполняются один раз в централизованной базе данных.

Служба каталогов - это, по сути, метод каталогизации и упрощения доступа ко всем ресурсам организации. В своей самой простой форме Active Directory - это распределенная база данных, к которой можно получить доступ по сети с помощью протокола Lightweight Directory Access Protocol (LDAP). Благодаря использованию канала, ориентированного на соединение, например TCP/IP, LDAP позволяет пользователям получать удаленный доступ к службам каталогов.

В этой статье я сначала покажу вам, как подключить Linux-машину к домену Windows AD. После этого я буду использовать Active Directory в качестве основного места для управления всеми пользователями, что сделает административные задачи проще и займет меньше времени. Я также воспользуюсь функцией AD System Security Services Daemon (SSSD), чтобы проверить, действительно ли пользователь входит в Active Directory.
SSSD
SSSD предназначен для упрощения взаимодействия Linux и других систем, не относящихся к Microsoft, с Microsoft Active Directory. По сути, он заставляет пользователей и группы из домена Active Directory выглядеть так, как будто они являются частью локальной системы. В результате пользователи Active Directory будут казаться локальными пользователями системы Linux.

Кроме того, стандартный пользователь Unix или Linux имеет атрибуты, которые не являются родными для Active Directory. Эти атрибуты, такие как числовой идентификатор пользователя (UID), создают во время выполнения или с помощью директив конфигурации местоположение домашнего каталога и желаемую оболочку пользователя. Аналогично, группы Active Directory будут выглядеть как типичные группы Unix или Linux благодаря модулю Name Service Switch (NSS), технологии, которая является общей для всех дистрибутивов Linux. NSS работает для разрешения пользователей и групп.

Используя подключаемый модуль аутентификации Linux (PAM), SSSD предлагает системным службам Ubuntu общий способ проверки учетных данных пользователей по сравнению с данными, хранящимися в Active Directory.

Инструмент командной строки SSSD realm упрощает процесс присоединения к домену Active Directory. Кроме того, SSSD запускает различные фоновые процессы, соответствующие каждой предлагаемой им службе (например, sssd , sssd_pam и sssd_nss ).
Пререквизиты
В этом процессе я настраиваю Windows Server 2016 в качестве контроллера домена, а на стороне клиента использую машину Ubuntu 20.04. Кроме того, необходимо правильно настроить конфигурацию на конечных машинах. Например, чтобы обеспечить выполнение предварительных условий на стороне Active Directory, необходимо

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

· настроить службы Active Directory и DNS;

· добавить пользователя для входа на машину Ubuntu.

Учетная запись пользователя, которая будет добавлять машину Ubuntu в Active Directory, может быть обычным административным пользователем или членом административной группы. Однако этот элемент зависит только от вашей конфигурации.

На все DNS-запросы на машине Ubuntu должен отвечать контроллер домена Active Directory (DC). Следовательно, для этого требуется правильная настройка DNS на Active Directory DC. Я настроил свой каталог AD следующим образом:

· Доменное имя: example.com

· IP-адрес: 192.168.62.160

· Полное доменное имя (FQDN) сервера: win-2rifamt88gr.example.com

Конфигурация для машины Ubuntu следующая

· Имя хоста: node1.example.com

· IP-адрес: 192.168.62.163

· DNS-резольвер: Active Directory

Active Directory будет выступать в качестве DNS-резольвера для машины Ubuntu. Также вы можете вручную задать имя хоста в файле hosts (Рисунок 1).
Рисунок 1: Файл hosts в Ubuntu
Обычно на машине Ubuntu большинство команд нужно выполнять от имени члена группы sudo, что означает, что у вас должны быть привилегии суперпользователя (sudo), чтобы они работали.
Конфигурация DNS
Очень важно, чтобы машина Ubuntu сначала обращалась к DC для запроса DNS. Это можно сделать с помощью файла resolv.conf, просто добавив IP Active Directory в качестве основного адреса DNS. Однако при перезапуске машины Ubuntu IP-адрес DNS возвращается к исходному значению. Чтобы отменить это поведение, используйте resolvconf. Эта утилита поможет вам установить нужный сервер имен (в данном случае IP Active Directory).
Синхронизация времени
Active Directory использует протокол Kerberos для целей аутентификации. Однако этот протокол чувствителен к времени между системами, взаимодействующими в домене Kerberos. Поэтому, если разница во времени между системой Ubuntu и контроллером Active Directory составляет более пяти минут, аутентификация на контроллере Active Directory в конечном итоге не пройдет.

В основном системы Unix и Linux используют сетевой протокол времени (NTP) для синхронизации времени (например, Ubuntu использует NTP-сервер по умолчанию по адресу nTP.ubuntu.com). Между машиной Ubuntu и контроллером Active Directory не может существовать разницы во времени, поэтому вы не можете использовать внешний источник времени.

Чтобы настроить машину Ubuntu на использование контроллера Active Directory в качестве NTP-сервера, установите и настройте такую службу, как NTP или chrony. Если все настроено правильно, введите

$ ping example.com

$ ping WIN-2RIFAMT88GR.example.com

чтобы убедиться, что машина Ubuntu теперь может пинговать имя домена и FQDN Active Directory.
Открытие домена
Системная служба D-Bus realmd управляет обнаружением и регистрацией в царствах, таких как домены Active Directory. Чтобы установить пакет и проверить членов, уже включенных или зарегистрированных в домене Active Directory, введите

$ sudo apt install realmd

$ realm list

Пустой результат показывает, что ни одна машина пока не зарегистрирована. Теперь откройте свой домен (здесь example.com), выполнив команду

$ realm discover example.com

После успешного обнаружения домена вы увидите результат, подобный показанному в списке 1. Интересно, что в результате также перечислены необходимые и наиболее подходящие пакеты для присоединения к домену.
Список 1
Открытие домена
vagrant@node1: $ realm discover example.com
example.com
type: kerberos
realm-name: EXAMPLE.COM
domain-name: example.com
configured: no
server-software: active-directory
client-software: sssd
required-package: sssd-tools
required-package: sssd
required-package: libnss-sss
required-package: libpam-sss
required-package: adcli
required-package: samba-common-bin
$ sudo apt install sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin

устанавливает эти пакеты.
Присоединение к домену
Опция configured: no, показанная в Списке 2, указывает на то, что система не готова к присоединению к домену Active Directory. Для этого можно просто выполнить команду realm join (Рисунок 2).
$ sudo realm join example.com -v
Рисунок 2: Присоединение к домену с помощью команды realm join.
Вторая команда realm discover показывает изменения (Рисунок 3).
Рисунок 3. Сконфигурированный домен после выполнения команды realm join.
По умолчанию в realm вход осуществляется от учетной записи администратора домена. Однако вы можете использовать ключ -U, чтобы передать другое имя пользователя. Опция -v позволяет получить подробный вывод.

Кроме того, инструмент realm создает конфигурацию для SSSD и добавляет модули для PAM и NSS. Кроме того, он позаботился о запуске необходимых служб. Вы также можете проверить файл /etc/sssd/sssd. conf (Список 2):
Список 2
Проверка sssd. Conf
vagrant@node1: $ sudo cat /etc/sssd/sssd.conf
[sssd]
domains = example.com
config_file_version = 2
services = nss, pam
[domain/example.com]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = EXAMPLE.COM
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = example.com
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = ad

Далее вам нужно создать домашний каталог для каждого пользователя AD, который будет входить на машину Ubuntu. Чтобы настроить pam_mkhomedir, выполните команду (Рисунок 4)
$ sudo pam-auth-update --enable mkhomedir
Рисунок 4: Создание домашней директории пользователя и получение информации о ней.
Кроме того, вы можете получить подробную информацию о пользователе AD с помощью команды

$ getent passwd Administrator@example.com

Наконец, вы можете зайти в машину Ubuntu с учетными данными пользователя Active Directive и убедиться, что вы получили домашний каталог пользователя на ней с помощью команд

$ sudo login

$ ls /home/

Команда login попросит вас ввести имя пользователя (дополненное именем домена) и пароль (Рисунок 5)
Рисунок 5: Вход в систему с учетными данными пользователя Active Directory.
Заключение
После успешного входа в систему вы можете начать пользоваться машиной Ubuntu и ее ресурсами. Также не забудьте создать домашний каталог — это важно, потому что он будет местом по умолчанию для ваших файлов на машине Ubuntu.

В этой статье я рассказал о том, как добавить машину Ubuntu в Windows Server. Интеграция Linux с существующим доменом Active Directory — это один из способов получить преимущества обеих платформ. Если у вас несколько систем, подумайте об использовании службы каталогов для управления ими.
Ссылки
1. Как интегрировать рабочий стол Ubuntu с Active Directory. Canonical Ltd., апрель 2022 г.: https://ubuntu. com/engage/microsoft-active-directory.

2. Настройка DNS NameServer на облачных серверах Linux. LayerStack, 5 февраля 2022 г.: https://www. layerstack. com/resources/tutorials/Configuring-DNS-NameServer-on-Linux-Cloud-Servers.

3. Интеграция с Active Directory. ArchWiki, пересмотрено в марте 2023 года: https://wiki. archlinux. org/title/Active_Directory_integration

4. SSSD и Active Directory. Canonical Ltd., март 2023 г.: https://ubuntu. com/server/docs/service-sssd-ad.
Made on
Tilda