Как ввести Debian в домен Windows (Active Directory) с помощью realmd, SSSD.
Интеграция Linux-серверов в домен Windows Active Directory (AD) позволяет централизованно управлять пользователями и упростить аутентификацию. В этой статье мы рассмотрим, как добавить Debian в домен Windows AD, используя 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)
Подготовка системы
Перед началом убедитесь, что ваша система Debian обновлена:
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
Настройка синхронизации времени
Для корректной аутентификации по протоколу Kerberos необходимо синхронизировать время сервера и клиента. Если системные часы расходятся более чем на 5 минут, то аутентификация не будет выполнена.
Установим NTP сервер и выполним синхронизацию времени с контроллером домена:
apt-get install ntp ntpdate -y
ntpdate dc1.jakonda.local
Установка необходимых пакетов
Устанавливаем необходимые пакеты:
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
realm discover
возвращает полную конфигурацию домена и список пакетов, которые необходимо установить, чтобы система была зарегистрирована в домене.Предварительная настройка
Перед вводом в домен, можно настроить realmd
переопределив настройки по-умолчанию. Это делается путем размещения настроек в файле /etc/realmd.conf
1.
Для примера зададим атрибуты системы для объекта компьютера в 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
Ввод в домен
Для ввода системы в домен выполните команду:
realm join jakonda.local -U Administrator
Password for Administrator:
Замените Administrator
на учетную запись с правами на добавление компьютеров в домен.
Проверим, что система находится в домене:
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
после ввода системы в домен, создает файл конфигурации — /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
Этих параметров достаточно для авторизации доменных пользователей в системе.
/etc/sssd/sssd.conf
должен иметь разрешения 600
и root:root
, иначе демон sssd
не будет запускаться.В случае внесения каких то изменений в файл конфигурации, то после этого всегда необходимо перезапускать SSSD:
systemctl restart sssd
Проверка работы
Проверим, что учетные записи из домена доступны. Получим информацию о доменном пользователе — jakonda@jakonda.local
.
getent passwd jakonda@jakonda.local
jakonda@jakonda.local:*:1851201887:1851200513:Jakonda:/home/jakonda@jakonda.local:/bin/bash
Проверим в каких группах пользователь jakonda@jakonda.local
состоит:
groups jakonda@jakonda.local
jakonda@jakonda.local : domain users@jakonda.local domain admins@jakonda.local
sssd
заметит это из-за кэширования.Попробуем войти в систему:
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.
Автоматическое создание домашнего каталога
Чтобы доменным пользователям создавался их домашний каталог при входе в систему, выполним команду:
pam-auth-update --enable mkhomedir
Результатом выполнения команды будет, добавление в /etc/pam.d/common-session
строки:
session optional pam_mkhomedir.so umask=0022 skel=/etc/skel
Управление разрешениями на вход для пользователей домена
Чтобы задать правила доступа, используйте следующие две команды:
realm deny
realm permit
Глобальные разрешения
Чтобы предоставить или запретить доступ для всех пользователей, используется команда с параметром --all
:
realm permit --all
realm deny --all
Разрешения по пользователям
Чтобы предоставить доступ указанным пользователям, используется команда:
realm permit user@jakonda.local
realm permit 'JAKONDA.LOCAL\user'
Разрешения по группам безопасности
Для пользователей доменных групп безопасности, используется команда:
ream permit -g %Domain\admins@jakonda.local
Запрещающие правила
Чтобы запретить доступ указанным пользователям, используется команда с параметром -x
:
realm permit -x user@jakonda.local
SUDO разрешения
Для разрешения определенным доменным пользователями возможность выполнения sudo
, создадим отдельный файл в котором укажем доменную группу безопасности в которую уже будут входить нужные пользователи.
Создаем файл /etc/sudoers.d/admins
со следующим содержанием:
%ServerAdmins ALL=(ALL) ALL
Domain admins
, то указывать ее нужно в формате — %Domain\admins
Вывод из домена
Опишу так же процедуру вывода системы из домена, на случай если такая возникнет необходимость.
Сперва выводим список сконфигурированных доменов:
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 Administrator@jakonda.local
Замените Administrator
на учетную запись с правами на удаление компьютеров в домен и jakonda.local
на свой домен.
Если в выводе сконфигурированных доменов присутствует две записи (две записи присутствуют при использовании двух client-software
— winbind
и sssd
), к примеру вот так это выглядит:
realm list
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 Administrator@jakonda.local
realm leave -v --client-software=winbind -U Administrator@jakonda.local
Очистка системы
После вывода системы из домена, удаляем кеш SSSD и Kerberos.
Останавливаем SSSD демон:
systemctl stop sssd
Удаляем SSSD кеш:
rm -rf /var/lib/sss/db/*
Удаляем Kerberos кеш:
rm -f /tmp/krb5*
- Подробное описание realmd-conf — https://www.freedesktop.org/software/realmd/docs/realmd-conf.html ↩︎
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Обсуждение
Нет комментариев.