Active-Directory

針對 Active Directory 對 OpenBSD 進行身份驗證

  • March 2, 2018

**編輯:**將其重新格式化為問答。如果有人可以將其從 Community Wiki 更改為典型問題,那可能也更合適。

如何針對 Active Directory 對 OpenBSD 進行身份驗證?

前言

在使用 PAM 的系統上,使用 Kerberos 對 Active Directory 進行身份驗證非常簡單,但 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 之外的所有內容都可能在其他執行相同 Heimdal 的 *nixes 上執行,但同樣是 YMMV。

指示

這些步驟假設您嘗試針對域EXAMPLE.COM 驗證myuser@myhost.fqdn。域控制器是 pdc.EXAMPLE.COM。

  1. 創建一個名為myhost的 Active Directory 使用者帳戶(這不是錯字,這些說明不適用於電腦帳戶)。禁用密碼過期,不要讓使用者更改自己的密碼。將密碼設置為您喜歡的任何密碼 - 很快就會更改。
  2. 在新的 OU 下創建使用者帳戶,將其從域使用者組中刪除並將其添加到專用組中,這可能是一個好主意。這完全取決於您的品味和您的安全佈局。
  3. 在 pdc.EXAMPLE.COM 上,下載並安裝 Windows Server Support Tools(具體來說,您需要 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”映射到 Active Directory 中的使用者“myhost”,然後將主體和私鑰資訊轉儲到-out 密鑰表文件。 5. 安全地將 c:\temp\myhost.keytab 複製到 myhost 並從 pdc.EXAMPLE.COM 中刪除該文件 6. 在 myhost 上,將 AD 密鑰表添加到您的主密鑰表:

ktutil 複製 /path/to/myhost.keytab /etc/kerberosV/krb5.keytab

  1. 配置 /etc/krb5.conf。以下是您需要的最低要求。有很多可用的選項,請查看手冊頁以獲取更多詳細資訊。這只是將最大可接受的時鐘偏差設置為 5 分鐘,使EXAMPLE.COM 成為預設領域,並告訴Kerberos 如何在DNS 和Kerberos 領域之間進行轉換。

$$ libdefaults $$

clockskew = 300

default_realm = EXAMPLE.COM $$ realms $$

範例.COM = {預設域 = 範例

.COM

} $$ domain_realm $$

.EXAMPLE.COM = EXAMPLE.COM

  1. 驗證您是否可以獲得票:

# 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

  1. 修改 /etc/login.conf 以使用 Kerberos 身份驗證。您的確切 login.conf 配置將根據您使用系統的方式而有所不同,但要從 vanilla 安裝轉到使用 Kerberos,只需在預設登錄類下編輯並註釋此行:

:tc=auth-defaults:\

並在其上方添加:

:auth=krb5-or-pwd:\

這將首先檢查 Kerberos,除非使用者是 root。如果 Kerberos 失敗,它將使用本地密碼。 10. 添加您要在此主機上進行身份驗證的使用者。將密碼留空,除非您希望它們能夠同時使用 Active Directory 和本地密碼(不推薦)。

您可以將現有使用者的密碼“chpass <user>”置空,並將“加密密碼:”值替換為星號 (*) 11. 測試 SSH 和 Sudo。兩者都應該與您的 Active Directory 憑據完美配合。

這裡的所有都是它的。

連結

幾個有用的網站:

引用自:https://serverfault.com/questions/20202