Kerberos安裝教程及使用詳解
Kerberos協(xié)議:
Kerberos協(xié)議主要用于計(jì)算機(jī)網(wǎng)絡(luò)的身份鑒別(Authentication), 其特點(diǎn)是用戶只需輸入一次身份驗(yàn)證信息就可以憑借此驗(yàn)證獲得的票據(jù)(ticket-granting ticket)訪問(wèn)多個(gè)服務(wù),即SSO(Single Sign On)。由于在每個(gè)Client和Service之間建立了共享密鑰,使得該協(xié)議具有相當(dāng)?shù)陌踩浴?/p>
2. 安裝 Kerberos
2.1. 環(huán)境配置
安裝kerberos前,要確保主機(jī)名可以被解析。
主機(jī)名 內(nèi)網(wǎng)IP 角色
Vmw201 172.16.18.201 Master KDC Vmw202 172.16.18.202 Kerberos client Vmw203 172.16.18.203 Kerberos client
2.2 Configuring a Kerberos Server
2.2.1 確保環(huán)境可用
確保所有的clients與servers之間的時(shí)間同步以及DNS正確解析
2.2.2 選擇一個(gè)主機(jī)來(lái)運(yùn)行KDC,并在該主機(jī)上安裝krb-5libs,krb5-server,已經(jīng)krb5-workstation:
yum install krb5-server krb5-libs krb5-auth-dialog
KDC的主機(jī)必須非常自身安全,一般該主機(jī)只運(yùn)行KDC程序。本文中我們選擇vmw201作為運(yùn)行KDC的主機(jī)。
在安裝完上述的軟件之后,會(huì)在KDC主機(jī)上生成配置文件/etc/krb5.conf和/var/kerberos/krb5kdc/kdc.conf,它們分別反映了realm name 以及 domain-to-realm mappings。
2.2.3 配置kdc.conf
默認(rèn)放在 /var/kerberos/krb5kdc/kdc.conf。或者通過(guò)覆蓋KRB5_KDC_PROFILE環(huán)境變量修改配置文件位置。
配置示例:
[kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] HADOOP.COM = { #master_key_type = aes256-cts acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab max_renewable_life = 7d supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal }
說(shuō)明:
HADOOP.COM:是設(shè)定的realms。名字隨意。Kerberos可以支持多個(gè)realms,會(huì)增加復(fù)雜度。本文不探討。大小寫(xiě)敏感,一般為了識(shí)別使用全部大寫(xiě)。這個(gè)realms跟機(jī)器的host沒(méi)有大關(guān)系。
max_renewable_life = 7d 涉及到是否能進(jìn)行ticket的renwe必須配置。
master_key_type:和supported_enctypes默認(rèn)使用aes256-cts。由于,JAVA使用aes256-cts驗(yàn)證方式需要安裝額外的jar包,更多參考2.2.9關(guān)于AES-256加密:。推薦不使用。
acl_file:標(biāo)注了admin的用戶權(quán)限。文件格式是
Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。
admin_keytab:KDC進(jìn)行校驗(yàn)的keytab。后文會(huì)提及如何創(chuàng)建。
supported_enctypes:支持的校驗(yàn)方式。注意把a(bǔ)es256-cts去掉。
2.2.4 配置krb5.conf
/etc/krb5.conf: 包含Kerberos的配置信息。例如,KDC的位置,Kerberos的admin的realms 等。需要所有使用的Kerberos的機(jī)器上的配置文件都同步。這里僅列舉需要的基本配置。
配置示例:
[logging] default=FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = HADOOP.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true # udp_preference_limit = 1 [realms] HADOOP.COM = { kdc = vmw201 admin_server = vmw201 } [domain_realm] .hadoop.com = HADOOP.COM hadoop.com = HADOOP.COM
說(shuō)明:
[logging]:表示server端的日志的打印位置
[libdefaults]:每種連接的默認(rèn)配置,需要注意以下幾個(gè)關(guān)鍵的小配置
default_realm = HADOOP.COM 默認(rèn)的realm,必須跟要配置的realm的名稱一致。
udp_preference_limit = 1 禁止使用udp可以防止一個(gè)Hadoop中的錯(cuò)誤
oticket_lifetime表明憑證生效的時(shí)限,一般為24小時(shí)。
orenew_lifetime表明憑證最長(zhǎng)可以被延期的時(shí)限,一般為一個(gè)禮拜。當(dāng)憑證過(guò)期之后,
對(duì)安全認(rèn)證的服務(wù)的后續(xù)訪問(wèn)則會(huì)失敗。
[realms]:列舉使用的realm。
kdc:代表要kdc的位置。格式是 機(jī)器:端口
admin_server:代表admin的位置。格式是機(jī)器:端口
default_domain:代表默認(rèn)的域名
[appdefaults]:可以設(shè)定一些針對(duì)特定應(yīng)用的配置,覆蓋默認(rèn)配置。
2.2.5 創(chuàng)建/初始化Kerberos database
初始化并啟動(dòng):完成上面兩個(gè)配置文件后,就可以進(jìn)行初始化并啟動(dòng)了。
[root@vmw201 ~]# /usr/sbin/kdb5_util create -s -r HADOOP.COM
其中,[-s]表示生成stash file,并在其中存儲(chǔ)master server key(krb5kdc);還可以用[-r]來(lái)指定一個(gè)realm name —— 當(dāng)krb5.conf中定義了多個(gè)realm時(shí)才是必要的。
# 保存路徑為/var/kerberos/krb5kdc 如果需要重建數(shù)據(jù)庫(kù),將該目錄下的principal相關(guān)的文件刪除即可
在此過(guò)程中,我們會(huì)輸入database的管理密碼。這里設(shè)置的密碼一定要記住,如果忘記了,就無(wú)法管理Kerberos server。
當(dāng)Kerberos database創(chuàng)建好后,可以看到目錄 /var/kerberos/krb5kdc 下生成了幾個(gè)文件:
kadm5.acl
kdc.conf
principal
principal.kadm5
principal.kadm5.lock
principal.ok
2.2.6 添加database administrator
我們需要為Kerberos database添加administrative principals (即能夠管理database的principals) —— 至少要添加1個(gè)principal來(lái)使得Kerberos的管理進(jìn)程kadmind能夠在網(wǎng)絡(luò)上與程序kadmin進(jìn)行通訊。
在maste KDC上執(zhí)行:
[root@vmw201 /]# /usr/sbin/kadmin.local -q "addprinc admin/admin"
并為其設(shè)置密碼
kadmin.local
可以直接運(yùn)行在master KDC上,而不需要首先通過(guò)Kerberos的認(rèn)證,實(shí)際上它只需要對(duì)本
地文件的讀寫(xiě)權(quán)限。
2.2.7 為database administrator設(shè)置ACL權(quán)限
在KDC上我們需要編輯acl文件來(lái)設(shè)置權(quán)限,該acl文件的默認(rèn)路徑是 /var/kerberos/krb5kdc/kadm5.acl(也可以在文件kdc.conf中修改)。Kerberos的kadmind daemon會(huì)使用該文件來(lái)管理對(duì)Kerberos database的訪問(wèn)權(quán)限。對(duì)于那些可能會(huì)對(duì)pincipal產(chǎn)生影響的操作,acl文件也能控制哪些principal能操作哪些其他pricipals。
我們現(xiàn)在為administrator設(shè)置權(quán)限:將文件/var/kerberos/krb5kdc/kadm5.acl的內(nèi)容編輯為
*/admin@HADOOP.COM
代表名稱匹配*/admin@HADOOP.COM 都認(rèn)為是admin,權(quán)限是 *。代表全部權(quán)限。
2.2.8 在master KDC啟動(dòng)Kerberos daemons
手動(dòng)啟動(dòng):
[root@vmw201 /]# service krb5kdc start [root@vmw201 /]# service kadmin start
設(shè)置開(kāi)機(jī)自動(dòng)啟動(dòng):
[root@vmw201 /]# chkconfig krb5kdc on [root@vmw201 /]# chkconfig kadmin on
現(xiàn)在KDC已經(jīng)在工作了。這兩個(gè)daemons將會(huì)在后臺(tái)運(yùn)行,可以查看它們的日志文件(/var/log/krb5kdc.log 和 /var/log/kadmind.log)。
可以通過(guò)命令kinit來(lái)檢查這兩個(gè)daemons是否正常工作。
2.2.9關(guān)于AES-256加密
對(duì)于使用 centos5. 6及以上的系統(tǒng),默認(rèn)使用 AES-256 來(lái)加密的。這就需要集群中的所有節(jié)點(diǎn)上安裝 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy File。
下載的文件是一個(gè) zip 包,解開(kāi)后,將里面的兩個(gè)文件放到下面的目錄中:$JAVA_HOME/jre/lib/security
2.3 Configuring Kerberos Clients
2.3.1 Installing Kerberos Client(CentOS7可以省略此步驟)
在另外兩臺(tái)主機(jī)(vmw202,vmw203)上安裝kerberos客戶端。
yum install krb5-workstation krb5-libs krb5-auth-dialog
2.3.2 配置krb5.conf
配置這些主機(jī)上的/etc/krb5.conf,這個(gè)文件的內(nèi)容與KDC中的文件保持一致即可。
3. kerberos的日常操作與常見(jiàn)問(wèn)題
3.1 管理員操作
3.1.1 登錄
登錄到管理員賬戶: 如果在本機(jī)上,可以通過(guò)kadmin.local直接登錄。其它機(jī)器的,先使用kinit進(jìn)行驗(yàn)證。
3.1.2增刪改查賬戶
在管理員的狀態(tài)下使用addprinc,delprinc,modprinc,listprincs命令。使用?可以列出所有的命令。
kadmin.local: addprinc test kadmin.local: delprinc test kadmin.local: listprincs
3.1.3生成keytab:使用xst命令或者ktadd命令
kadmin:xst -k /xxx/xxx/kerberos.keytab hdfs/hadoop1
3.2 用戶操作
3.2.1 查看當(dāng)前的認(rèn)證用戶
3.2.3 認(rèn)證用戶
kinit -kt /xx/xx/kerberos.keytab hdfs/hadoop1
3.2.4 刪除當(dāng)前的認(rèn)證的緩存
kdestroy
3.3 常見(jiàn)問(wèn)題
3.3.1 查看ticket是否是renewable
通過(guò)klist命令來(lái)查看
如果Valid starting的值與renew until的值相同,則表示該principal的ticket 不是 renwable。
3.3.2 ticket無(wú)法更新
如果過(guò)了Expires,可以通過(guò)命令kinit –R來(lái)更新ticket
但如果ticket無(wú)法更新
[root@vmw201 ~]$ kinit -R kinit: Ticket expired while renewing credentials
這是因?yàn)閗rbtgt/HADOOP.COM@ HADOOP.COM的[renewlife]被設(shè)置成了0,這一點(diǎn)可以通過(guò)[kadmin.local => getprinc krbtgt/ HADOOP.COM @ HADOOP.COM]看出來(lái)。
將krbtgt/HADOOP.COM@HADOOP.COM的[renewlife]修改為7days即可,方法
kadmin.local: modprinc -maxrenewlife 1week krbtgt/HADOOP.COM@HADOOP.COM
以上所述是小編給大家介紹的Kerberos安裝教程及使用詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Lamp環(huán)境下設(shè)置綁定apache域名的方法分析
這篇文章主要介紹了Lamp環(huán)境下設(shè)置綁定apache域名的方法,簡(jiǎn)單分析了Lamp環(huán)境下的Apache域名綁定設(shè)置相關(guān)屬性、功能與操作技巧,需要的朋友可以參考下2018-03-03Linux下rpm、yum和源碼三種安裝方式詳細(xì)介紹
這篇文章主要介紹了Linux下rpm、yum和源碼三種安裝方式詳細(xì)介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12linux下實(shí)現(xiàn)web數(shù)據(jù)同步的四種方式(性能比較)
這篇文章主要介紹了linux下常用的四種web數(shù)據(jù)同步方法,并且說(shuō)明了每個(gè)方法的功能與優(yōu)勢(shì),需要的朋友可以參考下2013-09-09Linux下gdb調(diào)試打印進(jìn)程內(nèi)存信息方式
這篇文章主要介紹了Linux下gdb調(diào)試打印進(jìn)程內(nèi)存信息方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09