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 09: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 [24.07.2024 14:06] (текущий) – Алексей Максимов | ||
|---|---|---|---|
| Строка 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, используя разрешённую и неразрешённую доменную учётную запись. При этом в реальном режиме времени отслеживаем происходящее в механизмах аутентификации/ | ||
| + | |||
| + | < | ||
| + | |||
| + | |||
| + | \\ | ||
| + | ==== PAM и комбинирование доступа для групп и пользователей ===== | ||
| + | |||
| + | В двух выше обозначенных примерах мы используем файл ''/ | ||
| + | |||
| + | <file bash sshd>... | ||
| + | # Restricted access to service from local and domain groups | ||
| + | account sufficient pam_listfile.so onerr=fail item=user sense=allow file=/ | ||
| + | account required pam_listfile.so onerr=fail item=group sense=allow file=/ | ||
| + | ...</ | ||
| + | |||
| + | Файл ''/ | ||
| + | |||
| + | <file text access-users-to-login> | ||
| + | vasya@sub.holding.com</ | ||
| + | |||
| + | И не забываем про ограничение доступа к файлу: | ||
| + | |||
| + | < | ||
| + | # chmod 600 / | ||
| + | |||
| + | |||
| + | |||
| + | \\ | ||
| + | ==== 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~~ | ||