09/05/2021
Обычная аутентификация на современных системах под управлением ОС Linux, как правило, подразумевает использование файлов /etc/passwd и /etc/shadow, в которых содержится информация о пользователях и их паролях. Однако, недра операционной системы Linux поддерживают с помощью механизма PAM гораздо больше возможностей по аутентификации и авторизации пользователей. PAM (Pluggable Authentication Modules) — низкоуровневые библиотеки, работающие на уровне операционной системы, позволяющие задействовать различные способы идентификации пользователей. Сценарии использования модулей PAM в операционной системе Ubuntu 20.04 находятся в директории — /etc/pam.d/. Другим важным компонентом операционной системы, задействованным в вопросах аутентификации является Name Service Switch. С помощью данного сервиса ОС в том числе определяет источник данных для пользователей и их паролей. Конфигурация данной службы находится в файле — /etc/nsswitch.conf.
FreeIPA клиент в Linux позволяет интегрировать отдельные операционные системы серверов и виртуальных машин в общую управляемую среду с централизованной базой пользователей и правил безопасности. Центральной частью всей подобной системы, безусловно, является сервер FreeIPA, который требует отдельной установки и настройки. Непосредственно на клиентских операционных системах кроме самого freeIPA клиента необходим также System Security Services Daemon (SSSD), который напрямую интегрируется с модулями PAM. При этом сервис SSSD может задействовать различные способы идентификации и аутентификации пользователей — такие как LDAP, Kerberos. Конфигурация демона SSSD находится в файле /etc/sssd/sssd.conf.
Конфигурация
Вместе с установкой базового образа системы Ubuntu Linux, Вы уже получите работающие пакеты PAM и nsswitch, которые обеспечивают встроенные фреймворки аутентификации и идентификации пользователей. Для того, чтобы мы смогли подключить данную ОС к централизованной системе аутентификации, нам в первую очередь нужно установить пакет freeipa-client и соответствующие зависимости. Это делается с помощью следующих команд в консоли.
# sudo apt-get update
# sudo apt-get install freeipa-client
Также мы перед дальнейшей настройкой должны убедиться, что имя хоста прописано правильно в /etc/hostname, а также корректно сконфигурированы DNS сервера и файл /etc/hosts. Непосредстенно настройка freeipa-client происходит при запуске в консоли следующей команды.
# sudo ipa-client-install --mkhomedir --hostname=xxx.andreyus.com
В данном примере мы используем значение hostname — xxx.andreyus.com и явно это указываем при запуске команды. В процессе выполнения директивы нам нужно будет указать домен и имя сервера FreeIPA, к которому будет проходить продключение. После окончания выполнения команды останется последний штрих, чтобы обеспечить создание домашних директорий пользователей FreeIPA. Для этого добавляем в конец файла /etc/pam.d/common-session следующую строчку.
session required pam_mkhomedir.so skel=/etc/skel umask=0022
После этого непосредственная установка и настройка клиентской части в ОС Ubuntu 20.04 завершается, и мы можем проверить работоспособность и задейстовать централизованную аутентификацию на данном хосте. В частности, чтобы проверить, что аутентификация с сервера FreeIPA проходит успешно, выполним команду kinit для пользователя admin. После этого проверим полученные kerberos тикеты через klist. Пример с выводом данных команд представлен ниже.
# kinit admin
Password for admin@ANDREYUS.COM:
# klist
Ticket cache: KEYRING:persistent:0:0
Default principal: admin@ANDREYUS.COM
Valid starting Expires Service principal
05/09/21 17:29:34 05/10/21 17:29:22 krbtgt/ANDREYUS.COM@ANDREYUS.COM
По умолчанию при установке freeipa агента в Ubuntu 20.04 система настраивается таким образом, что возможно использование централизованной аутентификации, как для аутентификации ssh сессий, так и при вызове sudo. Кроме этого дефолтные правила позволяют использовать локальных пользователей и пользователей центральной базы. Содеражние файла /etc/nsswitch.conf после установки freeipa клиента приведено далее.
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: files systemd sss
group: files systemd sss
shadow: files sss
gshadow: files
hosts: files dns
networks: files
protocols: db files
services: db files sss
ethers: db files
rpc: db files
netgroup: nis sss
sudoers: files sss
automount: sss
Из содержания файла видно, что для файлов passwd, shadow, sudoers будут задействованы как локальные файлы в операционной системе, так и данные из SSSD демона. Данный демон в нашей конфигурации будет обращаться к серверу FreeIPA. На этом установку и настройку freeipa клиента на ОС Ubuntu Linux можно считать завершенной.
Резюме
Желание использовать централизованную идентификацию и аутентификацию на серверах и различных приложениях в сети свойственно большинству системных администраторов. Для инфраструктуры на базе MS Windows многие специалисты используют решение MS Active Directory. Оно стало де-факто стандартом для большинства сетей в мире. Аналогичное решение для Linux среды — система FreeIPA. Она поддерживает большое количество различных дистрибутивов, стабильно работает и продолжает развиваться. Как заставить ОС Ubuntu Linux интегрироваться в эту среду, я постарался показать в этой статье.
Не работает