Настройка аутентификации с доменной учетной записью на сервере контроллера домена Эллес
После развертывания контроллера домена Эллес на сервере по умолчанию отсутствует возможность аутентификации на нем с использованием доменной учетной записи (например, по протоколу SSH).
Чтобы такая возможность появилась, требуется дополнительная настройка инструментария Winbind, входящего в состав Эллес, либо установка и настройка инструментария SSSD.
| Раздел содержит максимально упрощенные примеры настройки с минимальным набором параметров при развертывании Эллес на сервере с ОС Astra Linux. |
Предварительные требования
Для успешного выполнения описываемых шагов обеспечьте соблюдение следующих требований:
-
на сервере развернут и настроен контроллер домена Эллес;
-
на сервере настроен доступ к репозиториям с пакетами используемого дистрибутива операционной системы;
-
все действия выполняются на сервере от имени учетной записи с локальными административными правами.
Настройка с использованием SSSD
|
Технология SSSD не поддерживает:
|
Для настройки возможности аутентификации на сервере контроллера домена Эллес с использованием инструментария SSSD:
-
Установите на сервере пакеты, необходимые для работы SSSD:
sudo apt install sssd sssd-tools libnss-sss libpam-sss -y
В процессе установке пакетов будет выдано оповещение о конфликте библиотек проверки паролей: по умолчанию используется библиотека cracklib; для работы SSSD требуется библиотекаpwquality. Дополнительные действия со стороны пользователя в этом случае не требуются. -
При установке SSSD модуль
pam_sss.soавтоматически добавляется в файлы конфигурации подключаемых модулей аутентификации (PAM) в каталоге /etc/pam.d.Для добавления необходимых модулей PAM вручную может использоваться инструмент
pam-auth-update. Например:sudo pam-auth-update --enable sss --disable cracklib --enable pwquality --enable tally --enable systemd --enable unix --force
Проверьте наличие в файлах строк для подключения модуля
pam_sss.so:-
убедитесь, что файл /etc/pam.d/common-auth содержит следующую строку:
auth [success=1 default=ignore] pam_sss.so use_first_pass
В этом случае при попытке аутентификации используется модуль
pam_sss.soдля проверки учетных данных пользователя в службе каталогов. Если аутентификация завершается успешно, дальнейшие проверки не выполняются. При проверке модульpam_sss.soиспользует пароль, введенный пользователем при первом запросе.Пример содержимого файла /etc/pam.d/common-auth:
auth [success=ignore default=2] pam_localuser.so auth [success=1 default=ignore] pam_succeed_if.so quiet user ingroup astra-admin auth [success=ignore default=die] pam_tally.so per_user deny=8 auth [success=2 default=ignore] pam_unix.so nullok_secure try_first_pass auth [success=1 default=ignore] pam_sss.so use_first_pass auth requisite pam_deny.so auth required pam_permit.so
-
убедитесь, что файл /etc/pam.d/common-account содержит следующую строку:
account [default=bad success=ok user_unknown=ignore] pam_sss.so
В этом случае при попытке аутентификации проверяется, что учетная запись существует и активна в службе каталогов. Если учетная запись найдена и активна, аутентификация считается успешной. Если учетная запись не найдена, это не считается ошибкой, и аутентификация может быть продолжена другими модулями PAM.
Пример содержимого файла /etc/pam.d/common-account:
account required pam_tally.so account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so account requisite pam_deny.so account required pam_permit.so account [success=1 default=ignore] pam_localuser.so account [default=bad success=ok user_unknown=ignore] pam_sss.so
-
убедитесь, что файл /etc/pam.d/common-password содержит следующую строку:
password [success=1 default=ignore] pam_sss.so use_authtok
В этом случае при попытке аутентификации модуль
pam_sss.soпроверяет, совпадает ли введенный пользователем пароль с паролем, сохраненным в службе каталогов. Если пароль найден и совпадет, аутентификация считается успешной, и другие методы проверки пароля не используются. При проверке используется уже существующий токен аутентификации (полученный при предыдущей проверке). Если проверка завершается неуспешно, система переходит к другим заданным в файле правилам.Пример содержимого файла /etc/pam.d/common-password:
password requisite pam_pwquality.so retry=3 password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass gost12_512 password [success=1 default=ignore] pam_sss.so use_authtok password requisite pam_deny.so password required pam_permit.so
-
убедитесь, что файл /etc/pam.d/common-session содержит следующую строку:
session optional pam_sss.so
В этом случае во время сеанса пользователя выполняется попытка использовать модуль
pam_sss.soдля получения информации о пользователе и управления его сеансом. Если SSSD недоступен или возникает ошибка, сеанс пользователя продолжается без его использования.Для настройки создания домашнего каталога при входе пользователя с доменной учетной записью в систему также добавьте следующую строку:
session optional pam_mkhomedir.so skel=/etc/skel umask=077
В этом случае при создании домашнего каталога используется шаблон
/etc/skel, а для новых файлов и подкаталогов устанавливается маска доступа077.Пример содержимого файла /etc/pam.d/common-session:
session [default=1] pam_permit.so session requisite pam_deny.so session required pam_permit.so session required pam_unix.so session optional pam_sss.so session optional pam_systemd.so session optional pam_mkhomedir.so skel=/etc/skel umask=077
-
-
При установке SSSD в файл /etc/nsswitch.conf добавляется соответствующий поставщик (
sss) данных для поиска доменных пользователей и групп в локальном пространстве имен хоста контроллера. Убедитесь, что в файле отсутствуетwinbind.Пример содержимого файла /etc/nsswitch.conf для работы с SSSD:
passwd: files sss group: files 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 automount: sss
-
Создайте конфигурационный файл sssd.conf.
Пример конфигурационного файла /etc/sssd/sssd.conf с минимальным набором настроек:
[sssd] domains = elles.inno.tech config_file_version = 2 services = nss, pam [domain/elles.inno.tech] ad_domain = elles.inno.tech ad_server = dc1.elles.inno.tech id_provider = ad auth_provider = ad access_provider = ad ldap_id_mapping = True ad_gpo_access_control = permissive default_shell = /bin/bash fallback_homedir = /home/%d/%u ad_maximum_machine_account_password_age = 0 krb5_keytab = /app/inno-samba/private/secrets.keytab cache_credentials = true [pam] offline_credentials_expiration = 3
В примере конфигурации:
-
значение
0в параметреad_maximum_machine_account_password_ageотключает периодическое обновление пароля машинной учетной записи сервера контроллера домена средствами SSSD;Для этой цели необходимо использовать скрипт update-dc-machine-password, поставляемый в составе Эллес (см. раздел «Смена пароля машинной учетной записи контроллера домена»). -
параметр
krb5_keytabуказывает путь к keytab-файлу, сформированному Эллес; -
значение
trueв параметреcache_credentialsвключает сохранение учетных данных в кэше SSSD после успешного входа; -
параметр
offline_credentials_expirationв блокеpamограничивает период в днях, в течение которого запись с учетными данными пользователя может храниться в кэше.
Остальные параметры настраиваются для работы SSSD с Active Directory в качестве поставщика идентифицирующей информации в соответствии с особенностями развертывания конкретного экземпляра Эллес.
См. описание параметров и доступных значений в справочных страницах:
man sssd-ad man sssd.conf
-
-
Выдайте корректные права для доступа к файлу sssd.conf:
sudo chmod 0600 /etc/sssd/sssd.conf
-
Запустите сервис
sssd:sudo systemctl start sssd.service
-
Проверьте корректность подключения к домену через SSSD, используя, например,
sssctl:-
просмотр списка доменов:
sudo sssctl domain-list elles.inno.tech
-
получение информации о домене:
sudo sssctl domain-status elles.inno.tech Online status: Online Active servers: AD Global Catalog: dc1.elles.inno.tech AD Domain Controller: dc1.elles.inno.tech Discovered AD Global Catalog servers: - dc1.elles.inno.tech Discovered AD Domain Controller servers: - dc1.elles.inno.tech - dc2.elles.inno.tech - dc3.elles.inno.tech
-
-
При необходимости настройте возможность входа в систему пользователей с доменными учетными записями по протоколу SSH.
Пример настройки простого доступа с использованием аутентификации PAM с паролем для пользователей из группыDomain Adminsлокального домена и доверенного домена (ad.inno.tech):-
добавьте следующие настройки в конфигурационный файл SSH-сервера /etc/ssh/sshd_config:
UsePAM yes PasswordAuthentication yes AllowGroups admin root sudo "domain admins" "domain admins@ad.inno.tech"
В примере:
-
domain admins— имя группы в локальном домене и доверенном домене в нижнем регистре; -
ad.inno.tech— полное имя доверенного домена.
Данные настройки приводятся исключительно в качестве примера. В условиях реальной эксплуатации для аутентификации по SSH рекомендуется использовать сертификаты или ключи. -
-
перезапустите службу
sshd:sudo systemctl restart sshd.service
-
-
При необходимости предоставьте локальные права пользователям с доменными учетными записями.
Например, для группы пользователейDomain Adminsв локальном домене и доверенном домене (ad.inno.tech):-
создайте файл с описанием разрешений для группы в каталоге /etc/sudoers.d:
echo -e "%Domain\ Admins ALL=(ALL) PASSWD: ALL" >> /etc/sudoers.d/domain_admins # для группы в локальном домене echo -e "%Domain\ Admins@AD.INNO.TECH ALL=(ALL) PASSWD: ALL" >> /etc/sudoers.d/domain_admins # для группы в доверенном домене с полным именем ad.inno.tech
-
выдайте корректные права для доступа к созданному файлу:
chmod 0440 /etc/sudoers.d/domain_admins
-
убедитесь в корректности настройки:
visudo -cf /etc/sudoers.d/domain_admins
-
-
Для проверки корректности настройки выполните вход на сервер с использованием доменной учетной записи из группы
Domain Admins, в том числе с другого хоста в домене по SSH.
Настройка с использованием Winbind
Для настройки аутентификации средствами Winbind:
-
Убедитесь, что на хосте отсутствуют настройки для аутентификации средствами SSSD. При наличии — удалите их.
-
Для использования библиотек libnss_winbind.so.2 и pam_winbind.so, устанавливаемых при развертывании Эллес, создайте символические ссылки на них:
-
получите пути к библиотекам после установки Эллес:
sudo find / -xdev -type f -name libnss_winbind.so.2 -o -name pam_winbind.so /app/inno-samba/lib/libnss_winbind.so.2 /app/inno-samba/lib/security/pam_winbind.so
-
создайте символические ссылки:
sudo ln -s /app/inno-samba/lib/libnss_winbind.so.2 /lib/x86_64-linux-gnu/ sudo ln -s /lib/x86_64-linux-gnu/libnss_winbind.so.2 /lib/x86_64-linux-gnu/libnss_winbind.so sudo ln -s /app/inno-samba/lib/security/pam_winbind.so /lib/security/pam_winbind.so ldconfig
-
-
В файле настроек диспетчера службы имен /etc/nsswitch.conf укажите
winbindв качестве поставщика данных для поиска доменных пользователей и групп в локальном пространстве имен хоста контроллера домена:... passwd: files winbind group: files winbind ...
-
При необходимости в конфигурационном файле Эллес /app/inno-samba/etc/smb.conf укажите шаблон пути для домашнего каталога прошедшего аутентификацию доменного пользователя (по умолчанию —
/home/%D/%U) и командную оболочку (по умолчанию —/bin/false). Например:[global] ... template shell = /bin/bash template homedir = /home/%U ... -
Для применения внесенных изменений перезапустите сервис
inno-samba:sudo systemctl restart inno-samba.service
-
Добавьте модуль
pam_winbind.soв файлы конфигурации подключаемых модулей аутентификации (PAM) в каталоге /etc/pam.d:-
добавьте в файл /etc/pam.d/common-auth следующую строку:
auth sufficient pam_winbind.so use_first_pass
В этом случае при попытке аутентификации пользователя система в первую очередь пытается найти его учетную запись в службе каталогов через модуль
pam_winbind.so. Если учетная запись найдена и пароль совпадет, то аутентификация считается успешной, и другие методы аутентификации не используются.Пример содержимого файла /etc/pam.d/common-auth после добавления строки:
auth [success=ignore default=2] pam_localuser.so auth [success=1 default=ignore] pam_succeed_if.so quiet user ingroup astra-admin auth [success=ignore default=die] pam_tally.so per_user deny=8 auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth sufficient pam_winbind.so use_first_pass auth requisite pam_deny.so auth required pam_permit.so
-
добавьте в файл /etc/pam.d/common-account следующую строку:
account [default=bad success=ok user_unknown=ignore] pam_winbind.so
В этом случае при попытке аутентификации проверяется, что учетная запись существует и активна в службе каталогов. Если учетная запись найдена и активна, аутентификация считается успешной. Если учетная запись не найдена, то это не считается ошибкой, и аутентификация может быть продолжена другими модулями PAM.
Пример содержимого файла /etc/pam.d/common-account после добавления строки:
account required pam_tally.so account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so account requisite pam_deny.so account [default=bad success=ok user_unknown=ignore] pam_winbind.so account required pam_permit.so
-
добавьте в файл /etc/pam.d/common-password следующую строку:
password sufficient pam_winbind.so use_authtok
В этом случае при попытке аутентификации проверяется, совпадает ли введенный пользователем пароль с паролем, сохраненным в службе каталогов. Если пароль найден и совпадет, то аутентификация считается успешной, и другие методы проверки пароля не используются. При этом модуль
pam_winbind.soиспользует результат предыдущей проверки аутентификации, чтобы не запрашивать пароль повторно.Пример содержимого файла /etc/pam.d/common-password после добавления строки:
password requisite pam_cracklib.so retry=3 minlen=8 difok=3 password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass gost12_512 password sufficient pam_winbind.so use_authtok password requisite pam_deny.so password required pam_permit.so
-
для настройки создания домашнего каталога при входе пользователя с доменной учетной записью в систему добавьте в файл /etc/pam.d/common-session следующую строку:
session optional pam_mkhomedir.so skel=/etc/skel umask=077
В этом случае при успешной аутентификации пользователя предпринимается попытка создать для него домашний каталог. Если по каким-либо причинам создать каталог не удается, сеанс пользователя все равно создается. При создании домашнего каталога используется шаблон
/etc/skel, а для новых файлов и подкаталогов устанавливается маска доступа077.Пример содержимого файла /etc/pam.d/common-session после добавления строки:
session [default=1] pam_permit.so session requisite pam_deny.so session required pam_permit.so session required pam_unix.so session optional pam_systemd.so session optional pam_mkhomedir.so skel=/etc/skel umask=077
-
-
При необходимости настройте возможность входа в систему пользователей с доменными учетными записями по протоколу SSH.
Пример настройки простого доступа с использованием аутентификации PAM с паролем для пользователей из группыDomain Adminsлокального домена и доверенного домена (ad.inno.tech):-
добавьте следующие настройки в конфигурационный файл SSH-сервера /etc/ssh/sshd_config:
UsePAM yes PasswordAuthentication yes AllowGroups admin root sudo "domain admins" "AD\domain admins"
В примере:
-
domain admins— имя группы в локальном домене и доверенном домене в нижнем регистре; -
AD— NetBIOS-имя доверенного домена.
Данные настройки приводятся исключительно в качестве примера. В условиях реальной эксплуатации для аутентификации по SSH рекомендуется использовать сертификаты или ключи. -
-
перезапустите службу
sshd:sudo systemctl restart sshd.service
-
-
При необходимости предоставьте локальные права пользователям с доменными учетными записями.
Например, для группы пользователейDomain Adminsв локальном домене и доверенном домене (ad.inno.tech):-
создайте файл с описанием разрешений для группы в каталоге /etc/sudoers.d:
echo -e "%Domain\ Admins ALL=(ALL) PASSWD: ALL" >> /etc/sudoers.d/domain_admins # для группы в локальном домене echo -e "%AD\\Domain\ Admins ALL=(ALL) PASSWD: ALL" >> /etc/sudoers.d/domain_admins # для группы в доверенном домене с NetBIOS-именем AD
-
выдайте корректные права для доступа к созданному файлу:
chmod 0440 /etc/sudoers.d/domain_admins
-
убедитесь в корректности настройки:
visudo -cf /etc/sudoers.d/domain_admins
-
-
Для проверки корректности настройки выполните вход на сервер с использованием доменной учетной записи из группы
Domain Admins, в том числе с другого хоста в домене по SSH.