===== Подключение Debian GNU/Linux 12 (Bookworm) к домену Active Directory с помощью SSSD и настройка PAM для доменной аутентификации и авторизации в SSHD ===== {{:unix-linux:debian:stretch:pasted:20190625-091314.png }} Подробное описание процедуры присоединения компьютера с **Debian GNU**/**Linux** к домену **Active Directory** с помощью **SSSD** и **realmd** можно найти [[https://blog.it-kb.ru/2016/10/15/join-debian-gnu-linux-8-6-to-active-directory-domain-with-sssd-and-realmd-for-authentication-and-configure-ad-domain-security-group-authorization-for-sudo-and-ssh-with-putty-sso/|здесь]]. Рекомендуется предварительно ознакомится с этим материалом, а также с [[https://blog.it-kb.ru/2017/11/18/recommendations-for-configuring-sssd-in-debian-gnu-linux-about-dns-kerberos-and-active-directory-dc-search/|замечаниями по настройке SSSD в Debian GNU/Linux]]. Здесь приведён сокращённый план действий по присоединению **Debian GNU**/**Linux 12** (**Bookworm**) к домену **Active Directory** с помощью **SSSD** и **realmd**. \\ ==== Подготовка ==== В первую очередь необходимо обеспечить правильную работу **DNS**-клиента и настроить __синхронизацию времени__ с источниками, используемыми в **Active Directory**. Эти моменты важны для правильной работы протокола **Kerberos**. Соответствующие настройки описаны в статьях: * [[unix-linux:debian:bookworm:configuring-systemd-resolved-caching-dns-client-on-debian-12|Настройка кеширующего DNS-клиента systemd-resolved]] * [[unix-linux:debian:bookworm:configuring-the-systemd-timesyncd-time-synchronization-service-on-debian-linux-12|Настройка службы синхронизации времени systemd-timesyncd]] Выполним команду присвоения полного доменного имени в качестве имени хоста, так как по умолчанию в **Debian 12** в качестве **hostname** используется имя узла без доменной части. Это позволит избежать некоторых проблем при вводе компьютера в домен с помощью **realmd**:
# hostname KOM-SRV01.sub.holding.comДополнительно необходимо проверить файл ''/etc/hosts'' на предмет того, что там в качестве IP адреса хоста присутсвует адрес основного сетевого интерфейса:
# apt-get install realmd sssd-tools sssd libnss-sss libpam-sss adcli packagekit -yВыполняем обнаружение информации о домене, которое должно отработать без ошибок:
# realm discover sub.holding.com --verbose * Resolving: _ldap._tcp.sub.holding.com * 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: sub.holding.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Настраиваем информацию о компьютере, которая будет передана в каталог Active Directory при присоединении к домену.
# nano /etc/realmd.conf
# realm join --verbose --user=adm-petya \ --user-principal="host/kom-srv01.sub.holding.com@SUB.HOLDING.COM" \ --computer-ou="OU=Linux Servers,OU=KOM,DC=sub,DC=holding,DC=com" \ kom-dc01.sub.holding.com ... * /usr/sbin/update-rc.d sssd enable * /usr/sbin/service sssd restart * Successfully enrolled machine in realm\\ ==== Поддержка Kerberos ==== Устанавливаем клиентское ПО поддержки **Kerberos**:
# apt-get install krb5-user -yПроверяем наличие и содержимое **keytab**-файла. В нём, как минимум, должны быть записи типа ''host/*''
# klist -e -k -t /etc/krb5.keytabНастраиваем конфигурацию клиента Kerberos:
# nano /etc/krb5.confПример настроенного файла:
# nano /etc/sssd/sssd.confПример настроенной конфигурации:
# sss_cache -E # ( systemctl stop sssd ) && \ ( rm -f /var/lib/sss/db/* ) && ( rm -f /var/lib/sss/mc/* ) && \ ( systemctl start sssd )Выполняем проверку возможности извлечения информации из каталога Active Directory. Получаем информацию о любой доменной группе безопасности:
# getent group kom-servers-admins@sub.holding.comПолучаем информацию о любом доменной пользователе:
# id adm-petya # getent passwd adm-petya\\ ==== PAM и домашний каталог ===== Предварительно рекомендуется ознакомится со статьёй [[https://blog.it-kb.ru/2017/03/12/restricting-access-rights-to-the-linux-system-and-its-services-sshd-and-apache-through-active-directory-domain-security-groups-using-sssd-and-pam-pam_listfile|Разграничение прав доступа к Linux-системе и её сервисам через доменные группы безопасности с помощью SSSD и PAM]], где более подробно описан смысл всех производимых далее настроек системы. Настраиваем базовую конфигурацию **PAM** Правим файл ''common-session'':
# nano /etc/pam.d/common-sessionВ конец файла добавим строку, позволяющую создать домашний каталог в случае его отсутствия:
# nano /etc/security/access-groups-to-login
# chown root:root /etc/security/access-groups-to-login # chmod 600 /etc/security/access-groups-to-loginОтредактируем модуль **PAM**, определяющий права доступа к консоли компьютера:
# nano /etc/pam.d/loginВставляем перед блоком со строкой ''@include common-account'' ссылку на вызов авторизации через созданный нами файл (''access-groups-to-login'')
# journalctl -f | grep login\\ ==== PAM и доступ к SSHD ===== Отредактируем **PAM**-модуль, отвечающий за настроку авторизации при подключении через службу сервера **SSH**
# nano /etc/pam.d/sshdВставляем перед блоком со строкой ''@include common-account'' ссылку на вызов авторизации через созданный нами файл (''access-groups-to-login'')
# journalctl -f -u ssh.service\\ ==== SSHD и PuTTy ===== Подробно про пример настройки сквозной проверки подлинности при использовании **PuTTY** читаем в статье [[https://blog.it-kb.ru/2014/07/06/single-sign-on-sso-server-connection-ubuntu-server-14-04-lts-via-ssh-using-putty-from-windows-based-active-directory/|SSO-подключение к серверу Ubuntu Server 14.04 LTS по протоколу SSH с помощью PuTTY с компьютера на базе Windows в домене Active Directory]] Включаем сквозную проверку подлинности для прозрачного подключения с PuTTY
# nano /etc/ssh/sshd_configВключим опции:
# systemctl restart ssh.service\\ ==== SUDO ===== Разрешаем **sudo** для доменных учётных записей. Создадим отдельный файл для выдачи прав выполнять **sudo** доменным учётным записям:
# nano /etc/sudoers.d/kom-srv-linux-adminsПример содержимого файла с одной доменной группой доступа, которой разрешено выполнять **sudo** без ограничений:
# chmod 0440 /etc/sudoers.d/kom-srv-linux-adminsВ некоторых ситуациях при вызове **sudo** в контексте доменного пользователя может возникать длительная задержка при первом запросе на ввод пароля. В этом случае можно попробовать воспользоваться включением опции [[https://blog.it-kb.ru/2024/03/14/sudo-is-slow-when-using-sssd|ignore_group_members]] в секции описания домена в конфигурационном файле ''sssd.conf'' \\ ==== Финиш ===== Теперь можно вернуть имя хоста в исходное состояние, "привычное" для Debain.
# hostname KOM-SRV01После завершения настройки перезагружаем Linux-сервер, чтобы убедиться в успешном автоматическом запуске **SSSD** и последующей корректной работы аутентификации/авторизации на базе доменных учётных записей. ---- Дополнительные источники информации: * [[https://blog.it-kb.ru/2016/10/15/join-debian-gnu-linux-8-6-to-active-directory-domain-with-sssd-and-realmd-for-authentication-and-configure-ad-domain-security-group-authorization-for-sudo-and-ssh-with-putty-sso/|Подключение Debian GNU/Linux 8.6 к домену Active Directory с помощью SSSD и realmd]] * [[https://blog.it-kb.ru/2017/11/18/recommendations-for-configuring-sssd-in-debian-gnu-linux-about-dns-kerberos-and-active-directory-dc-search/|Рекомендации по настройке SSSD в Debian GNU/Linux]] * [[https://blog.it-kb.ru/2017/03/12/restricting-access-rights-to-the-linux-system-and-its-services-sshd-and-apache-through-active-directory-domain-security-groups-using-sssd-and-pam-pam_listfile/|Разграничение прав доступа к Linux-системе и её сервисам через доменные группы безопасности с помощью SSSD и PAM]] * [[https://blog.it-kb.ru/2016/10/26/configuring-basic-and-kerberos-authentication-with-sso-single-sign-on-for-the-apache-web-server-using-sssd-and-pam-service-for-authorization/|Настройка Kerberos аутентификации с SSO на веб-сервере Apache с помощью SSSD]] * [[https://blog.it-kb.ru/2017/10/26/adding-spn-entries-in-keytab-on-linux-server-using-ktutil-associated-with-computer-account-in-active-directory-domain/|Добавление SPN записей в keytab-файл (на стороне сервера Linux с помощью утилиты ktutil), связанный с учётной записью Computer в домене Active Directory]] ---- Проверено на следующих конфигурациях: ^ Версия ОС ^ |Debian GNU/Linux 12.0 (Bookworm) | ---- {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 11.07.2023 12:42 {{tag>Linux Debian "Debian 12" "Debian Bookworm" SSH sshd sudo PAM Authorization Authentication SSSD realmd "Active Directory" Kerberos}} ~~DISCUSSION~~