SCROLL
Среднее время на прочтение: 4 мин.

Как ввести Debian в домен Windows (Active Directory) с помощью realmd, SSSD.

Рассмотрим как ввести систему Debian в домен Windows с помощью realmd, SSSD.

 

Realmd (Realm Discovery) – сервис D-Bus, позволяющий производить настройку сетевой аутентификации и членства в домене (Active Directory) без сложных настроек. Информация о домене обнаруживается автоматически. Для аутентификации и проверки учетных записей realmd использует SSSD (через Kerberos и LDAP) или Winbind.

 

SSSD (System Security Services Daemon) — это клиентский компонент централизованных решений для управления идентификацией, таких как Microsoft Active Directory, Kerberos, OpenLDAP  и других серверов каталогов. SSSD обслуживает и кэширует информацию, хранящуюся на удаленном сервере каталогов, и предоставляет услуги идентификации, аутентификации и авторизации хост-машине.

 

Исходные данные:

  • Контроллер домена (DC1) на Windows Server 2019, домен JAKONDA.LOCAL (IP — 192.168.1.100)
  • Linux система (debian) на Debian 11 Bullseye (IP — 192.168.1.10)

 

Подготовка системы

# Обновляем информацию о репозиториях и обновляем установленные пакеты:

apt-get update && apt-get upgrade -y

 

Указываем FQDN (Fully Qualified Domain Name) имя системы, в файле /etc/hostname:

debian.jakonda.local

 

Файл /etc/hosts приводим к виду таким образом, чтобы в нём была запись с полным доменным именем компьютера и с коротким именем, ссылающаяся на один из внутренних IP хоста:

127.0.0.1	localhost
192.168.1.10	debian.jakonda.local debian

 

 

Настраиваем клиент DNS на хосте. Файл /etc/resolv.conf приводим к виду с учетом ваших данных:

domain jakonda.local
search jakonda.local
nameserver 192.168.1.100

 

Настройка синхронизации времени

Очень важно для корректной работы чтобы разница во времени между хостом и домен контроллером была минимальная или не превышала более 5 минут, в противном случае не возможно получить билет от Kerberos. Настроим синхронизацию времени с контроллером домена.

 

# Устанавливаем необходимые пакеты:

apt-get install ntp ntpdate

 

В файле /etc/ntp.conf, указываем контроллер домена в качестве точки синхранизации, остальные комментируем :

# You do need to talk to an NTP server or two (or three).
server dc1.jakonda.local

# pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
# pick a different set every time it starts up.  Please consider joining the
# pool: <http://www.pool.ntp.org/join.html>
# pool 0.debian.pool.ntp.org iburst
# pool 1.debian.pool.ntp.org iburst
# pool 2.debian.pool.ntp.org iburst
# pool 3.debian.pool.ntp.org iburst

 

Выполняем единовременную синхронизацию времени с контроллером домена и запускаем службу:

/etc/init.d/ntp stop
ntpdate -bs jakonda.local
/etc/init.d/ntp start

 

Ввод в домен

Мы будем использовать команду realm из пакета realmd, чтобы присоединиться к домену и создать конфигурацию sssd.

 

# Устанавливаем необходимые пакеты:

apt-get install realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin oddjob oddjob-mkhomedir packagekit -y

 

Проверим, доступен ли домен для обнаружения через DNS:

realm discover jakonda.local -v

 * Resolving: _ldap._tcp.jakonda.local
 * Performing LDAP DSE lookup on: 192.168.1.10
 * Successfully discovered: jakonda.local
jakonda.local
  type: kerberos
  realm-name: JAKONDA.LOCAL
  domain-name: jakonda.local
  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
jakonda.local
  type: kerberos
  realm-name: JAKONDA.LOCAL
  domain-name: jakonda.local
  configured: no

[stextbox id=’info’]ИНФОРМАЦИЯ. Команда realm discover возвращает полную конфигурацию домена и список пакетов, которые необходимо установить, чтобы система была зарегистрирована в домене.[/stextbox]

 

Перед вводом в домен, можно настроить realmd переопределив настройки по-умолчанию. Это делается путем размещения настроек в файле /etc/realmd.conf. Настройки в этом файле применяются только в момент присоединения к домену или области. Как только область настроена, настройки не вступают в силу. Последующая конфигурация выполняется в созданном файле конфигурации sssd — /etc/sssd/sssd.conf.

 

Для примера зададим атрибуты хоста для учетной записи компьютера в Active Directory (атрибуты operatingSystem и operatingSystemVersion) и укажем в какую OU его поместить:

[active-directory]
os-name = Debian GNU/Linux
os-version = 11.8 (Bullseye)

[jakonda.local] 
computer-ou = OU=Linux Computers,DC=jakonda,DC=local

[stextbox id=’info’]ИНФОРМАЦИЯ. Более подробно можно почитать — https://www.freedesktop.org/software/realmd/docs/realmd-conf.html[/stextbox]

 

Введем хост в домен Active Directory. Для выполнения операции понадобится учетная запись AD с правами администратора домена (или пользователь, которому делегированы права на добавление компьютеров в домен):

realm join -U Jakonda jakonda.local
Password for Administrator:

 

