[FrontPage] [TitleIndex] [WordIndex

This is a read-only archived version of wiki.centos.org

在 apache httpd 內採用 Kerberos 進行驗証

你果你擁有一台 Kerberos 或 Active Directory 的安裝,你或許會想在 apache httpd 內採用 Kerberos 進行驗証及單一登錄。 這份教學文檔假設你已經有一台運作中的 kerberos 伺服器,或者如 zh-tw/TipsAndTricks/WinbindADS 般採用 winbindd 整合了 active directory。

這份教學文檔只供 CentOS 5 使用。CentOS 4 在 httpd-config 內需要稍微不同的選項。

1. Keytab

要在 apache httpd 內使用 kerberos 進行驗証,在你執行 apache httpd 的機器上的 keytab 檔內需要有一項服務的主記錄。這裡的所有描述都採用位於 /etc/krb5.keytab 的總體 keytab 檔。基於安全理由,你或許會給每個服務一個 keytab 檔,好叫服務甲無法閱讀服務乙的 keytab 資訊。apache httpd 的 kerberos 模塊預設使用的服務原則名叫 HTTP。

1.1. 清一色 kerberos

要以 kadmin 加入一個服務原則,在執行 apache httpd 的機器上啟動 kadmin 並使用這個指令

ktadd HTTP/$HOST@$REALM

當中 $HOST 是這台機器的完整域名,而 $REAL 是你的 kerberos 域名。假如你有意使用另一個服務名稱,請亦取替 HTTP。

1.2. winbindd

如果你使用 winbindd,請使用以下指令來建立 keytab,並在你的 keytab 內加入服務原則:

net ads keytab create
net ads keytab add HTTP

之後你可以發出這個指令來檢查你的 keytab

klist -k

它應該列出最少 2 行,包括 host/$HOST@$REALMHTTP/$HOST@$REALM 的原則。

2. 設定 apache httpd

除了 krb5-workstation 這個套件外,你亦需要 mod_auth_kerb 這個套件。一旦你安裝了它,你便可以在合適的 http 段落裡(<Directory><Location>)設定驗証。 這個設定檔有以下模樣:

    <Location />
        AuthName "Restricted Access"
        AuthType Kerberos
        Krb5Keytab  /etc/krb5.keytab
        KrbAuthRealms $REALM
        KrbMethodNegotiate On
        KrbMethodK5Passwd On
        require valid-user
    </Location> 

很明顯你需要以你的 kerberos 區域來取代 $REALM。如果有非 kerberos 的系統進行存取的話,你需要設定 KrbMethodK5PasswdOn 來採用密碼作後備方法。

3. 單一登錄

3.1. Internet Explorer

假若你的 kerberos 區域等同你的 Active Directory 區域,Internet explorer 會自動嘗試以 kerberos 登錄。

3.2. Firefox

在 firefox 的位置列內輸入 about:config 並編輯 network.negotiate-auth.trusted-uris 這個項目,輸入 apache httpd 伺服器的機名,或 .domain.tld 來容許這個區域內的所有伺服器採用 kerberos。

4. 偵錯

如果運作上出現問題,請利用 klist 來確定你在客戶端擁有一張有效的 kerberos 通行票。借著將 LogLevel 設定為 debug 來啟動 apache httpd 伺服器上的偵錯日誌,輸出便可以在 apache httpd 的故障日誌中找到。

Translation of revision 3


2023-09-11 07:23