安裝與配置kerberos

一、環境說明

系統說明:html

  • 操做系統:centos 6.6
  • Hadoop版本:CDH 5.5
  • JDK版本: 1.7.0_67

kerberos安裝的組件分配:java

74做爲master節點,其餘節點做爲slave節點。咱們在74節點安裝kerberos Server,在其餘節點安裝kerberos client.web

二、安裝和配置kerberos

2.1安裝kerberos

在74上安裝包 krb五、krb5-server 和 krb5-client。算法

# yum install krb5-server -y

在其餘節點(7四、7五、7六、77)安裝 krb5-devel、krb5-workstation:數據庫

# yum install krb5-devel krb5-workstation -y

2.2修改配置文件

kdc 服務器涉及到三個配置文件:centos

/etc/krb5.conf
/var/kerberos/krb5kdc/kdc.conf
/var/kerberos/krb5kdc/kadm5.acl

配置 Kerberos 的一種方法是編輯配置文件 /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 = BIGDATA.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 clockskew = 120
 udp_preference_limit = 1

[realms]
 BIGDATA.COM = {
  kdc = bd-ops-test-74
  admin_server = bd-ops-test-74
 }

[domain_realm]
 .bigdata.com = BIGDATA.COM
 bigdata.com = BIGDATA.COM

說明:bash

  • [logging]:表示 server 端的日誌的打印位置
  • [libdefaults]:每種鏈接的默認配置,須要注意如下幾個關鍵的小配置
    • default_realm = BIGDATA.COM:設置 Kerberos 應用程序的默認領域。若是您有多個領域,只需向 [realms] 節添加其餘的語句。
    • ticket_lifetime: 代表憑證生效的時限,通常爲24小時。
    • renew_lifetime: 代表憑證最長能夠被延期的時限,通常爲一個禮拜。當憑證過時以後,對安全認證的服務的後續訪問則會失敗。
    • clockskew:時鐘誤差是不徹底符合主機系統時鐘的票據時戳的容差,超過此容差將不接受此票據。一般,將時鐘扭斜設置爲 300 秒(5 分鐘)。這意味着從服務器的角度看,票證的時間戳與它的誤差能夠是在先後 5 分鐘內。
    • udp_preference_limit= 1:禁止使用 udp 能夠防止一個 Hadoop 中的錯誤
  • [realms]:列舉使用的 realm。
    • kdc:表明要 kdc 的位置。格式是 機器:端口
    • admin_server:表明 admin 的位置。格式是 機器:端口
  • [default_domain]:表明默認的域名
  • [appdefaults]:能夠設定一些針對特定應用的配置,覆蓋默認配置。

修改 /var/kerberos/krb5kdc/kdc.conf ,該文件包含 Kerberos 的配置信息。例如,KDC 的位置,Kerbero 的 admin 的realms 等。須要全部使用的 Kerberos 的機器上的配置文件都同步。這裏僅列舉須要的基本配置。詳細介紹參考:krb5conf服務器

[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88

[realms]
 BIGDATA.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 des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
  default_principal_flags = +renewable, +forwardable
  max_renewable_life = 10d
 }

說明:oracle

  • BIGDATA.COM: 是設定的 realms。名字隨意。Kerberos 能夠支持多個 realms,會增長複雜度。大小寫敏感,通常爲了識別使用所有大寫。這個 realms 跟機器的 host 沒有大關係。
  • master_key_type:和 supported_enctypes 默認使用 aes256-cts。JAVA 使用 aes256-cts 驗證方式須要安裝 JCE 包,見下面的說明。爲了簡便,你能夠不使用 aes256-cts 算法,這樣就不須要安裝 JCE 。
  • acl_file:標註了 admin 的用戶權限,須要用戶本身建立。文件格式是:Kerberos_principal permissions [target_principal] [restrictions]
  • supported_enctypes:支持的校驗方式。
  • admin_keytab:KDC 進行校驗的 keytab。

關於AES-256加密

對於使用 centos5. 6 及以上的系統,默認使用 AES-256 來加密的。這就須要集羣中的全部節點上安裝 JCE,若是你使用的是 JDK1.6 ,則到 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for JDK/JRE 6 頁面下載,若是是 JDK1.7,則到 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for JDK/JRE 7 下載。

下載的文件是一個 zip 包,解開後,將裏面的兩個文件放到下面的目錄中:$JAVA_HOME/jre/lib/security

