У меня много проблем с FreeBSD 10.3
Я считаю, что бинарные пакеты бесполезны. Мне пришлось построить почти все, чтобы все «работало». Мне нравится использовать инструмент adcli для присоединения к домену (НАМНОГО приятнее, чем самба). Но двоичная версия в пакете не работает. Построение его из портов со всеми очевидными функциями заставляет его работать.
На данный момент у меня это есть до такой степени, что я могу успешно выполнить «getent», но, что бы я ни пытался, он не авторизует мою учетную запись. SSH, sudo, даже запуск входа напрямую, и он ведет себя так, как будто у меня неправильный пароль.
Мне интересно, нужно ли мне использовать пакет heimdal krb вместо MIT?
Вот мои соответствующие конфиги:
krb5.conf:
[libdefaults]
default_realm = MYDOMAIN-SR.NET
forwardable = true
[realms]
MYDOMAIN-SR.NET = {
admin_server = ad.mydomain-sr.net
kdc = ad.mydomain-sr.net
}
[domain_realm]
mydomain.net = MYDOMAIN-SR.NET
.mydomain.net = MYDOMAIN-SR.NET
MYDOMAIN.net = MYDOMAIN-SR.NET
.MYDOMAIN.net = MYDOMAIN-SR.NET
nsswitch.conf:
#
# nsswitch.conf(5) - name service switch configuration file
# $FreeBSD: releng/10.3/etc/nsswitch.conf 224765 2011-08-10 20:52:02Z dougb $
#
#group: compat
group: files sss
#group_compat: nis
hosts: files dns
networks: files
#passwd: compat
passwd: files sss
#passwd_compat: nis
shells: files
services: compat
services_compat: nis
protocols: files
rpc: files
sssd.conf:
[sssd]
config_file_version = 2
#domains = mydomain-sr.net
domains = MYDOMAIN-SR.NET
services = nss, pam, pac
fallback_homedir = /home/%u
debug_level = 9
[pam]
pam_verbosity = 3
[domain/MYDOMAIN-SR.NET]
id_provider = ad
access_provider = ad
auth_provider = ad
chpass_provider = ad
ldap_id_mapping = False
#cache_credentials = true
cache_credentials = false
ad_server = ad.mydomain-sr.net
override_shell = /bin/tcsh
#ldap_sasl_canonicalize = false
#krb5_canonicalize = false
(Скопировано из другого вопроса. Это мои заметки / руководство о том, как все это работает на большом клиенте с существующей инфраструктурой AD)
Установка (и интересная упаковка и проблемы с зависимостями)
/usr/bin
, а другой в /usr/local/bin
. Поскольку кажется, что ни один из базовых системных файлов не находится в пакете, вы не можете просто удалить материал Heimdal KRB. Что-то, о чем нужно знать.Прямые зависимости различных пакетов (интересные зависимости выделены жирным шрифтом, конфликтующие зависимости выделены жирным курсивом):
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, хотя у нас есть Heimdal в качестве базового пакетаadcli
хочет openldap-sasl-client
, но другие пакеты (включая подзависимости sssd
) втянуть openldap-client
, который является мьютексом с клиентом sasl (по какой-то глупой причине). Это делает установку немного болезненной, даже с минимальным набором двоичных пакетов.На момент написания этой статьи двоичный пакет для 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
выбран вариант (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 # Normally all you need in an AD environment, since DNS SRV records # will identify the AD/KRB servers/services. Comment out if you # want to manually point to your AD server dns_lookup_kdc = true [realms] MYDOMAIN.NET = { # If you're manually pointing to a different AD server than what's in 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 domains = MYDOMAIN.NET services = nss, pam, pac fallback_homedir = /home/%u [domain/MYDOMAIN.NET] id_provider = ad access_provider = ad auth_provider = ad chpass_provider = ad # use AD POSIX attributes, comment out if you are using automatically generated # UIDs and GIDs. ldap_id_mapping = False cache_credentials = true ad_server = adserver.mydomain.net # if you don't have bash, or whatever is in the AD account's loginShell # attribute installed 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 configuration for the "sshd" service # # auth auth sufficient pam_opie.so no_warn no_fake_prompts auth requisite pam_opieaccess.so no_warn allow_local #auth sufficient pam_krb5.so no_warn try_first_pass #auth sufficient pam_ssh.so no_warn try_first_pass auth sufficient pam_unix.so no_warn try_first_pass nullok auth sufficient pam_sss.so use_first_pass auth required pam_unix.so no_warn use_first_pass # account account required pam_nologin.so #account required pam_krb5.so account required pam_login_access.so account required pam_unix.so account sufficient pam_sss.so # session #session optional pam_ssh.so want_agent session optional pam_sss.so session required pam_mkhomedir.so mode=0700 session required pam_permit.so # password #password sufficient pam_krb5.so no_warn try_first_pass #password sufficient pam_unix.so try_first_pass use_authtok nullok password sufficient pam_unix.so try_first_pass use_authtok password sufficient 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 $ # # System-wide defaults # # auth auth sufficient pam_opie.so no_warn no_fake_prompts auth requisite pam_opieaccess.so no_warn allow_local #auth sufficient pam_krb5.so no_warn try_first_pass #auth sufficient pam_ssh.so no_warn try_first_pass #auth required pam_unix.so no_warn try_first_pass nullok auth sufficient pam_unix.so no_warn try_first_pass auth sufficient pam_sss.so use_first_pass auth required pam_deny.so # account #account required pam_krb5.so account required pam_login_access.so account required pam_unix.so account sufficient pam_sss.so # session #session optional pam_ssh.so want_agent session required pam_lastlog.so no_fail session optional pam_sss.so session required pam_mkhomedir.so mode=0700 # password #password sufficient pam_krb5.so no_warn try_first_pass #password required pam_unix.so no_warn try_first_pass password sufficient pam_unix.so no_warn try_first_pass nullok use_authtok password sufficient pam_sss.so use_authtok #password required pam_deny.so
/etc/pam.d/su:
# # $FreeBSD: releng/11.0/etc/pam.d/su 219663 2011-03-15 10:13:35Z des $ # # PAM configuration for the "su" service # # auth auth sufficient pam_rootok.so no_warn auth sufficient pam_self.so no_warn auth requisite pam_group.so no_warn group=wheel root_only fail_safe ruser auth include system.dist # account account include system.dist # session session required 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.Переключатель службы имен:
/etc/nsswitch.conf
файл должен быть настроен для использования службы sss для passwd и групп. Пример: 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 Suite.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>
работать без запроса пароля (конечно, при условии, что вы уже сделали "кинит").