Каковы необходимые шаги для аутентификации пользователей из Active Directory, работающей на Windows Server 2012 R2 во FreeBSD 10.0, sssd
с использованием серверной части AD с работающим Kerberos TGT?
Каковы необходимые шаги для аутентификации пользователей из Active Directory, работающей на Windows Server 2012 R2 во FreeBSD 10.0, sssd
с использованием серверной части AD с работающим Kerberos TGT?
Ответы:
Есть несколько хитрых соображений, чтобы все работало «из коробки». В sssd
данный момент FreeBSD поддерживает только версию 1.9.6. Так что нет никакой поддержки для основных имен предприятий.
Если у вас есть домен с несоответствующими именами UPN, он не сможет войти в систему, так как аутентификация Kerberos не будет выполнена во время процесса, даже если FreeBSD поддерживает основные корпоративные имена с Kerberos, sssd
этот случай не может быть обработан.
Таким образом, в реальной версии sssd
вы ограничены тем, что основное имя пользователя находится в одном доменном имени, например:
Domain Name = example.com
NetBIOS Name = EXAMPLE
User Principal Name:
username@example.com sAMAccountName: username
Зная это, мы можем описать шаги для успешной аутентификации пользователей из AD во FreeBSD.
Создайте файл /etc/krb5.conf
со следующим содержанием:
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = yes
Установите Samba 4.1:
$ pkg install samba41
Создайте файл /usr/local/etc/smb4.conf
со следующим содержанием:
[global]
security = ads
realm = EXAMPLE.COM
workgroup = EXAMPLE
kerberos method = secrets and keytab
client signing = yes
client use spnego = yes
log file = /var/log/samba/%m.log
Спросите у администратора билет Kerberos:
$ kinit Administrator
Затем присоединитесь к домену и создайте таблицу ключей.
$ net ads join createupn=host/server-hostname.example.com@EXAMPLE.COM -k
$ net ads keytab create -k
Установите необходимые пакеты:
$ pkg install sssd cyrus-sasl-gssapi
Отредактируйте файл, /usr/local/etc/sssd/sssd.conf
чтобы он соответствовал этим настройкам:
[sssd]
config_file_version = 2
services = nss, pam
domains = example.com
[nss]
[pam]
[domain/example.com]
# Uncomment if you need offline logins
#cache_credentials = true
id_provider = ad
auth_provider = ad
access_provider = ad
chpass_provider = ad
# Comment out if the users have the shell and home dir set on the AD side
default_shell = /bin/tcsh
fallback_homedir = /home/%u
# Uncomment and adjust if the default principal SHORTNAME$@REALM is not available
#ldap_sasl_mech = GSSAPI
#ldap_sasl_authid = SERVER-HOSTNAME$@EXAMPLE.COM
Отредактируйте файл, /etc/nsswitch.conf
чтобы он соответствовал этим настройкам:
group: files sss
passwd: files sss
Установите дополнительные пакеты для создания домашнего каталога:
$ pkg install pam_mkhomedir
Измените необходимые PAM
области, чтобы соответствовать этим настройкам:
auth sufficient /usr/local/lib/pam_sss.so
account required /usr/local/lib/pam_sss.so ignore_unknown_user
session required /usr/local/lib/pam_mkhomedir.so mode=0700
session optional /usr/local/lib/pam_sss.so
password sufficient /usr/local/lib/pam_sss.so use_authtok
$ pkg remove -f openldap-client
$ pkg install openldap-sasl-client
$ getent passwd <username>
Какой Kerberos вы используете здесь? Встроенный или security / krb5 от MIT?
При установке sssd требуется установить security / krb5, который на данный момент все еще считается экспериментальным во FreeBSD. Таким образом, этот вопрос.
Мне не повезло в получении пользователей / групп AD при выполнении команд getent. это может быть связано с тем, что имя NETBIOS отличается от имени домена -ie в моем случае, имя домена - dawnsign.com, а имя NETBIOS - DSP.
Я настроил только модуль входа в систему pam.d. Какие другие модули pam необходимо отредактировать для успешной аутентификации?
Любая дополнительная информация будет принята с благодарностью!
Перекомпиляция samba4 из портов позволяет использовать аутентификацию winbind как linux даже без sssd. Просто перекомпилируйте samba4 из портов после включения sasl ldap
pkg remove samba41
pkg install cyrus-sasl-gssapi samba36-libsmbclient pam_mkhomedir ldb
pkg remove -f openldap-client
pkg install openldap-sasl-client
cd /usr/ports/security/sssd && make install
Это перекомпилирует samba со всей необходимой поддержкой (gssapi, ldap, kerberos), а затем отредактируйте nsswitch.conf следующим образом
passwd: files winbind
group: files winbind
Привет,
Это небольшое обновление по использованию sssd v1.11.7
Если вы используете "id_provider = ad" и видите следующую ошибку в лог-файле sssd:
/var/log/sssd/sssd_example.com.log
(Sun Oct 5 18:41:37 2014) [sssd[be[alidaho.com]]] [sasl_bind_send] (0x0020): ldap_sasl_bind failed (-12)[Not Supported]
(Sun Oct 5 18:41:37 2014) [sssd[be[alidaho.com]]] [sasl_bind_send] (0x0080): Extended failure message: [unknown error]
Вы можете использовать следующую процедуру для решения этой проблемы и обеспечения правильной работы интеграции AD. Теперь соберите sssd v1.11.7 с поддержкой Samba, необходима сборка из src sssd, поэтому она связана с libsasl2
pkg remove samba41
pkg install cyrus-sasl-gssapi samba36-libsmbclient pam_mkhomedir ldb
pkg remove -f openldap-client
pkg install openldap-sasl-client
cd /usr/ports/security/sssd && make install
Установка (и забавные вопросы упаковки и зависимости)
/usr/bin
, а другой - /usr/local/bin
. Поскольку кажется, что ни один из базовых системных файлов не находится в пакете, вы не можете просто удалить содержимое Heimdal KRB. Что-то, о чем нужно знать.Прямые зависимости различных пакетов (интересные deps жирным шрифтом, конфликтующие deps жирным курсивом):
net-mgmt/adcli:
net/openldap24-sasl-client
security/cyrus-sasl2-gssapi: security/cyrus-sasl2
net/openldap24-sasl-client: security/cyrus-sasl2
security/sssd: security/nss
security/sssd:
security/krb5
security/sssd: security/cyrus-sasl2
security/sssd:
net/openldap24-client
security/sssd: lang/python27
security/sssd: lang/python2
security/sssd: dns/c-ares
security/sssd: devel/tevent
security/sssd: devel/talloc
security/sssd: devel/popt
security/sssd: devel/pcre
security/sssd: devel/libunistring
security/sssd: devel/libinotify
security/sssd: devel/gettext-runtime
security/sssd: devel/ding-libs
security/sssd: devel/dbus
security/sssd: databases/tdb
security/sssd: databases/ldb
Обратные зависимости различных пакетов:
net/openldap24-sasl-client: sysutils/msktutil
net/openldap24-sasl-client: net/nss-pam-ldapd-sasl
net/openldap24-sasl-client: net-mgmt/adcli
sssd
, MIT требует Kerberos, хотя в качестве базового пакета у нас есть Heimdaladcli
хочет openldap-sasl-client
, но другие пакеты (включая подчиненные зависимости sssd
) openldap-client
извлекаются, что является мьютексом с клиентом sasl (по какой-то глупой причине). Это затрудняет установку даже при минимальном наборе бинарных пакетов.На момент написания статьи бинарный пакет pkg для SSSD для FreeBSD не включал поддержку AD в SSSD.
SMB
adcli
существует, но на момент написания статьи не работает.
GSSAPI_MIT
cyrus-sasl-gssapi
требуется, но двоичная версия pkg не работает и имеет странные проблемы с зависимостями, которые приводят к удалению SSSD.
GSSAPI_MIT
openldap-sasl-client
требуется для функциональности, но SSSD хочет использовать версию openldap, отличную от SASL.
openldap-sasl-client
с GSSAPI
параметром selected ( make config
) в портах.pkg remove –f openldap-client
openldap-client
без каких-либо автоматических удалений любых других пакетов (например, SSSD) и позволит установить версию SASLopenldap-sasl-client
pkg remove –f sssd
(Необязательно) Когда все работает и проверено, вы можете использовать pkg create
для создания бинарных пакетов из четырех пакетов с включенными надлежащими параметрами и использовать их вместо построения их в портах в каждой системе. Установка бинарного аналогична процессу сборки портов:
pkg install sssd-1.11.7_8.txz
pkg add
другие пакеты (не устанавливать, не добавлять), сохраняя пакет openldap для последнего.openldap-sasl-client
сделайтеpkg remove –f openldap-client
pkg add openldap-sasl-client-2.4.44.txz
pkg create
чтобы заменить зависимость от openldap-client
с , openldap-sasl-client
чтобы избавиться от необходимости делать это удалить / переустановить. У меня не было времени заняться этим.
openldap-client
, поэтому вам также придется их исправить.Конфигурация Kerberos:
[libdefaults] default_realm = MYDOMAIN.NET forwardable = true # Обычно все, что вам нужно в среде AD, так как записи DNS SRV # идентифицирует серверы / сервисы AD / KRB. Прокомментируйте, если вы # хотите вручную указать на свой сервер AD dns_lookup_kdc = true [] сферы MYDOMAIN.NET = { # Если вы вручную указываете на другой сервер AD, чем в DNS # admin_server = adserver.mydomain.net # kdc = adserver.mydomain.net } [Domain_realm] mydomain.net = MYDOMAIN.NET .mydomain.net = MYDOMAIN.NET
[SSSD] config_file_version = 2 домены = MYDOMAIN.NET services = nss, pam, pac fallback_homedir = / home /% u [Домен / MYDOMAIN.NET] id_provider = ad access_provider = объявление auth_provider = ad chpass_provider = ad # использовать атрибуты AD POSIX, комментировать, если вы используете автоматически сгенерированный # UID и GID. ldap_id_mapping = False cache_credentials = true ad_server = adserver.mydomain.net # если у вас нет bash или чего-либо еще в loginShell учетной записи AD # атрибут установлен override_shell = / bin / tcsh
/etc/pam.d
файлов, которые мне пришлось изменить, чтобы SSSD работал с FreeBSD:/etc/pam.d/sshd:
# # $ FreeBSD: releng / 11.0 / etc / pam.d / sshd 197769 2009-10-05 09: 28: 54Z des $ # # Настройка PAM для службы "sshd" # # auth достаточно аутентичный pam_opie.so no_warn no_fake_prompts требуется авторизация pam_opieaccess.so no_warn allow_local #auth достаточно pam_krb5.so no_warn try_first_pass #auth достаточно pam_ssh.so no_warn try_first_pass достаточно аутентичный pam_unix.so no_warn try_first_pass nullok достаточно аутентичный pam_sss.so use_first_pass требуется авторизация pam_unix.so no_warn use_first_pass # Счет требуется учетная запись pam_nologin.so #account required pam_krb5.so требуется учетная запись pam_login_access.so требуется учетная запись pam_unix.so достаточно аккаунта pam_sss.so # сессия #session необязательный pam_ssh.so want_agent сеанс необязательный pam_sss.so требуется сеанс pam_mkhomedir.so mode = 0700 требуется сеанс pam_permit.so # пароль #password достаточный pam_krb5.so no_warn try_first_pass #password достаточный pam_unix.so try_first_pass use_authtok nullok достаточно пароля pam_unix.so try_first_pass use_authtok достаточно пароля pam_sss.so use_authtok
/etc/pam.d/system:
# # $ FreeBSD: releng / 11.0 / etc / pam.d / system 197769 2009-10-05 09: 28: 54Z des $ # # Общесистемные значения по умолчанию # # auth достаточно аутентичный pam_opie.so no_warn no_fake_prompts требуется авторизация pam_opieaccess.so no_warn allow_local #auth достаточно pam_krb5.so no_warn try_first_pass #auth достаточно pam_ssh.so no_warn try_first_pass #auth требуется pam_unix.so no_warn try_first_pass nullok достаточно аутентичный pam_unix.so no_warn try_first_pass достаточно аутентичный pam_sss.so use_first_pass требуется авторизация pam_deny.so # Счет #account required pam_krb5.so требуется учетная запись pam_login_access.so требуется учетная запись pam_unix.so достаточно аккаунта pam_sss.so # сессия #session необязательный pam_ssh.so want_agent требуется сеанс pam_lastlog.so no_fail сеанс необязательный pam_sss.so требуется сеанс pam_mkhomedir.so mode = 0700 # пароль #password достаточный pam_krb5.so no_warn try_first_pass #password требуется pam_unix.so no_warn try_first_pass достаточно пароля pam_unix.so no_warn try_first_pass nullok use_authtok достаточно пароля pam_sss.so use_authtok #password требуется pam_deny.so
/etc/pam.d/su:
# # $ FreeBSD: releng / 11.0 / etc / pam.d / su 219663 2011-03-15 10: 13: 35Z des $ # # Настройка PAM для службы su # # auth достаточно аутентичный pam_rootok.so no_warn достаточно аутентичный pam_self.so no_warn требуется авторизация pam_group.so no_warn group = колесо root_only fail_safe ruser auth include system.dist # Счет Аккаунт включает system.dist # сессия требуется сеанс pam_permit.so
(Отступ)
system.dist
является копией стокового /etc/pam.d/system
файла Он включен в /etc/pam.d/su
файл выше, чтобы избежать проблем с командой su.su
учетные записи AD в качестве пользователя root, поскольку после получения имени root su
не нужно проходить проверку подлинности, а информация об учетной записи передается через переключатель службы имен через SSSD.sudo
только из соображений безопасностиksu
и это работает для переключения с пользователя A на пользователя B
ksu
(в /usr/bin
) по умолчанию SUID не установлен
ksu
работать,chmod u+s /usr/bin/ksu
krb5
пакет установлен в /usr/local/bin
) является SUID при установке/usr/local/bin
как раньше /usr/bin
, и т. Д.ksu
запросит у пользователя пароль AD / Kerberos целевого пользователяpasswd
не удастся изменить пароль AD / Kerberos, даже если вы добавите pam_sss.so
PAM-файл passwd. passwd
Двоичная поддерживает только локальную и NIS Использование kpasswd
изменить пароль на AD / сервер Kerberos (s).Переключатель службы имен:
/etc/nsswitch.conf
Файл должен быть настроен на использование SSS сервиса для паролей и групп. Пример:
group: files sss
passwd: files sss
Присоединение к домену:
adcli
kinit
перед использованием, он делает это для вас на основе предоставленных кредитов.
adcli join -D mydomain.net -U Administrator--show-details –v
adcli join –H adclient.mydomain.net -D mydomain.net -U Administrator --show-details -v
net
утилита
net
Утилита является частью пакета Samba.smb.conf
файле конфигурации, что делает его более сложным и неудобным в использовании, особенно неинтерактивно.kinit
. Опять же, это более неудобно и усложняет неинтерактивное использование в скрипте, так как вместо одного есть два шага.
Соображения SSHD:
/etc/ssh/sshd_config
GSSAPIAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication yes
PasswordAuthentication no
при использовании этой опции./bin/passwd
, который не поддерживает ничего, кроме NIS и локального файла passwd.GSSAPICleanupCredentials yes
kdestroy
при выходеGSSAPIStrictAcceptorCheck no
host/<FQDN>@REALM
для связи с KDC, но иногда ошибается (например, если имя хоста не соответствует DNS-имени сервера SSH). Эта опция позволяет SSHD использовать любого участника в /etc/krb5.keytab
файле, который включает в себяhost/<FQDN>@REALM
ssh -K <ip>
работали без запроса пароля (при условии, что вы уже выполнили «kinit», конечно).