Проблемы интеграции FreeBSD 10.3 SSSD AD

У меня много проблем с 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
1
задан 15 June 2017 в 22:52
1 ответ

(Скопировано из другого вопроса. Это мои заметки / руководство о том, как все это работает на большом клиенте с существующей инфраструктурой AD)

Вот мое руководство по интеграции AD через SSSD с этими версиями FreeBSD, на момент написания этой статьи (6/2017)

  • FreeBSD 10.3 и 11.0 (10.3-RELEASE-p18 и 11.0-RELEASE-p9)
  • Установка (и забавная упаковка и проблемы с зависимостями)

    • Требуемые пакеты не кажутся совместимыми с Heimdal Kerberos, поэтому все должно быть установлено и скомпилировано с помощью MIT Флаги Kerberos включены. Вероятно, это скорее зависимость от упаковки проблема, чем фактическая проблема совместимости.
    • Heimdal устанавливается вместе с базовой системой, так что это оставляет вас с два набора команд Kerberos, если вы устанавливаете MIT Kerberos, один набор в / usr / bin , а другой в / usr / local / bin . Поскольку ни одна из базовых системные файлы, кажется, находятся в пакете, вы не можете просто удалить Хеймдаль 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
      • безопасность / sssd: net / openldap24-client
      • security / sssd: lang / python27
      • security / sssd: lang / python2
      • security / sssd: dns / c-ares
      • security / sssd: devel / tevent
      • безопасность / sssd: devel / talloc
      • security / sssd: devel / popt
      • security / sssd: devel / pcre
      • security / sssd: devel / libunistring
      • security / sssd: devel / libinotify
      • безопасность / sssd: devel / gettext-runtime
      • безопасность / sssd: devel / ding-libs
      • безопасность / sssd: devel / dbus
      • безопасность / sssd: базы данных / tdb
      • безопасность / 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

      • Версия SSSD для портов должна была быть собран с соответствующими включенными опциями (make config):
        • SMB
      • SSSD также хочет использовать openldap-client, когда ему действительно нужен openldap-sasl-client для правильной работы.
    • Бинарная версия pkg adcli существует, но с это письмо не работает.
      • И снова версия портов была скомпилирована с правильными включенными опциями:
        • GSSAPI_MIT
    • cyrus-sasl-gssapi требуется, но двоичная версия pkg не работает и имеет странные проблемы с зависимостями, которые заставляют ее удалять SSSD.
      • Создайте его из портов с включенной опцией MIT-KRB5:
        • GSSAPI_MIT
    • openldap-sasl-client требуется для функциональности, но SSSD хочет использовать версию openldap без SASL.
      • Чтобы заставить эту работу
        • настройте openldap-sasl-client с выбранной опцией GSSAPI ( make config ) в портах.
        • Выполните make in порты для сборки
        • Перед make install выполните команду pkg remove –f openldap-client
          • Это удалит openldap-client , не выполняя никаких автоудалений. любые другие пакеты (например, SSSD) и разрешить установку версии SASL
        • Выполните make install для openldap-sasl-client
          • Это установит его в систему
    • Это предоставит все, что необходимо для функциональный SSSD с возможностями AD.
    • Обратите внимание, что если вы компилируете SSSD из портов, он будет извлекать МНОГО зависимостей, что приведет к их построению и потребует выбора параметров конфигурации.
      • Рекомендуется сначала установить двоичный пакет с помощью pkg install sssd, а затем удалить его с помощью pkg remove –f sssd
        • Это приведет к появлению двоичных пакетов для большинства вещей, которые необходимо вставить SSSD, и Устраните необходимость сборки всего этого в зависимости от портов, что займет довольно много времени.
      • После удаления переустановите SSSD из портов с включенными вышеупомянутыми параметрами, и вам нужно будет только перестроить четыре упомянутых выше пакета, чтобы получить рабочий setup.
    • (Необязательно) После того, как все будет работать и проверено, вы можете использовать pkg create для создания двоичных пакетов из четырех пакетов с соответствующими включенными опциями и использовать их вместо того, чтобы создавать их в портах на каждом система. Установка двоичного файла выполняется аналогично процессу сборки портов:

      • pkg install sssd-1.11.7_8.txz
        • Ваша версия, конечно, может отличаться.
        • Это установит двоичный пакет для SSSD и загрузит все это необходимо из репозитория FreeBSD.
      • pkg добавить другие пакеты (не устанавливать, добавить), сохраняя пакет openldap последним.
      • Перед добавлением openldap-sasl-client выполните pkg remove –f openldap-client
        • Это избавляет от версии, отличной от SASL, и позволяет установить нашу версию
      • pkg add openldap-sasl-client-2.4.44.txz
        • Опять же, ваша версия может быть другой.
      • Вам следует завершить установку необходимых пакетов.
      • Возможно возможно изменить метаданные для двоичного файла SSSD перед выполнением pkg create для замены зависимости от openldap-client на openldap-sasl-client , чтобы устранить необходимость в выполнении этого удаления / переустановки. У меня не было времени заняться этим.
        • Кроме того, существуют подчиненные зависимости SSSD, которые также включают openldap-client , поэтому вам также придется исправить их.
      • Обратите внимание, что все эти примечания относятся к версиям эти пакеты в настоящее время находятся в дереве портов на момент написания , и зависимости, которые они с ними связали. Все это может измениться, когда FreeBSD обновит дерево портов и двоичные файлы. Возможно, однажды у нас будет двоичная версия всего, что извлекает все правильные зависимости с правильными параметрами, настроенными для функциональности AD прямо из коробки.
    • Конфигурация Kerberos:

      • Пример файла /etc/krb5.conf:
