Kerberos KDC主從搭建

基于Hadoop集群安全考慮,需要上線kerberos認(rèn)證进倍,此章將介紹如果搭建一個(gè)主從配置(防止單點(diǎn)故障)的KDC環(huán)境微谓。

環(huán)境信息:

主機(jī)信息:
system: centos7
hosts:
  kdcsrv01    - master kdc
  kdcsrv02    - slave kdc
  kdcsrv01    - master kadmin
相關(guān)信息介紹:
HADOOP.COM                               - realm name(域)
/var/kerberos/krb5kdc/.k5.HADOOP.COM     - stash file(數(shù)據(jù)庫(kù)自動(dòng)登陸文件)
/var/kerberos/krb5kdc/principal, /var/kerberos/krb5kdc/principal.ok     - kerberos database file
/var/kerberos/krb5kdc/principal.kadm5    - Kerberos administrative database file
/var/kerberos/krb5kdc/principal.kadm5.lock    - administrative database lock file
/var/kerberos/krb5kdc/kdc.conf           - kdc config file
/var/kerberos/krb5kdc/kadm5.acl          - kdc acl file
/etc/krb5.conf                           - kdc config file

KDCs服務(wù)器搭建

1.安裝KDC服務(wù)程序
sudo yum install -y krb5-server openldap-clients krb5-workstation krb5-libs
2.設(shè)置配置文件
$ vi /etc/krb5.conf
# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 1d
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = HADOOP.COM
renewable = true
udp_preference_limit = 1
default_ccache_name = KEYRING:persistent:%{uid}

[realms]
HADOOP.COM = {
kdc = kdcsrv01:88
kdc = kdcsrv02:88
admin_server = kdcsrv01:749
default_domain = HADOOP.COM
}

[domain_realm]
.HADOOP.COM = HADOOP.COM
HADOOP.COM = HADOOP.COM

$ vi /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88

[realms]
HADOOP.COM = {
master_key_type = aes128-cts
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
max_life = 1d
max_renewable_life = 7d
supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}

$ vi /var/kerberos/krb5kdc/kadm5.acl
*/admin@HADOOP.COM  *
3.生成master kdc database(需記錄輸入的數(shù)據(jù)庫(kù)密碼)
$ sudo kdb5_util create -r HADOOP.COM -s
# 將在/var/kerberos/krb5kdc/目錄下生成多個(gè)principal*文件
# 注:生成random隨機(jī)數(shù)時(shí)較耗時(shí),所以此步驟執(zhí)行時(shí)間較長(zhǎng)式镐。
4.master 服務(wù)器添加admin用戶
$ sudo kadmin.local
addprinc admin/admin@HADOOP.COM
5.啟動(dòng)kdc 及 kadmin服務(wù)
$ sudo service krb5kdc start
$ sudo service kadmin start
$ sudo chkconfig --level 35 krb5kdc on
$ sudo chkconfig --level 35 kadmin on
6.驗(yàn)證admin賬戶是否能成功認(rèn)證
$ kinit admin/admin
# 注:
# """
#     Aug 30 14:27:25 kdcsrv01 kadmind[6451](info): Seeding random number generator
#     Aug 30 14:39:14 kdcsrv01 kadmind[6451](info): starting
#     
#     kamdin 啟動(dòng)時(shí)需要生成隨機(jī)數(shù)種子導(dǎo)致啟動(dòng)時(shí)間較長(zhǎng),執(zhí)行kadmin命令可能會(huì)卡住.
#     以上日志未在kadmin.log中查看kadmin進(jìn)程啟動(dòng)情況(完成啟動(dòng)耗時(shí)12分鐘)涛癌。
# """

配置slave kdc

