Аутентификация OpenBSD против Active Directory
Изменить: переформатировал это как Q&A. Если кто-то может изменить это с вики-сообщества на типичный вопрос, это, вероятно, более уместно.
Как я могу аутентифицировать OpenBSD в Active Directory?
2 ответа
Предисловие
Аутентификация в 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.
инструкции
These steps assume you are trying to authenticate myuser@myhost.fqdn against the domain EXAMPLE.COM. The domain controller is pdc.EXAMPLE.COM.
Create an Active Directory User account named myhost (that's not a typo, these instructions won't work with a Computer account). Disable password expiration and don't let the user change its own password. Set the password to whatever you like - it'll be changed soon.
It's probably a good idea to create the User account under a new OU, remove it from the Domain Users group and add it to a dedicated group. This is all a matter of taste and your security layout.
On pdc.EXAMPLE.COM, download and install Windows Server Support Tools (specifically, you'll need ktpass.exe)
On pdc.EXAMPLE.COM, run:
ktpass -out c:\temp\myhost.keytab -princ host/myhost.fqdn@EXAMPLE.COM -mapuser myhost -pType KRB5
_
NT_PRINCIPAL +rndpassThis updates the myhost user's password to something random (+rndpass), maps the Kerberos principal "host/myhost.fqdn@EXAMPLE.COM" to the user "myhost" in Active Directory, and then dumps the principal and private key info into the -out keytab file.
Securely copy c:\temp\myhost.keytab to myhost and delete the file from pdc.EXAMPLE.COM
On myhost, add the AD keytab to your main keytab:
ktutil copy /path/to/myhost.keytab /etc/kerberosV/krb5.keytab
Configure /etc/krb5.conf. Below is the bare minimum that you need. There's a lot of options available, take a look at the manpage for more details. This just sets the maximum acceptable clock skew to 5 minutes, makes EXAMPLE.COM the default realm, and tells Kerberos how to translate between DNS and Kerberos realms.
[libdefaults]
clockskew = 300
default_realm = EXAMPLE.COM[realms]
EXAMPLE.COM = {
default_domain = EXAMPLE.COM
}[domain_realm]
.EXAMPLE.COM = EXAMPLE.COMVerify that you can get a ticket:
# 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
Modify /etc/login.conf to use Kerberos authentication. Your exact login.conf configuration will vary depending on how you use your system, but to go from a vanilla install to using Kerberos, just edit and comment this line under the default login class:
:tc=auth-defaults:\
And add above it:
:auth=krb5-or-pwd:\
This checks Kerberos first unless the user is root. If Kerberos fails, it will use local passwords.
Add the users you'd like to authenticate on this host. Leave the passwords blank unless you want them to be able to use both Active Directory and local passwords (not recommended).
You can blank existing users' passwords "chpass
<user>
" and replacing the "Encrypted password:" value with an asterisk (*)Test SSH and Sudo. Both should work flawlessly with your Active Directory credentials.
Это все, что нужно сделать.
связи
A couple useful sites:
Обновление инструкций выше, так как несколько вещей изменились с тех пор.
В 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
сейчас.