[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:
      • В этом примере предполагается, что атрибуты POSIX в AD для пользователей и групп, как правило, требуются при замене существующей среды, в которой уже установлены UID и GID.
      • Пример файла /usr/local/etc/sssd/sssd.conf:
[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
  • (отступ)
    • Конфигурация PAM:
      • Конфигурация PAM во FreeBSD немного сложна из-за того, как работает OpenPAM. Я не буду вдаваться в подробности, но чтобы использовать pam_sss для SSSD и заставить его работать, а также работать с паролями для входа в систему, вам нужно дважды поместить pam_unix в файл. Насколько я понимаю, это связано со вторичной проверкой, которая выполняется «за кулисами», для которой требуется прохождение второго модуля pam_unix.
        • Вот список файлов /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
  • (indent)

    • Примечания:
      • system.dist - это копия стандартного файла /etc/pam.d/system . Он включен в файл /etc/pam.d/su выше, чтобы предотвратить проблемы с командой su.
      • Можно по-прежнему использовать su для учетных записей AD как root, поскольку после получения root su не требуется аутентификация, а информация об учетной записи передается через переключатель службы имен через SSSD.
      • Если вы действительно хотите переключиться с одного пользователя (не root) на другого, следует использовать sudo только по соображениям безопасности
      • Вы также можете использовать ksu и это работает для переключения с пользователя A на пользователя B
        • Хеймдаль ksu / usr / bin ) не имеет SUID, установленного по умолчанию.
          • Чтобы заставить Heimdal ksu работать, chmod u + s / usr / bin / ksu
        • MIT Kerberos ( krb5 пакет, установленный в / usr / local / bin ) - SUID при установке
      • Поскольку Heimdal является частью базового пакета, у вас будут оба набора двоичных файлов Kerberos.
        • Вы можете изменить пути по умолчанию так, чтобы / 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
    • Присоединение к домену:

      • На * nixs есть два основных инструмента для присоединения к вашему Linux-серверу
        • adcli
          • Это мой любимый инструмент. Он работает очень хорошо, и все можно сделать в одной командной строке. Учетные данные могут быть предоставлены не интерактивно (через стандартный ввод и т. Д.)
          • Не требует выполнения kinit перед использованием, он делает это за вас на основе предоставленных кредитов.
            • Пример:
              • adcli join -D mydomain.net -U Администратор - show-details –v
              • adcli join –H adclient.mydomain.net -D mydomain.net -U Администратор --show-details -v
                • Эта форма рекомендуется, поскольку утилита не всегда правильно определяет полное доменное имя. Когда вы предоставляете полное доменное имя, которое соответствует как прямому, так и обратному DNS для узла, принципы создаются правильно. Если утилита использует неправильное имя хоста (например, не включая домен DNS), некоторые субъекты служб не будут созданы, и такие вещи, как SSH на хосте, могут выйти из строя.
        • Утилита Samba net
          • Утилита net является частью пакета Samba.
          • Эта утилита требует, чтобы данные домена были установлены в файле конфигурации smb.conf , что делает ее более удобной. сложен и неудобен в использовании, особенно в неинтерактивном режиме.
          • Этот инструмент также требует, чтобы вы получили билет Kerberos перед его использованием с помощью kinit . Опять же, это более неудобно и затрудняет неинтерактивное использование в сценарии, поскольку вместо одного шага используется два.
    • Рекомендации по SSHD:

      • Как правило, заставить SSHD работать с AD и SSSD довольно просто
      • Следующие параметры необходимо добавить в / etc / ssh / sshd_config
        • GSSAPIAuthentication yes
          • Turn на аутентификации GSS API для SSHD. Это приведет к аутентификации SSHD в AD KDC
        • PasswordAuthentication yes
          • Разрешить пользователям входить в систему с паролями. Требуется, если вы хотите, чтобы пользователь получал билет KRB5 при входе в систему. Без этой активации система не сможет расшифровать TGT, отправленный KDC.
        • ChallengeResponseAuthentication yes
          • Для FreeBSD этот метод работает лучше всего.
            • Убедитесь, что вы настроили PasswordAuthentication no при использовании этой опции.
            • Это единственный метод, который я нашел для FreeBSD, который работает для изменения просроченного пароля при входе в систему. Если вы используете другой, он вызывает / bin / passwd , который не поддерживает ничего, кроме NIS и локального файла passwd.
        • GSSAPICleanupCredentials yes
          • (необязательно) Выполнит kdestroy при выходе из системы
        • GSSAPIStrictAcceptorCheck нет
          • (необязательно) Эта опция часто требуется, если SSHD не понимает своего имени хоста, является многосетевым и т. Д. Или иным образом использует другой принципал службы для связи с KDC. Обычно SSHD будет использовать принципала службы host / @REALM для общения с KDC, но иногда ошибается (например, если имя хоста не совпадает с DNS-именем SSH-сервера) . Эта опция позволяет SSHD использовать любой принципал из файла /etc/krb5.keytab , который включает правильный host / @REALM
      • В зависимости от комбинации используемых вами опций, вам может потребоваться добавить принципалов хоста в KDC для адресов IPv4 и IPv6 вашего хоста, чтобы ssh -K работал без запроса пароля (при условии, что вы выполнили команду kinit 'уже, конечно).
0
ответ дан 4 December 2019 в 04:50

Теги

Похожие вопросы