Аутентификация OpenBSD против Active Directory

24

Изменить: переформатировал это как Q & A. Если кто-то может изменить это с вики-сообщества на типичный вопрос, это, вероятно, более уместно.

Как я могу аутентифицировать OpenBSD в Active Directory?

ш-бета
источник
Очень хорошо! Это выглядит очень тщательно и хорошо написано. Я не использую OpenBSD, но части AD выглядят точными.
Эван Андерсон
+1 за хороший гид, хотя это не совсем вопрос.
Дэвид Шмитт
Вы должны изменить это в формате вопросов и ответов.
Даг Люксем
Изменено, хотя это все-таки Вики Сообщества. Если кто-то еще может это изменить, продолжайте.
sh-beta

Ответы:

17

Предисловие

Аутентификация в Active Directory с помощью Kerberos довольно проста в системах, использующих PAM, но OpenBSD этого не делает и усложняет. Из tcpdump похоже, что системы PAM просто выполняют предварительную аутентификацию, в то время как система OpenBSD bsd_auth использует весь процесс аутентификации Kerberos.

В любом случае, мне потребовалось некоторое время, чтобы понять, так что, надеюсь, некоторые краткие инструкции сэкономят ваше время.

Несколько быстрых заметок, прежде чем мы начнем:

  • Пользователи должны существовать в системе OpenBSD, прежде чем пытаться войти в систему. Они не созданы автоматически.
  • Если вы хотите, чтобы пользователи создавались автоматически, изучите Samba / Winbind. У меня не было ничего, кроме неприятностей (необъяснимые сбои, серьезный спам в журнале, ненадежная аутентификация), поэтому я использую его только тогда, когда это необходимо.
  • Это было проверено на OpenBSD 4.5 и Windows Server 2003. Я почти уверен, что он будет работать с Win2k, но YMMV.
  • Эта версия OpenBSD использует Heimdal 0.7.2. Все здесь, кроме путей и входов в login.conf, вероятно, будет работать на других * nixes, работающих на том же Heimdal, но опять же на YMMV.

инструкции

В этих шагах предполагается, что вы пытаетесь аутентифицировать myuser@myhost.fqdn в домене EXAMPLE.COM. Контроллером домена является pdc.EXAMPLE.COM.

  1. Создайте учетную запись пользователя Active Directory с именем myhost (это не опечатка, эти инструкции не будут работать с учетной записью компьютера). Отключите срок действия пароля и не позволяйте пользователю менять свой собственный пароль. Установите пароль на то, что вам нравится - он скоро изменится.

  2. Вероятно, хорошей идеей будет создать учетную запись пользователя в новом подразделении, удалить ее из группы «Пользователи домена» и добавить ее в выделенную группу. Это все дело вкуса и вашей схемы безопасности.

  3. На pdc.EXAMPLE.COM загрузите и установите средства поддержки Windows Server (в частности, вам понадобится ktpass.exe)

  4. На pdc.EXAMPLE.COM запустите:

    ktpass -out c: \ temp \ myhost.keytab -princ host/myhost.fqdn@EXAMPLE.COM -mapuser myhost -pType KRB5 _NT_PRINCIPAL + rndpass

    Это обновляет пароль пользователя myhost до чего-то случайного (+ rndpass), сопоставляет принципала Kerberos "host/myhost.fqdn@EXAMPLE.COM" с пользователем "myhost" в Active Directory, а затем выгружает информацию о главном и частном ключе в файл ключей.

  5. Надежно скопируйте c: \ temp \ myhost.keytab в myhost и удалите файл из pdc.EXAMPLE.COM

  6. На myhost добавьте таблицу ключей AD в основную таблицу ключей:

    ktutil copy /path/to/myhost.keytab /etc/kerberosV/krb5.keytab

  7. Настройте /etc/krb5.conf. Ниже приведен необходимый минимум. Доступно много вариантов, для более подробной информации обратитесь к руководству. Это просто устанавливает максимально допустимую асимметрию часов равной 5 минутам, делает EXAMPLE.COM областью по умолчанию и сообщает Kerberos, как выполнять преобразование между областями DNS и Kerberos.

    [libdefaults]
    clockskew = 300
    default_realm = EXAMPLE.COM

    [realms]
    EXAMPLE.COM = {
    default_domain = EXAMPLE.COM
    }

    [domain_realm]
    .EXAMPLE.COM = EXAMPLE.COM

  8. Убедитесь, что вы можете получить билет:

    # kinit Administrator@EXAMPLE.COM
    Administrator@EXAMPLE.COM's Password:
    # klist
    Credentials cache: FILE:/tmp/krb5cc_0
    Principal: Administrator@EXAMPLE.COM

    Issued Expires Principal
    Jun 4 21:41:05 Jun 5 07:40:28 krbtgt/EXAMPLE.COM@EXAMPLE.COM

  9. Измените /etc/login.conf, чтобы использовать аутентификацию Kerberos. Точная конфигурация login.conf будет зависеть от того, как вы используете вашу систему, но чтобы перейти от простой установки к Kerberos, просто отредактируйте и прокомментируйте эту строку в классе входа по умолчанию:

    :tc=auth-defaults:\

    И добавить над этим:

    :auth=krb5-or-pwd:\

    Сначала проверяется Kerberos, если пользователь не является пользователем root. В случае сбоя Kerberos он будет использовать локальные пароли.

  10. Добавьте пользователей, которых вы хотите аутентифицировать на этом хосте. Оставьте пароли пустыми, если вы не хотите, чтобы они могли использовать как Active Directory, так и локальные пароли (не рекомендуется).

    Вы можете очистить пароли существующих пользователей «chpass <user>» и заменить значение «Зашифрованный пароль:» звездочкой (*)

  11. Тест SSH и Sudo. Оба должны безупречно работать с вашими учетными данными Active Directory.

Это все, что нужно сделать.

связи

Пара полезных сайтов:

sh-beta
источник
Похоже, что в 2008 R2 уже есть ktpass.exe. Может быть, и в 2008 году точно сказать не могу на данном этапе. Если кто-то может уточнить, это было бы здорово.
Аарон Мейсон
Кроме того, для того, чтобы сделать это с 5.7 и выше, вам нужно установить пакет Heimdal - он был удален из базы в 5.6.
Аарон Мейсон
Приложение к предыдущему комментарию - вам также нужно будет установить пакет login_krb5 и скопировать login_krb5-or-pwdтуда /usr/libexec/auth- также есть файлы конфигурации и таблица ключей, /etc/heimdalа не их, /etc/kerberosVкак в предыдущих выпусках OpenBSD.
Аарон Мейсон
5

Обновление инструкций выше, так как несколько вещей изменились с тех пор.

В OpenBSD 5.6 было принято решение удалить Heimdal из базового дистрибутива из-за опасений по поводу качества кода и отсутствия желания тратить время на его аудит. В 5.7 он был сделан доступным как пакет (для 5.6 вам нужно будет собрать из исходного кода или выяснить, как повторно включить его в исходном коде). Поэтому, прежде чем следовать приведенным выше инструкциям, необходимо выполнить следующие дополнительные шаги:

-3. Установите heimdalи login_krb5пакеты из вашего любимого зеркала.

-2. Копировать /usr/local/libexec/auth/login_krb5*в /usr/libexec/auth.

-1. Если вы намерены часто использовать инструменты heimdal, добавьте /usr/local/heimdal/binв системный путь. В противном случае, обязательно указывайте полный путь к инструментам при их использовании.

Кроме того, krb5.confи krb5.keytabфайлы идут в /etc/heimdalсейчас.

Аарон Мейсон
источник