7.master服務(wù)器生成host keytab文件(需root用戶,不能使用普通用戶:/etc/目錄無(wú)權(quán)限寫入)
$ sudo su - root
$ kadmin.local
addprinc -randkey host/kdcsrv01
ktadd host/kdcsrv01
8.安裝slave服務(wù)器
$ sudo yum install -y krb5-server openldap-clients krb5-workstation
# 拷貝master /etc/krb5.conf文件: scp kdcsrv01:/etc/krb5.conf /etc/krb5.conf
9.slave 服務(wù)器生成host keytab文件(需root用戶,不能使用普通用戶:/etc/目錄無(wú)權(quán)限寫入)
$ sudo su - root
$ kadmin.local
addprinc -randkey host/kdcsrv02
ktadd host/kdcsrv02
10.slave服務(wù)器創(chuàng)建kpropd.acl文件
$ sudo touch /var/kerberos/krb5kdc/kpropd.acl
$ sudo vi /var/kerberos/krb5kdc/kpropd.acl
host/kdcsrv01@HADOOP.COM
host/kdcsrv02@HADOOP.COM
11.拷貝master配置文件至slave服務(wù)器
$ scp /etc/krb5.conf kdcsrv02:/etc/;
$ cd /var/kerberos/krb5kdc;scp kdc.conf kadm5.acl .k5.HADOOP.COM kdcsrv02:/var/kerberos/krb5kdc/;
12.在slave上啟動(dòng)kpropd服務(wù)
$ sudo kpropd
13.在master上將相關(guān)數(shù)據(jù)同步到slave上(需定期手動(dòng)同步)
$ sudo kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans
$ sudo kprop -f /var/kerberos/krb5kdc/slave_datatrans kdcsrv02
# 成功后犯戏,會(huì)出現(xiàn)以下信息:
# Database propagation to kdcsrv02: SUCCEEDED
# 創(chuàng)建crontab 腳本定期同步數(shù)據(jù)庫(kù):
$ vi /home/dengsc/kdc/sync_db.sh
#!/bin/sh

kdclist="kdcsrv02"
echo `date`"start to sync!"
sudo kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans
for kdc in $kdclist;
do
    sudo kprop -f /var/kerberos/krb5kdc/slave_datatrans $kdc
done
echo `date`"end to sync!"

# crontab 信息(master kdc 主機(jī)):30 16 * * * /home/dengsc/kdc/sync_db.sh >> /home/dengsc/kdc/sync.log
14.slave上/var/kerberos/krb5kdc/會(huì)多出一些文件
  • from_master
  • principal
  • pricipal.kadm5
  • principal.kadmin5.lock
  • principal.ok
15.啟動(dòng)slave kdc服務(wù)
$ sudo service krb5kdc start
$ sudo chkconfig --level 35 krb5kdc on

KDC測(cè)試主從

16.搭建客戶端
$ sudo yum install krb5-workstation krb5-libs krb5-auth-dialog
17.更新客戶端/etc/krb5.conf文件
  • 從第三臺(tái)服務(wù)器,使用kinit 獲取ticket拳话,正常情況下會(huì)從master上獲取先匪。
  • 關(guān)閉master上的kdc服務(wù)(sudo service krb5kdc stop)。
  • 再次從第三臺(tái)服務(wù)器上弃衍,使用kinit 獲取ticket呀非,如果成功,說(shuō)明生效镜盯“度梗可以觀察kdc的日志,在/var/log/krb5kdc.log

Kadmin切換:

先決條件
  • KDC配置為能夠用作主KDC或從KDC
如果主KDC仍在運(yùn)行速缆,在老的主KDC執(zhí)行以下操作:
  • 殺死kadmind進(jìn)程(ps -ef | grep kadmin | grep -v grep | awk '{print $2}' | xargs kill)降允。
  • 禁用同步數(shù)據(jù)庫(kù)的crontab作業(yè)。
  • 手動(dòng)運(yùn)行數(shù)據(jù)庫(kù)同步腳本艺糜,以確保從kdc都具有數(shù)據(jù)庫(kù)的最新副本剧董。
  • 注:必須手動(dòng)同步數(shù)據(jù)庫(kù)至從kdc,否則可能存在數(shù)據(jù)丟失(kerberos認(rèn)證時(shí)是按照/etc/krb5.conf中主機(jī)順序訪問(wèn)kdc服務(wù)器破停,kdc認(rèn)證只會(huì)讀取本地?cái)?shù)據(jù)庫(kù))翅楼。
在從KDC上執(zhí)行
  • 刪除/var/kerberos/krb5kdc/kpropd.acl。
  • 啟動(dòng)kadmind守護(hù)進(jìn)程(sudo service kadmin start)真慢。
  • 設(shè)置cron作業(yè)以傳播數(shù)據(jù)庫(kù)(將數(shù)據(jù)庫(kù)同步到每個(gè)從站KDC毅臊,需確保從KDC已啟動(dòng)kpropd進(jìn)程,以及存在/var/kerberos/krb5kdc/kpropd.acl文件)黑界。
  • 在Kerberos領(lǐng)域的每臺(tái)客戶端機(jī)器上更改krb5.conf文件中admin_server值管嬉。
