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