Проверим, что хост теперь находится в домене Active Directory:

realm list

jakonda.local
  type: kerberos
  realm-name: JAKONDA.LOCAL
  domain-name: jakonda.local
  configured: kerberos-member
  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
  login-formats: %U@jakonda.local
  login-policy: allow-realm-logins

 

Конфигурация SSSD

Инструмент realmd после ввода хоста в домен, создает файл конфигурации sssd (/etc/sssd/sssd.conf):

[sssd]
domains = jakonda.local
config_file_version = 2
services = nss, pam

[domain/jakonda.local]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = JAKONDA.LOCAL
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = jakonda.local
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = ad

Этих параметров достаточно для авторизации доменных пользователей в системе.

[stextbox id=’warning’]ИНФОРМАЦИЯ. Важно помнить, что файл /etc/sssd/sssd.conf должен иметь разрешения 600 и root:root, иначе демон sssd не будет запускаться.[/stextbox]

 

Вывод из домена

Опишу процедуру вывода машины из домена.

 

Сперва выводим список сконфигурированных доменов:

realm list

jakonda.local
  type: kerberos
  realm-name: JAKONDA.LOCAL
  domain-name: jakonda.local
  configured: kerberos-member
  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
  login-formats: %U
  login-policy: allow-realm-logins

 

Выполняем команду:

realm leave -v -U <username>@<domain>

 

Если в выводе присутствует две записи (две записи присутствуют при использовании двух client-softwarewinbind и sssd), к примеру вот так это выглядит:

jakonda.local
  type: kerberos
  realm-name: JAKONDA.LOCAL
  domain-name: jakonda.local
  configured: kerberos-member
  server-software: active-directory
  client-software: winbind
  required-package: winbind
  required-package: libpam-winbind
  required-package: samba-common-bin
  login-formats: JAKONDA\%U
  login-policy: allow-any-login
jakonda.local
  type: kerberos
  realm-name: JAKONDA.LOCAL
  domain-name: jakonda.local
  configured: kerberos-member
  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
  login-formats: %U
  login-policy: allow-realm-logins

 

тогда нужно выполнить две команды:

realm leave -v --client-software=sssd -U <username>@<domain>
realm leave -v --client-software=winbind -U <username>@<domain>

 

Подчищаем после вывода машины из домена, удаляем кеш SSSD и Kerberos.

 

Останавливаем SSSD демон:

systemctl stop sssd

Удаляем SSSD кеш:

rm -rf /var/lib/sss/db/*

Удаляем Kerberos кеш:

rm -f /tmp/krb5*

 

Автоматическое создание домашнего каталога

Чтобы пользователям Active Directory создавался их домашний каталог при входе в систему, выполним команду:

pam-auth-update --enable mkhomedir

 

Результатом выполненения команды будет, добавление в /etc/pam.d/common-session строки:

session optional                        pam_mkhomedir.so umask=0022 skel=/etc/skel

 

Проверка работы

Получим информацию о пользователе Active Directory — jakonda@jakonda.local.

getent passwd jakonda@jakonda.local
jakonda@jakonda.local:*:1851201887:1851200513:Jakonda:/home/jakonda@jakonda.local:/bin/bash

 

Посмотрим в каких группах он состоит:

groups jakonda@jakonda.local
jakonda@jakonda.local : domain users@jakonda.local domain admins@jakonda.local

[stextbox id=’info’]ИНФОРМАЦИЯ. Если вы только что изменили членство пользователя в группе, может пройти некоторое время, прежде чем sssd заметит это из-за кэширования.[/stextbox]

 

Попробуем войти в систему:

sudo login

debian.jakonda.local имя пользователя: Jakonda
Пароль:
Linux debian.jakonda.local 5.10.0-23-amd64 #1 SMP Debian 5.10.179-3 (2023-07-27) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Создание каталога /home/jakonda@jakonda.local.

 

Управление разрешениями на вход для пользователей домена

Чтобы задать правила доступа, используйте следующие две команды:

  • realm deny
  • realm permit

 

К примеру чтобы предоставить или запретить доступ для всех пользователей, используется команда с параметром --all:

realm permit --all
realm deny --all

 

Чтобы предоставить доступ указанным пользователям, используется команда:

realm permit user@jakonda.local
realm permit 'JAKONDA.LOCAL\user'

 

Для пользователей доменных групп безопасности, используется команда:

ream permit -g ServerAdmins@jakonda.local

 

Чтобы запретить доступ указанным пользователям, используется команда с параметром -x:

realm permit -x user@jakonda.local

 

Для разрешения определенным доменным пользователями возможность выполнения sudo, создадим отдельный файл в котором укажем доменную группу безопасности в которую уже будут входить нужные пользователи.

 

Создаем файл /etc/sudoers.d/admins со следующим содержанием:

%ServerAdmins ALL=(ALL) ALL

[stextbox id=’warning’]ИНФОРМАЦИЯ: Хочу заместить если группа безопасности содержит пробелы, например — Domain admins, то указывать ее нужно в формате — %Domain\admins[/stextbox]

Обсуждение

0 комментариев

Нет комментариев.