在客戶端主機(jī)上:
  • 確保krb5.conf文件中admin_server值正確。
  • 登錄kadmin(kadmin -p admin/admin)
  • 驗(yàn)證kadmin功能是否正常园爷。

使用方法:

管理員用戶:
常用管理命令:
add_principal, addprinc, ank   - 添加用戶
    例: ank dengsc@HADOOP.COM
delete_principal, delprinc     - 刪除用戶
    例: delprinc dengsc@HADOOP.COM
change_password, cpw           - 修改用戶密碼
    例: cpw dengsc@HADOOP.COM
list_principals, listprincs, get_principals, getprincs   - 查看所有用戶
    例: listprincs
modify_principal, modprinc     - 修改票據(jù)屬性
    例: modprinc -maxrenewlife 1week dengsc@HADOOP.COM(修改票據(jù)可在一周內(nèi)renew)
get_principal, getprinc        - 查看票據(jù)信息
    例: getprinc dengsc@HADOOP.COM
ktadd, xst                     - 導(dǎo)出keytab文件
    例: xst -e aes128-cts-hmac-sha1-96:normal -k /home/dengsc/dengsc.keytab dengsc@HADOOP.COM
        -e 執(zhí)定加密方式
        -k 指定keytab文件名
        注:導(dǎo)出keytab文件時(shí)會(huì)重新生成密碼.
            kadmin.local模式下可添加參數(shù)‘-norandkey’,導(dǎo)出keytab文件時(shí)不重置密碼.
            egg: xst -norandkey -k /home/dengsc/dengsc.keytab
?                              - help
普通用戶:

常用命令:

kinit -kt dengsc.keytab dengsc@HADOOP.COM    - 通過(guò)keytab文件認(rèn)證,獲取用戶princpal
klist -e                                     - 查看當(dāng)前生效票據(jù)
    -e 顯示加密方式
    如果expired值與renew until值相同,則表示該principal的ticket 不是 renwable宠蚂。
kpasswd <username>                           - 修改密碼
kinit -R                                     - 刷新票據(jù)

問(wèn)題:

描述:RHEL 6.x主機(jī)執(zhí)行kinit -kt命令報(bào)如下錯(cuò)誤
[caijt@nfjd-jpush-portal-test01-248226 ~]$ kinit -kt caijt.keytab caijt
kinit: Bad encryption type while getting initial credentials
原因:
KDC服務(wù)器正在RHEL 7.x主機(jī)上運(yùn)行式撼,??RHEL 6.x該主機(jī)對(duì)keytab文件中的加密類型有不同的識(shí)別童社。
如<----行所示,兩種加密類型在RHEL 6.x和7.x系統(tǒng)中都有不同的名稱著隆。這使得KDC服務(wù)器在RHEL 6.x主機(jī)的kinit請(qǐng)求中無(wú)法識(shí)別這兩種加密類型.
RHEL 6x
[caijt@nfjd-jpush-portal-test01-248226 ~]$ klist -e -kt caijt.keytab 
Keytab name: FILE:caijt.keytab
KVNO Timestamp         Principal
---- ----------------- --------------------------------------------------------
3 07/06/17 16:48:20 caijt@HADOOP.COM (aes128-cts-hmac-sha1-96) 
3 07/06/17 16:48:20 caijt@HADOOP.COM (des3-cbc-sha1) 
3 07/06/17 16:48:20 caijt@HADOOP.COM (arcfour-hmac) 
3 07/06/17 16:48:20 caijt@HADOOP.COM (etype 26)  <----
3 07/06/17 16:48:20 caijt@HADOOP.COM (etype 25)  <----
3 07/06/17 16:48:20 caijt@HADOOP.COM (des-hmac-sha1) 
3 07/06/17 16:48:20 caijt@HADOOP.COM (des-cbc-md5) 

