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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1 前言假設(shè)你的Openldap已經(jīng)配置好并成功運(yùn)行,本文只是介紹如何使Openldap使用Kerberos來驗(yàn)證用戶身份。本配置在FC5上通過,在使用rhe時(shí),很可能會有不同的情況。2 名詞解釋2.1 Kerberos基于 共享密鑰 的安全機(jī)制,由MIT發(fā)明,現(xiàn)在已經(jīng)被標(biāo)準(zhǔn)化,最新是版本5,簡稱krb5。Kerberos特別適合局域網(wǎng)絡(luò),Windows2k及以上系統(tǒng)的安全機(jī)制即基于kerberos。Kerberos有多個(gè)實(shí)現(xiàn)版本,本文使用的一個(gè)它的實(shí)現(xiàn)叫做mit-kerberos。2.2 SASL簡單認(rèn)證和安全層(Simple Authentication and Security Layer)。也是一套RFC定義的標(biāo)準(zhǔn)。它的核心思想是把用戶認(rèn)證和安全傳輸從應(yīng)用程序中隔離出來。像SMTP協(xié)議在定義之初都沒有考慮到用戶認(rèn)證等問題,現(xiàn)在SMTP可以配置使用SASL來完成這方面的工作。Openldap同樣如此。SASL支持多種認(rèn)證方法,比如 ANONYMOUS: 無需認(rèn)證。 PLAIN:明文密碼方式(cleartext password) DIGEST-MD5: HTTP Digest 兼容的安全機(jī)制,基于MD5,可以提供數(shù)據(jù)的安全傳輸層。這個(gè)是方便性和安全性結(jié)合得最好的一種方式。也是默認(rèn)的方式。 GSSAPI:Generic Security Services Application Program InterfaceGssapi本身是一套API,由IETF標(biāo)準(zhǔn)化。其最主要也是著名的實(shí)現(xiàn)是基于Kerberos的。所以一般說到gssapi都暗指kerberos實(shí)現(xiàn)。 EXTERNAL:認(rèn)證已經(jīng)在環(huán)境中實(shí)現(xiàn)了,比如SSL/TLS, IPSec.2.3 Cyrus SASLCyrus-SASL是SASL協(xié)議最常用的一個(gè)實(shí)現(xiàn)。其他實(shí)現(xiàn)還有GNU SASL等。3 環(huán)境準(zhǔ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個(gè)文件1. /etc/krb5.conf2. /var/kerberos/krb5kdc/kdc.conf3. /var/kerberos/krb5kdc/kadm5.acl4.1 配置/etc/krb5.conf這個(gè)配置文件設(shè)置整個(gè)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這個(gè)配置文件是專門為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配置。下面是一個(gè)最簡單但系統(tǒng)可以工作的配置。根據(jù)實(shí)際情況設(shè)置你自己的訪問控制*/adminEXAMPLE.COM *4.4 創(chuàng)建realm kdb5_util create -r EXAMPLE.COM skerbers數(shù)據(jù)庫文件都放在/var/kerberos/krb5kdc/下面。啟動(dòng)krb5kdc和kadmin兩個(gè)service service krb5kdc start service kadmin start4.5 創(chuàng)建Principal在Kerberos安全機(jī)制里,一個(gè)principal就是realm里的一個(gè)對象,一個(gè)principal總是和一個(gè)密鑰(secret key)成對出現(xiàn)的。這個(gè)principal的對應(yīng)物可以是service,可以是host,也可以是user,對于Kerberos來說,都沒有區(qū)別。Kdc(Key distribute center)知道所有principal的secret key,但每個(gè)principal對應(yīng)的對象只知道自己的那個(gè)secret key。這也是“共享密鑰“的由來。作為例子,下面我們將會創(chuàng)建3個(gè)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)不會提示輸入密碼,因?yàn)槲覀兪褂昧?randkey 指定了一個(gè)隨機(jī)密碼。因?yàn)閘dap server是程序,它不會介意使用真正的key。4.5.3 創(chuàng)建principal for host kadmin.local q “addprinc randkey host/EXAMPLE.COM”同樣,我們?yōu)橐粋€(gè)主機(jī)生成了一個(gè)principal?;谕瑯拥睦碛?,我們使用了 randkey參數(shù)。4.6 獲得key創(chuàng)建了principal之后,我們需要把key從kdc里取出來(kdc知道所有principal的key),交給對應(yīng)的對象。在kerberos世界里,這個(gè)key一般存放在以keytab作為擴(kuò)展名的文件里。4.6.1 取得ldap service的key kadmin.local q “ktadd k /tmp/ldapsrv.keytab ldap/”-k 指定把key存放在一個(gè)本地文件中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”但是我不建議你這樣做,因?yàn)橐坏┻@樣做以后,你先前設(shè)置的密碼就失效了。以后只能使用此keytab文件來通過身份驗(yàn)證。4.7 測試那么下面的步驟演示了kerberos驗(yàn)證用戶身份。 kinit ldapadmin系統(tǒng)會提示輸入密碼,如果一切正常,那么會安靜的返回。實(shí)際上,你已經(jīng)通過了kerberos的身份驗(yàn)證,且獲得了一個(gè)Service TGT(Ticket-Granting Ticket). Service TGT的意義是, 在一段時(shí)間內(nèi),你都可以用此TGT去請求某些service,比如ldap service,而不需要再次通過kerberos的認(rèn)證。 klist這條命令會查看系統(tǒng)當(dāng)前的ticket kdestory這條命令會destroy掉系統(tǒng)當(dāng)前cache的所有ticket kinit k ldapadmin t /tmp/user_ldapadmin.keytab這里演示了你確實(shí)可以直接使用user的key,而不是口令來通過kerberos的驗(yàn)證。如果你在前面導(dǎo)出了user ldapadmin的key,可以驗(yàn)證一下。同時(shí)如果你運(yùn)行kinit ldapadmin,那么即使輸入了正確的password,系統(tǒng)仍然提示密碼錯(cuò)誤。5 配置Ldap使用kerberosLdap是如何使用kerberos的呢?這個(gè)過程是這樣的。Ldap使用SASL的GSSAPI做身份驗(yàn)證。而SASL-GSSAPI的實(shí)現(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)的默認(rèn)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的驗(yàn)證 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下面我們要配置主機(jī)具有訪問ldap server的能力。一般這種配置是為了使用ldap作為系統(tǒng)的身份認(rèn)證機(jī)制,和PAM結(jié)合起來使用。這方面的配置我也不太了解,也沒法深入介紹。我這里只是演示如何使用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都是比較復(fù)雜的系統(tǒng)。一般出現(xiàn)問題后都要現(xiàn)把問題定位到ldap或kerberos。下面是一些查看log信息的機(jī)制。查看kdc的log tail -100f /var/log/krb5kdc.l

溫馨提示

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

最新文檔

評論

0/150

提交評論