爲了可以不直接訪問 KDC 控制檯而從 Kerberos 數據庫添加和刪除主體,請對 Kerberos 管理服務器指示容許哪些主體執行哪些操做。經過編輯文件 /var/lib/kerberos/krb5kdc/kadm5.acl 完成此操做。ACL(訪問控制列表)容許您精確指定特權。

#cat kadm5.acl 
*/admin@BIGDATA.COM	*

2.3同步配置文件

將 kdc 中的 /etc/krb5.conf 拷貝到集羣中其餘服務器便可。

# scp /etc/krb5.conf bd-ops-test-75:/etc/krb5.conf
# scp /etc/krb5.conf bd-ops-test-76:/etc/krb5.conf
# scp /etc/krb5.conf bd-ops-test-77:/etc/krb5.conf

2.4建立數據庫

在 bd-ops-test-74 上運行初始化數據庫命令。其中 -r 指定對應 realm。

# kdb5_util create -r BIGDATA.COM -s

出現 Loading random data 的時候另開個終端執行點消耗CPU的命令如 cat /dev/sda > /dev/urandom 能夠加快隨機數採集。該命令會在 /var/kerberos/krb5kdc/ 目錄下建立 principal 數據庫。

若是遇到數據庫已經存在的提示,能夠把 /var/kerberos/krb5kdc/ 目錄下的 principal 的相關文件都刪除掉。默認的數據庫名字都是 principal。能夠使用 -d 指定數據庫名字。

2.5啓動服務

在74節點上運行:

# chkconfig --level 35 krb5kdc on
# chkconfig --level 35 kadmin on
# service krb5kdc start
# service kadmin start

2.6建立kerberos管理員

關於 kerberos 的管理,能夠使用 kadmin.localkadmin,至於使用哪一個,取決於帳戶和訪問權限:

  • 若是有訪問 kdc 服務器的 root 權限,可是沒有 kerberos admin 帳戶,使用 kadmin.local
  • 若是沒有訪問 kdc 服務器的 root 權限,可是用 kerberos admin 帳戶,使用 kadmin

在 74 上建立遠程管理的管理員:

#手動輸入兩次密碼,這裏密碼爲 bigdata
# kadmin.local -q "addprinc root/admin"

密碼務必記住,妥善保存。

2.7 kerberos基本操做

查看當前的認證用戶:

# 查看principals
$ kadmin: list_principals

  # 添加一個新的 principal
  kadmin:  addprinc user1
    WARNING: no policy specified for user1@BIGDATA.COM; defaulting to no policy
    Enter password for principal "user1@BIGDATA.COM":
    Re-enter password for principal "user1@BIGDATA.COM":
    Principal "user1@BIGDATA.COM" created.

  # 刪除 principal
  kadmin:  delprinc user1
    Are you sure you want to delete the principal "user1@BIGDATA.COM"? (yes/no): yes
    Principal "user1@BIGDATA.COM" deleted.
    Make sure that you have removed this principal from all ACLs before reusing.

  kadmin: exit

也能夠直接經過下面的命令來執行:

# 提示須要輸入密碼
$ kadmin -p root/admin -q "list_principals"
$ kadmin -p root/admin -q "addprinc user2"
$ kadmin -p root/admin -q "delprinc user2"

# 不用輸入密碼
$ kadmin.local -q "list_principals"
$ kadmin.local -q "addprinc user2"
$ kadmin.local -q "delprinc user2"

建立一個測試用戶 test,密碼設置爲 test:

# echo -e "test\ntest" | kadmin.local -q "addprinc test"

獲取 test 用戶的 ticket:

#kinit test
Password for test@BIGDATA.COM: 

#klist -e
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: test@BIGDATA.COM

Valid starting     Expires            Service principal
09/02/16 16:43:50  09/03/16 16:43:50  krbtgt/BIGDATA.COM@BIGDATA.COM
	renew until 09/02/16 16:43:50, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96

銷燬該 test 用戶的 ticket:

#kdestroy 
#klist 
klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_0)

更新 ticket:

# kinit -R

查看keytab文件詳情:

klist -k /etc/krb5.keytab
  Keytab name: FILE:/etc/krb5.keytab
  KVNO Principal
  ---- --------------------------------------------------------------------------
     3 kadmin/admin@LASHOU-INC.COM
     3 kadmin/admin@LASHOU-INC.COM
     3 kadmin/admin@LASHOU-INC.COM
     3 kadmin/admin@LASHOU-INC.COM
     3 kadmin/admin@LASHOU-INC.COM
相關文章
相關標籤/搜索