RHEL 7x
[dengsc@nfjd-hadoop-test01 bash_script]$ klist -e -kt caijt.keytab 
Keytab name: FILE:caijt.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
5 07/06/2017 16:54:15 caijt@HADOOP.COM (aes128-cts-hmac-sha1-96) 
5 07/06/2017 16:54:15 caijt@HADOOP.COM (des3-cbc-sha1) 
5 07/06/2017 16:54:15 caijt@HADOOP.COM (arcfour-hmac) 
5 07/06/2017 16:54:15 caijt@HADOOP.COM (camellia256-cts-cmac)   <----
5 07/06/2017 16:54:15 caijt@HADOOP.COM (camellia128-cts-cmac)   <----
5 07/06/2017 16:54:15 caijt@HADOOP.COM (des-hmac-sha1) 
5 07/06/2017 16:54:15 caijt@HADOOP.COM (des-cbc-md5) 
解決方案:
導(dǎo)出密碼時(shí)指定加密類型扰楼,跳過(guò)有差異的加密方法: xst -e "aes128-cts-hmac-sha1-96:normal" -k caijt.keytab caijt
[caijt@nfjd-jpush-portal-test01-248226 ~]$  klist -ekt caijt.keytab 
Keytab name: FILE:caijt.keytab
KVNO Timestamp         Principal
---- ----------------- --------------------------------------------------------
6 07/06/17 17:13:41 caijt@HADOOP.COM (aes128-cts-hmac-sha1-96)

參考:https://discuss.pivotal.io/hc/en-us/articles/214259328-kinit-on-RHEL-6-x-fails-with-keytab-file-generated-on-RHEL-7-x
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末呀癣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子弦赖,更是在濱河造成了極大的恐慌项栏,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹬竖,死亡現(xiàn)場(chǎng)離奇詭異沼沈,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)币厕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門列另,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人旦装,你說(shuō)我怎么就攤上這事页衙。” “怎么了阴绢?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵店乐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我呻袭,道長(zhǎng)眨八,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任棒妨,我火速辦了婚禮踪古,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘券腔。我一直安慰自己伏穆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布纷纫。 她就那樣靜靜地躺著枕扫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辱魁。 梳的紋絲不亂的頭發(fā)上烟瞧,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音染簇,去河邊找鬼参滴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛锻弓,可吹牛的內(nèi)容都是我干的砾赔。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼暴心!你這毒婦竟也來(lái)了妓盲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤专普,失蹤者是張志新(化名)和其女友劉穎悯衬,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體檀夹,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筋粗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了炸渡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亏狰。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖偶摔,靈堂內(nèi)的尸體忽然破棺而出暇唾,到底是詐尸還是另有隱情,我是刑警寧澤辰斋,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布策州,位于F島的核電站,受9級(jí)特大地震影響宫仗,放射性物質(zhì)發(fā)生泄漏够挂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一藕夫、第九天 我趴在偏房一處隱蔽的房頂上張望孽糖。 院中可真熱鬧,春花似錦毅贮、人聲如沸办悟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)病蛉。三九已至,卻和暖如春瑰煎,著一層夾襖步出監(jiān)牢的瞬間铺然,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工酒甸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留魄健,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓插勤,卻偏偏與公主長(zhǎng)得像沽瘦,于是被迫代替她去往敵國(guó)和親柬甥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理其垄,服務(wù)發(fā)現(xiàn),斷路器卤橄,智...
    卡卡羅2017閱讀 134,716評(píng)論 18 139
  • kdc的雙擊備份绿满,是為了避免某些原因?qū)е翶DC主機(jī)宕機(jī)后,集群都將無(wú)法正確得到認(rèn)證窟扑,從而正常訪問(wèn)集群喇颁。為了避免出現(xiàn)...
    凡爾Issac閱讀 5,003評(píng)論 0 0
  • 環(huán)境 操作系統(tǒng):CentOS-6.6-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6....
    思?jí)鬚HP閱讀 2,049評(píng)論 0 12
  • 1、復(fù)制概述: MySQL內(nèi)建的復(fù)制功能是構(gòu)建大型嚎货,高性能應(yīng)用程序的基礎(chǔ)橘霎。將mysql的數(shù)據(jù)分布到多個(gè)系統(tǒng)上去,這...
    魔法師_閱讀 5,614評(píng)論 0 5
  • 三年零一月殖属。 這么六個(gè)字是在一次很隨意的一次截屏中看到的五個(gè)字姐叁,當(dāng)時(shí)滿屏就只有這五個(gè)字,不知怎么的就入了心洗显,興許是...
    簡(jiǎn)小取閱讀 539評(píng)論 7 3