Kerberos配置.doc_第1頁
Kerberos配置.doc_第2頁
Kerberos配置.doc_第3頁
Kerberos配置.doc_第4頁
Kerberos配置.doc_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1 前言假設你的Openldap已經(jīng)配置好并成功運行,本文只是介紹如何使Openldap使用Kerberos來驗證用戶身份。本配置在FC5上通過,在使用rhe時,很可能會有不同的情況。2 名詞解釋2.1 Kerberos基于 共享密鑰 的安全機制,由MIT發(fā)明,現(xiàn)在已經(jīng)被標準化,最新是版本5,簡稱krb5。Kerberos特別適合局域網(wǎng)絡,Windows2k及以上系統(tǒng)的安全機制即基于kerberos。Kerberos有多個實現(xiàn)版本,本文使用的一個它的實現(xiàn)叫做mit-kerberos。2.2 SASL簡單認證和安全層(Simple Authentication and Security Layer)。也是一套RFC定義的標準。它的核心思想是把用戶認證和安全傳輸從應用程序中隔離出來。像SMTP協(xié)議在定義之初都沒有考慮到用戶認證等問題,現(xiàn)在SMTP可以配置使用SASL來完成這方面的工作。Openldap同樣如此。SASL支持多種認證方法,比如 ANONYMOUS: 無需認證。 PLAIN:明文密碼方式(cleartext password) DIGEST-MD5: HTTP Digest 兼容的安全機制,基于MD5,可以提供數(shù)據(jù)的安全傳輸層。這個是方便性和安全性結合得最好的一種方式。也是默認的方式。 GSSAPI:Generic Security Services Application Program InterfaceGssapi本身是一套API,由IETF標準化。其最主要也是著名的實現(xiàn)是基于Kerberos的。所以一般說到gssapi都暗指kerberos實現(xiàn)。 EXTERNAL:認證已經(jīng)在環(huán)境中實現(xiàn)了,比如SSL/TLS, IPSec.2.3 Cyrus SASLCyrus-SASL是SASL協(xié)議最常用的一個實現(xiàn)。其他實現(xiàn)還有GNU SASL等。3 環(huán)境準備3.1 環(huán)境(1)(2)(3)3.2 安裝軟件包Kerberos server: Krb5-serverSasl-gssapi: Cyrus-sasl-gssapiKerberos client: Krb5-client如果依賴于別的包,也一并安裝4 配置Kerberos server配置文件包括下面3個文件1. /etc/krb5.conf2. /var/kerberos/krb5kdc/kdc.conf3. /var/kerberos/krb5kdc/kadm5.acl4.1 配置/etc/krb5.conf這個配置文件設置整個kerberos環(huán)境的,所以不但server,而且client也會使用它。loggingdefault = FILE:/var/log/krb5libs.logkdc = FILE:/var/log/krb5kdc.logadmin_server = FILE:/var/log/kadmind.loglibdefaultsdefault_realm = EXAMPLE.COMdefault_tgs_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5permitted_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5dns_lookup_realm = falsedns_lookup_kdc = falseticket_lifetime = 24hforwardable = yesrealmsEXAMPLE.COM = kdc = :88admin_server = :749default_domain = domain_ = EXAMPLE.COM = EXAMPLE.COMkdcprofile = /var/kerberos/krb5kdc/kdc.confappdefaultspam = debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false4.2 配置/var/kerberos/krb5kdc/kdc.conf這個配置文件是專門為kdc定義的參數(shù)kdcdefaultsv4_mode = nopreauthrealmsEXAMPLE.COM = #master_key_type = des3-hmac-sha1acl_file = /var/kerberos/krb5kdc/kadm5.acldict_file = /usr/share/dict/wordsadmin_keytab = /var/kerberos/krb5kdc/kadm5.keytabsupported_enctypes = des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal des-cbc-crc:v4 des-cbc-crc:afs34.3 配置/var/kerberos/krb5kdc/kadm5.acl此文件是Access control配置。下面是一個最簡單但系統(tǒng)可以工作的配置。根據(jù)實際情況設置你自己的訪問控制*/adminEXAMPLE.COM *4.4 創(chuàng)建realm kdb5_util create -r EXAMPLE.COM skerbers數(shù)據(jù)庫文件都放在/var/kerberos/krb5kdc/下面。啟動krb5kdc和kadmin兩個service service krb5kdc start service kadmin start4.5 創(chuàng)建Principal在Kerberos安全機制里,一個principal就是realm里的一個對象,一個principal總是和一個密鑰(secret key)成對出現(xiàn)的。這個principal的對應物可以是service,可以是host,也可以是user,對于Kerberos來說,都沒有區(qū)別。Kdc(Key distribute center)知道所有principal的secret key,但每個principal對應的對象只知道自己的那個secret key。這也是“共享密鑰“的由來。作為例子,下面我們將會創(chuàng)建3個principal,類型分別是service,host,user。4.5.1 創(chuàng)建principal for user Kadmin.local q “addprinc ldapadminEXAMPLE.COM”系統(tǒng)會提示輸入密碼(password)。請注意密碼本身并不是key。這里只是為了人類使用的方便而使用密碼。真正的key是算法作用在密碼上產(chǎn)生的一串byte序列。4.5.2 創(chuàng)建principal for ldap service kadmin.local -q addprinc -randkey ldap/EXAMPLE.COM注意這次系統(tǒng)不會提示輸入密碼,因為我們使用了 randkey 指定了一個隨機密碼。因為ldap server是程序,它不會介意使用真正的key。4.5.3 創(chuàng)建principal for host kadmin.local q “addprinc randkey host/EXAMPLE.COM”同樣,我們?yōu)橐粋€主機生成了一個principal?;谕瑯拥睦碛桑覀兪褂昧?randkey參數(shù)。4.6 獲得key創(chuàng)建了principal之后,我們需要把key從kdc里取出來(kdc知道所有principal的key),交給對應的對象。在kerberos世界里,這個key一般存放在以keytab作為擴展名的文件里。4.6.1 取得ldap service的key kadmin.local q “ktadd k /tmp/ldapsrv.keytab ldap/”-k 指定把key存放在一個本地文件中4.6.2 取得host的key kadmin.local q “ktadd k /tmp/host_client.keytabhost/”4.6.3 如果你高興的話,你甚至也可以取得user的key kadmin.local q “ktadd k /tmp/user_ldapadmin.keytab ldapadmin”但是我不建議你這樣做,因為一旦這樣做以后,你先前設置的密碼就失效了。以后只能使用此keytab文件來通過身份驗證。4.7 測試那么下面的步驟演示了kerberos驗證用戶身份。 kinit ldapadmin系統(tǒng)會提示輸入密碼,如果一切正常,那么會安靜的返回。實際上,你已經(jīng)通過了kerberos的身份驗證,且獲得了一個Service TGT(Ticket-Granting Ticket). Service TGT的意義是, 在一段時間內(nèi),你都可以用此TGT去請求某些service,比如ldap service,而不需要再次通過kerberos的認證。 klist這條命令會查看系統(tǒng)當前的ticket kdestory這條命令會destroy掉系統(tǒng)當前cache的所有ticket kinit k ldapadmin t /tmp/user_ldapadmin.keytab這里演示了你確實可以直接使用user的key,而不是口令來通過kerberos的驗證。如果你在前面導出了user ldapadmin的key,可以驗證一下。同時如果你運行kinit ldapadmin,那么即使輸入了正確的password,系統(tǒng)仍然提示密碼錯誤。5 配置Ldap使用kerberosLdap是如何使用kerberos的呢?這個過程是這樣的。Ldap使用SASL的GSSAPI做身份驗證。而SASL-GSSAPI的實現(xiàn)正好是Kerberos。首先要配置ldap server,然后配置Kerberos5.1 配置ldap server vi /etc/openldap/slapd.conf添加一行rootdn uid=ldapadmin,cn=gssapi,cn=auth注釋掉下面兩行,如果有的話#rootdn cn=Manager,dc=example,dc=com#rootpw SSHA7XF8TnEH8Hlv+0XU2Tiqk9bTR32Ixtbx5.2 配置kerberos環(huán)境 scp :/etc/krb5.conf /etc#這里使用scp,你也可以通過其他方便的方式。 scp :/tmp/ldapsrv.keytab /tmp ktutil rkt /tmp/ldapsrv.keytab #讀取key到內(nèi)存中 wkt /etc/krb5.keytab #寫key到系統(tǒng)的默認keytab文件,一般是 /etc/krb5.keytab然后重啟ldap server service ldap restart5.3 測試 klistklist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_0)Kerberos 4 ticket cache: /tmp/tkt0klist: You have no tickets cached ldapsearch-h #注意不要用-x參數(shù)SASL/GSSAPI authentication startedldap_sasl_interactive_bind_s: Local error (-2) additional info: SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure.Minor code may provide more information (No credentials cache found) kinit ldapadmin #用戶ldapadmin通過kerberos的驗證 klist 查看ticket,注意下面兩行 Default principal: ldapadminEXAMPLE.COM Valid starting Expires Service principal 01/03/08 13:59:3901/04/08 13:59:39krbtgt/EXAMPLE.COMEXAMPLE.COM ldapsearch h Something printed out. You got it!klist注意,現(xiàn)在多了一條訪問ldap service的ticket。 valid starting Expires Service principal 01/03/08 13:59:3901/04/08 13:59:39krbtgt/EXAMPLE.COMEXAMPLE.COM 01/03/08 14:02:1201/04/08 13:59:39ldap/flnxldap11.EXAMPLE.comEXAMPLE.COM5.4 配置ldap client下面我們要配置主機具有訪問ldap server的能力。一般這種配置是為了使用ldap作為系統(tǒng)的身份認證機制,和PAM結合起來使用。這方面的配置我也不太了解,也沒法深入介紹。我這里只是演示如何使用host principal。和上面一樣,首先把krb5.conf和keytab文件拷貝到本地。 scp :/etc/krb5.conf /etc scp :/tmp/host_client.keytab /tmp 初始化host principal,取得tgt kinit k host/ t /tmp/host_client.keytab klist測試 ldapsearch h 6 調(diào)試Kerbers和LDAP都是比較復雜的系統(tǒng)。一般出現(xiàn)問題后都要現(xiàn)把問題定位到ldap或kerberos。下面是一些查看log信息的機制。查看kdc的log tail -100f /var/log/krb5kdc.l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論