1. 程式人生 > >Kerberos高可用安裝

Kerberos高可用安裝

目錄

1.1安裝

1.2配置

2、啟動

3、驗證

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

說明:

  1. [logging]:表示 server 端的日誌的列印位置
  2. [libdefaults]:每種連線的預設配置,需要注意以下幾個關鍵的小配置
    1. default_realm = TJ_DX.COM:設定 Kerberos 應用程式的預設領域。如果您有多個領域,只需向 [realms] 節新增其他的語句。其中紅色的TJ_DX.COM可以為任意名字,推薦為大寫
    2. ticket_lifetime: 憑證生效的時限,設定為7天。
    3. renew_lifetime: 憑證最長可以被延期的時限,一般為7天。當憑證過期之後,對安全認證的服務的後續訪問則會失敗。
    4. forwardable:是否允許轉發
    5. renewable:是否允許票據延遲
  3. [realms]:列舉使用的 realm域。
    1. kdc:代表要 kdc 的位置。格式是 機器:埠
    2. admin_server:代表 admin 的位置。格式是 機器:埠

注:配置中藍色的字型修改為KDC所在主機的hostname

  1. [domain_realm]:realm域和域名的對映。
  2. [kdc]:kdc的配置資訊
    1. 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

}

說明:

  1. TJ_DX.COM : 是設定的 realms。名字隨意,推薦為大寫!,但須與/etc/krb5.conf保持一致。Kerberos 可以支援多個 realms,會增加複雜度。大小寫敏感。
  2. master_key_type:預設使用 aes256-cts。。
  3. acl_file:標註了 admin 的使用者許可權的檔案,若檔案不存在,需要使用者自己建立。

檔案格式是:Kerberos_principal permissions [target_principal] [restrictions]

  1. supported_enctypes:支援的編碼型別列表。
  2. 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

  1. 輸入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