Kerberos高可用安裝
目錄
1、Kerberos安裝與配置
1.1安裝
1.1.1注意事項
·kerberos涉及到的主機必須時鐘同步!
·主機名hostname必須全為小寫!
·該安裝方案能夠解決了Kerberos單點故障問題,提供 KDC的高可用。
1.1.2Yum安裝
規劃的KDC服務主機為:krb1(主),krb2(備)[1]
其中在備節點安裝之前需要保證主節點已經安裝Kerberos,並且正常可用。
在規劃的主KDC服務上,執行:
# yum install -y krb5-server krb5-auth-dialog krb5-workstation krb5-devel krb5-libs
在備KDC服務上,執行:
#yum install -y krb5-server openldap-clients krb5-workstation krb5-libs
在其他主機(不包括備KDC主機)上執行
注:若之前使用原始碼編譯安裝過,須解除安裝
1.2配置
KDC伺服器涉及3個配置檔案
/var/kerberos/krb5kdc/kdc.conf
/var/kerberos/krb5kdc/kadm5.acl[3]
1.2.1/etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = TJ_DX.COM
kdc_timeout = 2500
max_retries = 3
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 10d
renew_lifetime = 10d
renewable = false
forwardable = false
[realms]
TJ_DX.COM = {
kdc = krb1
Kdc = krb2
admin_server = krb1
default_domain = TJ_DX.COM
}
[domain_realm]
.tj_dx.com = TJ_DX.COM
tj_dx.com = TJ_DX.COM
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
說明:
- [logging]:表示 server 端的日誌的列印位置
- [libdefaults]:每種連線的預設配置,需要注意以下幾個關鍵的小配置
- default_realm = TJ_DX.COM:設定 Kerberos 應用程式的預設領域。如果您有多個領域,只需向 [realms] 節新增其他的語句。其中紅色的TJ_DX.COM可以為任意名字,推薦為大寫
- ticket_lifetime: 憑證生效的時限,設定為7天。
- renew_lifetime: 憑證最長可以被延期的時限,一般為7天。當憑證過期之後,對安全認證的服務的後續訪問則會失敗。
- forwardable:是否允許轉發
- renewable:是否允許票據延遲
- [realms]:列舉使用的 realm域。
- kdc:代表要 kdc 的位置。格式是 機器:埠
- admin_server:代表 admin 的位置。格式是 機器:埠
注:配置中藍色的字型修改為KDC所在主機的hostname
- [domain_realm]:realm域和域名的對映。
- [kdc]:kdc的配置資訊
- profile:kdc的配置檔案路徑,預設值下若無檔案則需要建立。
1.2.2/var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
TJ_DX.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
supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal
max_life = 10d
max_renewable_life = 10d
}
說明:
- TJ_DX.COM : 是設定的 realms。名字隨意,推薦為大寫!,但須與/etc/krb5.conf保持一致。Kerberos 可以支援多個 realms,會增加複雜度。大小寫敏感。
- master_key_type:預設使用 aes256-cts。。
- acl_file:標註了 admin 的使用者許可權的檔案,若檔案不存在,需要使用者自己建立。
檔案格式是:Kerberos_principal permissions [target_principal] [restrictions]
- supported_enctypes:支援的編碼型別列表。
- admin_keytab:KDC 進行校驗的 keytab。
JAVA使用aes256-cts,需要將所有Kerberos涉及到的主機的$JAVA_HOME/jre/lib/security的兩個jar包進行替換。下面提供了兩個zip包,解壓後有對應的jar包
1.2.3/var/kerberos/krb5kdc/kadm5.acl
即/var/kerberos/krb5kdc/kdc.conf中[realms]的acl_file配置的檔案。內容為:
*/[email protected] TJ_DX.COM *
即:
其中TJ_DX.COM與/etc/krb5.conf對應
檔案的意義為給資料庫管理員新增ACL許可權,*代表全部
1.2.4建立kpropd.acl
備節點krb2建立kpropd.acl檔案並輸入內容:
vi /var/kerberos/krb5kdc/kpropd.acl
輸入:
1.2.5建立資料庫
# kdb5_util create -r TJ_DX.COM -s[4]
其中TJ_DX.COM與/etc/krb5.conf對應,且需要設定管理員密碼。[5]
該命令會在/var/kerberos/krb5kdc/建立principal 資料庫
如果遇到資料庫已經存在的提示,且需要重建資料庫時,可以把 /var/kerberos/krb5kdc/ 目錄下的 principal 的相關檔案都刪除掉。
1.2.6同步配置
將/etc/krb5.conf拷貝到叢集其他伺服器(備KDC單獨同步)
例:
# scp /etc/krb5.conf e3basexx:/etc/
其中e3basexx為hadoop叢集需要部署Kerberos的主機。
拷貝主KDC節點配置檔案至備KDC節點:
scp /etc/krb5.conf krb2:/etc/;
#注意,/etc/krb5.conf需要同步到所有的kerberos主機上
scp /etc/krb5.keytab krb2:/etc/krb5.keytab
scp /var/kerberos/krb5kdc/kdc.conf /var/kerberos/krb5kdc/kadm5.acl /var/kerberos/krb5kdc/.k5.TJ_DX.COM krb2:/var/kerberos/krb5kdc/;
1.2.7備份配置檔案(主備都需要)
因/var/kerberos/krb5kdc目錄下為kerberos的資料庫以及各個服務的principal等重要檔案,若不慎丟失,會造成嚴重的後果,所以需要使用cron定時任務備份krb5kdc目錄下的檔案。
在/var/kerberos/目錄下新建backup目錄用來存放備份的檔案。
mkdir /var/kerberos/backup
在/var/kerberos/目錄下新建backup_sh目錄用來存放執行備份指令碼和備份日誌。
mkdri /var/kerberos/backup_sh
建立定時任務,執行:
crontab -e
輸入:
將備份檔案產生的日誌重定向到backup.log檔案。
1.2.8生成principal
生成需要用到的principal
格式為:
host/[主KDC主機名]@[域名]
host/[備KDC主機名]@[域名]
在主KDC主機上執行:
2、啟動
2.1啟動服務
主KDC節點執行:
# service krb5kdc start
# service kadmin start
備KDC節點執行:
2.2同步資料庫(只在主節點)
在主節點同步資料庫
執行成功就會列印SUCCEEDED
#注意:kdc的資料庫沒有自動同步的命令,需要手動同步
設定一個cron作業,定時同步資料庫。
在/var/kerberos/下新建dump目錄,用來存放備份的資料庫。
mkdir /var/kerberos/dump
在/var/kerberos/下新建dump_sh目錄,用來存放執行備份的指令碼和日誌。
mkdir /var/kerberos/dump_sh
建立定時任務,執行:
crontab -e
輸入:
00 00 * * * sh /var/kerberos/dump_sh/dump.sh >> /var/kerberos/dump_sh/dump.log
將執行備份的日誌重定向到dump.log檔案。
2.3啟動備KDC服務
在備KDC節點執行:
#service krb5kdc start
3、驗證
root使用kadmin.local命令,kadmin.local可以直接進入並管理Kerberos資料庫,無需通過Kerberos認證。
3.1執行# kadmin.local:
輸入listprincs檢視已有使用者(principal):
kadmin.local: listprincs
3.2在kadmin.local的命令列中新增使用者principal:
- 輸入addprinc admin來新增principal,並設定密碼為111111
注:可以直接使用# kadmin.local 進入kadmin.local命令列,也可以直接使用# kadmin.local -q指定要執行的語句。例如kadmin.local -q "addprinc admin"。因為之前已經有該principal,所以給出了提示。
3.3在kerberos客戶端的admin使用者裡,執行
$ kinit admin
輸入密碼後回車,若無任何提示表示認證成功
再執行# klist -e
此時可以看到,qinrc使用者已經進行了認證,其中:
Tichet cache:ticket快取存到了/tmp/krb5cc_0
Default principal:認證的使用者
valid starting:認證開始時間
Expires:ticket生命節日日期
Service principal:服務對應的principal
renew until:ticket可以通過kinit -R進行延期的截止日期。
Etype:session key的編碼型別
此時可以驗證為Kerberos安裝成功。
3.4驗證高可用
在krb1、krb2中執行
service krb5kdc status
看到如下則說明KDC服務正常。
正常情況下kinit成功:
kill 掉主KDC
再次驗證,若能正常執行kinit 和klist 命令,則高可用驗證成功。
[1]主機名可換
[2]批量操作
需要root許可權。
[4]加上 –s儲存檔案,同步資料庫用
[5]記錄備份
[6]定時時間可調大
[7]預設埠754,預設不以獨立模式執行
[8]轉儲至該檔案
[9]將轉儲檔案傳播到從kdc