unix-linux:debian:bookworm:join-debian-linux-12-bookworm-to-active-directory-domain-with-sssd-realmd-with-ad-security-group-authorization-in-pam-for-console-login-and-ssh-sso-putty-kerberos-auth
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
unix-linux:debian:bookworm:join-debian-linux-12-bookworm-to-active-directory-domain-with-sssd-realmd-with-ad-security-group-authorization-in-pam-for-console-login-and-ssh-sso-putty-kerberos-auth [11.07.2023 12:50] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 | unix-linux:debian:bookworm:join-debian-linux-12-bookworm-to-active-directory-domain-with-sssd-realmd-with-ad-security-group-authorization-in-pam-for-console-login-and-ssh-sso-putty-kerberos-auth [14.03.2024 13:06] (текущий) – [SUDO] Алексей Максимов | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ===== Подключение Debian GNU/Linux 12 (Bookworm) к домену Active Directory с помощью SSSD и настройка PAM для доменной аутентификации и авторизации в SSHD ===== | ||
+ | {{: | ||
+ | |||
+ | Здесь приведён сокращённый план действий по присоединению **Debian GNU**/ | ||
+ | |||
+ | |||
+ | \\ | ||
+ | ==== Подготовка ==== | ||
+ | В первую очередь необходимо обеспечить правильную работу **DNS**-клиента и настроить __синхронизацию времени__ с источниками, | ||
+ | Соответствующие настройки описаны в статьях: | ||
+ | |||
+ | * [[unix-linux: | ||
+ | * [[unix-linux: | ||
+ | |||
+ | Выполним команду присвоения полного доменного имени в качестве имени хоста, так как по умолчанию в **Debian 12** в качестве **hostname** используется имя узла без доменной части. Это позволит избежать некоторых проблем при вводе компьютера в домен с помощью **realmd**: | ||
+ | |||
+ | < | ||
+ | |||
+ | Дополнительно необходимо проверить файл ''/ | ||
+ | |||
+ | <file bash hosts> | ||
+ | 127.0.0.1 | ||
+ | 10.1.0.3 | ||
+ | ...</ | ||
+ | |||
+ | Если требуется, | ||
+ | |||
+ | |||
+ | \\ | ||
+ | ==== Установка realmd/SSSD и ввод в домен ==== | ||
+ | |||
+ | Устанавливаем пакеты необходимые для ввода в домен: | ||
+ | |||
+ | < | ||
+ | |||
+ | Выполняем обнаружение информации о домене, | ||
+ | |||
+ | < | ||
+ | </ | ||
+ | * Performing LDAP DSE lookup on: 10.5.1.4 | ||
+ | * Performing LDAP DSE lookup on: 10.6.0.4 | ||
+ | * Successfully discovered: sub.holding.com | ||
+ | sub.holding.com | ||
+ | type: kerberos | ||
+ | realm-name: SUB.HOLDING.COM | ||
+ | domain-name: | ||
+ | configured: no | ||
+ | server-software: | ||
+ | client-software: | ||
+ | required-package: | ||
+ | required-package: | ||
+ | required-package: | ||
+ | required-package: | ||
+ | required-package: | ||
+ | required-package: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Настраиваем информацию о компьютере, | ||
+ | |||
+ | < | ||
+ | |||
+ | <file bash realmd.conf> | ||
+ | os-name = Debian GNU/Linux | ||
+ | os-version = 12.0 (Bookworm)</ | ||
+ | |||
+ | Выполняем присоединение компьютера к домену Active Directory: | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * / | ||
+ | * / | ||
+ | * Successfully enrolled machine in realm</ | ||
+ | |||
+ | |||
+ | \\ | ||
+ | ==== Поддержка Kerberos ==== | ||
+ | |||
+ | |||
+ | Устанавливаем клиентское ПО поддержки **Kerberos**: | ||
+ | |||
+ | < | ||
+ | |||
+ | Проверяем наличие и содержимое **keytab**-файла. В нём, как минимум, | ||
+ | |||
+ | < | ||
+ | |||
+ | Настраиваем конфигурацию клиента Kerberos: | ||
+ | |||
+ | < | ||
+ | </ | ||
+ | |||
+ | Пример настроенного файла: | ||
+ | |||
+ | <file bash krb5.conf> | ||
+ | dns_lookup_kdc = no | ||
+ | dns_lookup_realm = no | ||
+ | ticket_lifetime = 24h | ||
+ | renew_lifetime = 7d | ||
+ | forwardable = true | ||
+ | rdns = false | ||
+ | default_realm = SUB.HOLDING.COM | ||
+ | default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 | ||
+ | default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 | ||
+ | permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 | ||
+ | |||
+ | [realms] | ||
+ | SUB.HOLDING.COM = { | ||
+ | kdc = kom-dc01.sub.holding.com | ||
+ | kdc = kom-dc02.sub.holding.com | ||
+ | admin_server = kom-dc01.sub.holding.com | ||
+ | default_domain = sub.holding.com | ||
+ | } | ||
+ | |||
+ | [domain_realm] | ||
+ | .sub.holding.com = SUB.HOLDING.COM | ||
+ | sub.holding.com = SUB.HOLDING.COM | ||
+ | </ | ||
+ | |||
+ | |||
+ | \\ | ||
+ | ==== Конфигурация SSSD ==== | ||
+ | |||
+ | Настраиваем конфигурацию **SSSD**: | ||
+ | |||
+ | < | ||
+ | </ | ||
+ | |||
+ | Пример настроенной конфигурации: | ||
+ | |||
+ | <file bash sssd.conf> | ||
+ | domains = sub.holding.com | ||
+ | config_file_version = 2 | ||
+ | #services = nss, pam | ||
+ | implicit_pac_responder = false | ||
+ | default_domain_suffix = sub.holding.com | ||
+ | |||
+ | [domain/ | ||
+ | ad_server = kom-dc01.sub.holding.com, | ||
+ | ad_backup_server = prm-dc01.sub.holding.com, | ||
+ | ad_domain = sub.holding.com | ||
+ | ad_gpo_access_control = disabled | ||
+ | krb5_realm = SUB.HOLDING.COM | ||
+ | realmd_tags = manages-system joined-with-adcli | ||
+ | cache_credentials = True | ||
+ | id_provider = ad | ||
+ | krb5_store_password_if_offline = True | ||
+ | default_shell = /bin/bash | ||
+ | ldap_id_mapping = True | ||
+ | ldap_idmap_default_domain_sid = S-1-5-21-2599488624-3617735854-14887588928 | ||
+ | ldap_idmap_range_size = 2000000 | ||
+ | ldap_use_tokengroups = False | ||
+ | use_fully_qualified_names = True | ||
+ | fallback_homedir = /home/%u@%d | ||
+ | access_provider = ad | ||
+ | subdomains_provider = none | ||
+ | dyndns_update = False | ||
+ | debug_level = 0 | ||
+ | </ | ||
+ | |||
+ | Перезапускаем службу с очисткой кеша **sssd**: | ||
+ | |||
+ | < | ||
+ | # ( systemctl stop sssd ) && \ | ||
+ | ( rm -f / | ||
+ | ( systemctl start sssd ) | ||
+ | </ | ||
+ | |||
+ | Выполняем проверку возможности извлечения информации из каталога Active Directory. | ||
+ | |||
+ | Получаем информацию о любой доменной группе безопасности: | ||
+ | |||
+ | < | ||
+ | </ | ||
+ | |||
+ | Получаем информацию о любом доменной пользователе: | ||
+ | |||
+ | < | ||
+ | # getent passwd adm-petya | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | ==== PAM и домашний каталог ===== | ||
+ | |||
+ | Предварительно рекомендуется ознакомится со статьёй [[https:// | ||
+ | |||
+ | Настраиваем базовую конфигурацию **PAM** | ||
+ | |||
+ | Правим файл '' | ||
+ | |||
+ | < | ||
+ | </ | ||
+ | |||
+ | В конец файла добавим строку, | ||
+ | |||
+ | <file bash common-session> | ||
+ | session required | ||
+ | |||
+ | \\ | ||
+ | ==== PAM и доступ на консоль ===== | ||
+ | |||
+ | |||
+ | Создадим свой файл для перечисления учётных записей (доменных и локальных), | ||
+ | |||
+ | < | ||
+ | |||
+ | <file text access-groups-to-login> | ||
+ | root | ||
+ | kom-servers-admins@sub.holding.com</ | ||
+ | |||
+ | Ограничим доступ к файлу: | ||
+ | |||
+ | < | ||
+ | # chmod 600 / | ||
+ | |||
+ | |||
+ | Отредактируем модуль **PAM**, определяющий права доступа к консоли компьютера: | ||
+ | |||
+ | < | ||
+ | |||
+ | Вставляем перед блоком со строкой '' | ||
+ | |||
+ | <file bash login> | ||
+ | # Restricted access to service from local and domain groups | ||
+ | account required pam_listfile.so onerr=fail item=group sense=allow file=/ | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Выполняем проверку локального входа в систему, | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | |||
+ | \\ | ||
+ | ==== PAM и доступ к SSHD ===== | ||
+ | |||
+ | |||
+ | Отредактируем **PAM**-модуль, | ||
+ | |||
+ | < | ||
+ | |||
+ | Вставляем перед блоком со строкой '' | ||
+ | |||
+ | <file bash sshd>... | ||
+ | # Restricted access to service from local and domain groups | ||
+ | account required pam_listfile.so onerr=fail item=group sense=allow file=/ | ||
+ | ...</ | ||
+ | |||
+ | Выполняем проверку входа в систему через SSH, используя разрешённую и неразрешённую доменную учётную запись. При этом в реальном режиме времени отслеживаем происходящее в механизмах аутентификации/ | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | \\ | ||
+ | ==== SSHD и PuTTy ===== | ||
+ | |||
+ | Подробно про пример настройки сквозной проверки подлинности при использовании **PuTTY** читаем в статье [[https:// | ||
+ | |||
+ | Включаем сквозную проверку подлинности для прозрачного подключения с PuTTY | ||
+ | |||
+ | < | ||
+ | |||
+ | Включим опции: | ||
+ | |||
+ | <file bash sshd_config> | ||
+ | # GSSAPI options | ||
+ | GSSAPIAuthentication yes | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Перезапустим службу сервера | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | \\ | ||
+ | ==== SUDO ===== | ||
+ | |||
+ | Разрешаем **sudo** для доменных учётных записей. | ||
+ | |||
+ | Создадим отдельный файл для выдачи прав выполнять **sudo** доменным учётным записям: | ||
+ | |||
+ | < | ||
+ | |||
+ | Пример содержимого файла с одной доменной группой доступа, | ||
+ | |||
+ | <file bash kom-srv-linux-admins> | ||
+ | </ | ||
+ | |||
+ | Ограничим доступ к файлу | ||
+ | |||
+ | < | ||
+ | |||
+ | В некоторых ситуациях при вызове **sudo** в контексте доменного пользователя может возникать длительная задержка при первом запросе на ввод пароля. В этом случае можно попробовать воспользоваться включением опции [[https:// | ||
+ | |||
+ | \\ | ||
+ | ==== Финиш ===== | ||
+ | |||
+ | |||
+ | Теперь можно вернуть имя хоста в исходное состояние, | ||
+ | |||
+ | < | ||
+ | |||
+ | После завершения настройки перезагружаем Linux-сервер, | ||
+ | |||
+ | |||
+ | ---- | ||
+ | Дополнительные источники информации: | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | ---- | ||
+ | Проверено на следующих конфигурациях: | ||
+ | ^ Версия ОС ^ | ||
+ | |Debian GNU/Linux 12.0 (Bookworm) | | ||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | {{tag> | ||
+ | ~~DISCUSSION~~ |
unix-linux/debian/bookworm/join-debian-linux-12-bookworm-to-active-directory-domain-with-sssd-realmd-with-ad-security-group-authorization-in-pam-for-console-login-and-ssh-sso-putty-kerberos-auth.txt · Последнее изменение: 14.03.2024 13:06 — Алексей Максимов